diff options
Diffstat (limited to 'runtime/instrumentation.cc')
-rw-r--r-- | runtime/instrumentation.cc | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/runtime/instrumentation.cc b/runtime/instrumentation.cc index 7e2a84df2c..deada4c5dc 100644 --- a/runtime/instrumentation.cc +++ b/runtime/instrumentation.cc @@ -297,6 +297,11 @@ static void InstrumentationInstallStack(Thread* thread, void* arg) thread->VerifyStack(); } +void Instrumentation::InstrumentThreadStack(Thread* thread) { + instrumentation_stubs_installed_ = true; + InstrumentationInstallStack(thread, this); +} + // Removes the instrumentation exit pc as the return PC for every quick frame. static void InstrumentationRestoreStack(Thread* thread, void* arg) SHARED_REQUIRES(Locks::mutator_lock_) { @@ -1001,7 +1006,8 @@ TwoWordReturn Instrumentation::PopInstrumentationStackFrame(Thread* self, uintpt ArtMethod* method = instrumentation_frame.method_; uint32_t length; - char return_shorty = method->GetShorty(&length)[0]; + const size_t pointer_size = Runtime::Current()->GetClassLinker()->GetImagePointerSize(); + char return_shorty = method->GetInterfaceMethodIfProxy(pointer_size)->GetShorty(&length)[0]; JValue return_value; if (return_shorty == 'V') { return_value.SetJ(0); |