diff options
Diffstat (limited to 'runtime/stack_map.h')
-rw-r--r-- | runtime/stack_map.h | 9 |
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_; |