summaryrefslogtreecommitdiff
path: root/runtime/stack.h
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/stack.h')
-rw-r--r--runtime/stack.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/runtime/stack.h b/runtime/stack.h
index ff80d132f2..aa741dfe81 100644
--- a/runtime/stack.h
+++ b/runtime/stack.h
@@ -339,6 +339,9 @@ class StackVisitor {
void SanityCheckFrame() const REQUIRES_SHARED(Locks::mutator_lock_);
+ ALWAYS_INLINE CodeInfo* GetCurrentInlineInfo() const;
+ ALWAYS_INLINE StackMap* GetCurrentStackMap() const;
+
Thread* const thread_;
const StackWalkKind walk_kind_;
ShadowFrame* cur_shadow_frame_;
@@ -351,9 +354,14 @@ class StackVisitor {
size_t cur_depth_;
// Current inlined frames of the method we are currently at.
// We keep poping frames from the end as we visit the frames.
- CodeInfo current_code_info_;
BitTableRange<InlineInfo> current_inline_frames_;
+ // Cache the most recently decoded inline info data.
+ // The 'current_inline_frames_' refers to this data, so we need to keep it alive anyway.
+ // Marked mutable since the cache fields are updated from const getters.
+ mutable std::pair<const OatQuickMethodHeader*, CodeInfo> cur_inline_info_;
+ mutable std::pair<uintptr_t, StackMap> cur_stack_map_;
+
protected:
Context* const context_;
const bool check_suspended_;