diff options
Diffstat (limited to 'compiler/optimizing/intrinsics_utils.h')
-rw-r--r-- | compiler/optimizing/intrinsics_utils.h | 7 |
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); } |