diff options
| author | 2018-10-17 15:15:19 +0100 | |
|---|---|---|
| committer | 2018-10-18 14:48:46 +0100 | |
| commit | 6c444480dc55d4d0e3a99e441ce0804663bf05b4 (patch) | |
| tree | 8c325d51710b558bd03c8f73434ffd46e787cdf4 | |
| parent | f1d0b729552b22c9a36184bd497c0816dcf8ba63 (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.h | 9 |
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(); } } |