summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author David Srbecky <dsrbecky@google.com> 2018-10-17 15:15:19 +0100
committer David Srbecky <dsrbecky@google.com> 2018-10-18 14:48:46 +0100
commit6c444480dc55d4d0e3a99e441ce0804663bf05b4 (patch)
tree8c325d51710b558bd03c8f73434ffd46e787cdf4
parentf1d0b729552b22c9a36184bd497c0816dcf8ba63 (diff)
Count transitions from interpreter to intrinsic.
Remove the special cases for intrinsic, and copy the needed counting from the slow path to the fast path as well. Test: test.py -b -r --host -t 638 Change-Id: I68a867c0b84234ed79bd32de29238e65f5ffa200
-rw-r--r--runtime/interpreter/interpreter_common.h9
1 files changed, 5 insertions, 4 deletions
diff --git a/runtime/interpreter/interpreter_common.h b/runtime/interpreter/interpreter_common.h
index 3c5abe124e..26bfba9ffc 100644
--- a/runtime/interpreter/interpreter_common.h
+++ b/runtime/interpreter/interpreter_common.h
@@ -182,11 +182,12 @@ static ALWAYS_INLINE bool DoInvoke(Thread* self,
}
if (is_mterp && !is_range && called_method->IsIntrinsic()) {
- if (type == kDirect || type == kStatic || type == kVirtual) {
- if (MterpHandleIntrinsic(&shadow_frame, called_method, inst, inst_data,
- shadow_frame.GetResultRegister())) {
- return !self->IsExceptionPending();
+ if (MterpHandleIntrinsic(&shadow_frame, called_method, inst, inst_data,
+ shadow_frame.GetResultRegister())) {
+ if (jit != nullptr && sf_method != nullptr) {
+ jit->NotifyInterpreterToCompiledCodeTransition(self, sf_method);
}
+ return !self->IsExceptionPending();
}
}