diff options
author | David Srbecky <dsrbecky@google.com> | 2016-02-25 21:55:03 +0000 |
---|---|---|
committer | David Srbecky <dsrbecky@google.com> | 2016-04-01 17:01:55 +0100 |
commit | 61b28a17d9b6e8e998103646e98e4a9772e11927 (patch) | |
tree | 438c4a73f72423ddc71e6dca9f082d9e1d533996 /compiler/optimizing/stack_map_stream.h | |
parent | cf0f8560f41467331427418584687830932e66ed (diff) |
Use bit-level packing for InlineInfo in stackmaps as well.
Use the same approach as we do for stackmaps to reduce the size.
It saves 4.0 MB from non-debuggable boot.oat (AOSP).
It does not affect debuggable boot.oat.
It saves 3.6 MB (of 96.6 MB) from /system/framework/arm/ (GOOG).
It saves 0.6 MB (of 26.7 MB) from /system/framework/oat/arm/ (GOOG).
Field loads from inline-info get around 5% slower.
(based on the time it takes to load all inline-infos from boot.oat)
Change-Id: I67b0fa5eef74c1fdb013680d0231fd44ea696176
Diffstat (limited to 'compiler/optimizing/stack_map_stream.h')
-rw-r--r-- | compiler/optimizing/stack_map_stream.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/compiler/optimizing/stack_map_stream.h b/compiler/optimizing/stack_map_stream.h index b686748802..41f72f508b 100644 --- a/compiler/optimizing/stack_map_stream.h +++ b/compiler/optimizing/stack_map_stream.h @@ -156,7 +156,7 @@ class StackMapStream : public ValueObject { size_t ComputeDexRegisterMapSize(uint32_t num_dex_registers, const BitVector* live_dex_registers_mask) const; size_t ComputeDexRegisterMapsSize() const; - size_t ComputeInlineInfoSize() const; + void ComputeInlineInfoEncoding(); // Returns the index of an entry with the same dex register map as the current_entry, // or kNoSameDexMapFound if no such entry exists. @@ -200,6 +200,7 @@ class StackMapStream : public ValueObject { StackMapEntry current_entry_; InlineInfoEntry current_inline_info_; StackMapEncoding stack_map_encoding_; + InlineInfoEncoding inline_info_encoding_; ArenaVector<uint8_t> code_info_encoding_; size_t inline_info_size_; size_t dex_register_maps_size_; |