diff options
Diffstat (limited to 'runtime/stack.h')
| -rw-r--r-- | runtime/stack.h | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/runtime/stack.h b/runtime/stack.h index 963983a7a6..2e32f51343 100644 --- a/runtime/stack.h +++ b/runtime/stack.h @@ -306,6 +306,11 @@ class ShadowFrame { return method_; } + mirror::ArtMethod** GetMethodAddress() SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) { + DCHECK(method_ != nullptr); + return &method_; + } + mirror::Object* GetThisObject() const SHARED_LOCKS_REQUIRED(Locks::mutator_lock_); mirror::Object* GetThisObject(uint16_t num_ins) const SHARED_LOCKS_REQUIRED(Locks::mutator_lock_); @@ -389,12 +394,7 @@ class ShadowFrame { #endif // Link to previous shadow frame or NULL. ShadowFrame* link_; -#if defined(ART_USE_PORTABLE_COMPILER) - // TODO: make const in the portable case. mirror::ArtMethod* method_; -#else - mirror::ArtMethod* const method_; -#endif uint32_t dex_pc_; uint32_t vregs_[0]; @@ -518,6 +518,16 @@ class StackVisitor { } } + mirror::ArtMethod** GetMethodAddress() const SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) { + if (cur_shadow_frame_ != nullptr) { + return cur_shadow_frame_->GetMethodAddress(); + } else if (cur_quick_frame_ != nullptr) { + return cur_quick_frame_; + } else { + return nullptr; + } + } + bool IsShadowFrame() const { return cur_shadow_frame_ != nullptr; } |