summaryrefslogtreecommitdiff
path: root/runtime/stack_map.h
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/stack_map.h')
-rw-r--r--runtime/stack_map.h9
1 files changed, 5 insertions, 4 deletions
diff --git a/runtime/stack_map.h b/runtime/stack_map.h
index 8bfae7c39f..0b1c4f9c63 100644
--- a/runtime/stack_map.h
+++ b/runtime/stack_map.h
@@ -416,10 +416,11 @@ class CodeInfo {
void AddSizeStats(/*out*/ Stats* parent) const;
ALWAYS_INLINE static QuickMethodFrameInfo DecodeFrameInfo(const uint8_t* data) {
+ BitMemoryReader reader(data);
return QuickMethodFrameInfo(
- DecodeUnsignedLeb128(&data),
- DecodeUnsignedLeb128(&data),
- DecodeUnsignedLeb128(&data));
+ DecodeVarintBits(reader) * kStackAlignment, // Decode packed_frame_size_ and unpack.
+ DecodeVarintBits(reader), // core_spill_mask_.
+ DecodeVarintBits(reader)); // fp_spill_mask_.
}
typedef std::map<BitMemoryRegion, uint32_t, BitMemoryRegion::Less> DedupeMap;
@@ -444,7 +445,7 @@ class CodeInfo {
void Decode(const uint8_t* data, DecodeFlags flags);
- uint32_t frame_size_in_bytes_;
+ uint32_t packed_frame_size_; // Frame size in kStackAlignment units.
uint32_t core_spill_mask_;
uint32_t fp_spill_mask_;
uint32_t number_of_dex_registers_;