summaryrefslogtreecommitdiffstats
path: root/runtime/instrumentation.cc
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/instrumentation.cc')
-rw-r--r--runtime/instrumentation.cc8
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);