diff options
author | Andreas Gampe <agampe@google.com> | 2014-03-10 13:37:40 -0700 |
---|---|---|
committer | Andreas Gampe <agampe@google.com> | 2014-03-12 15:16:12 -0700 |
commit | 36fea8dd490ab6439f391b8cd7f366c59f026fd2 (patch) | |
tree | 6720290f54717f7cee1116103cd1839147936146 /runtime/stack.cc | |
parent | 63dcdff34c40a64df6939ea5bba71813abd2acd3 (diff) | |
download | android_art-36fea8dd490ab6439f391b8cd7f366c59f026fd2.tar.gz android_art-36fea8dd490ab6439f391b8cd7f366c59f026fd2.tar.bz2 android_art-36fea8dd490ab6439f391b8cd7f366c59f026fd2.zip |
Fixing structure of native frame for Generic JNI
This changes the layout of the callee-save frame used in generic
JNI to be consistent with the JNI compiler, that is, the SIRT is
inline (above the method reference). Now the location of the
"this" object is consistent.
Change-Id: Ibad0882680712cb640b4c70ada0229ef7cf4e62c
Diffstat (limited to 'runtime/stack.cc')
-rw-r--r-- | runtime/stack.cc | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/runtime/stack.cc b/runtime/stack.cc index 15b288e58d..26b4de3f1c 100644 --- a/runtime/stack.cc +++ b/runtime/stack.cc @@ -108,17 +108,11 @@ mirror::Object* StackVisitor::GetThisObject() const { return NULL; } else if (m->IsNative()) { if (cur_quick_frame_ != NULL) { - if (m->GetEntryPointFromQuickCompiledCode() == GetQuickGenericJniTrampoline()) { - UNIMPLEMENTED(ERROR) << "Failed to determine this object of native method: " - << PrettyMethod(m); - return nullptr; - } else { - StackIndirectReferenceTable* sirt = - reinterpret_cast<StackIndirectReferenceTable*>( - reinterpret_cast<char*>(cur_quick_frame_) + - m->GetSirtOffsetInBytes()); - return sirt->GetReference(0); - } + StackIndirectReferenceTable* sirt = + reinterpret_cast<StackIndirectReferenceTable*>( + reinterpret_cast<char*>(cur_quick_frame_) + + m->GetSirtOffsetInBytes()); + return sirt->GetReference(0); } else { return cur_shadow_frame_->GetVRegReference(0); } |