summaryrefslogtreecommitdiff
path: root/compiler/optimizing/intrinsics_utils.h
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/optimizing/intrinsics_utils.h')
-rw-r--r--compiler/optimizing/intrinsics_utils.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/compiler/optimizing/intrinsics_utils.h b/compiler/optimizing/intrinsics_utils.h
index e24d541c96..29f815c1be 100644
--- a/compiler/optimizing/intrinsics_utils.h
+++ b/compiler/optimizing/intrinsics_utils.h
@@ -59,7 +59,12 @@ class IntrinsicSlowPath : public TSlowPathCode {
Location method_loc = MoveArguments(codegen);
if (invoke_->IsInvokeStaticOrDirect()) {
- codegen->GenerateStaticOrDirectCall(invoke_->AsInvokeStaticOrDirect(), method_loc, this);
+ HInvokeStaticOrDirect* invoke_static_or_direct = invoke_->AsInvokeStaticOrDirect();
+ DCHECK_NE(invoke_static_or_direct->GetMethodLoadKind(),
+ HInvokeStaticOrDirect::MethodLoadKind::kRecursive);
+ DCHECK_NE(invoke_static_or_direct->GetCodePtrLocation(),
+ HInvokeStaticOrDirect::CodePtrLocation::kCallCriticalNative);
+ codegen->GenerateStaticOrDirectCall(invoke_static_or_direct, method_loc, this);
} else {
codegen->GenerateVirtualCall(invoke_->AsInvokeVirtual(), method_loc, this);
}