summaryrefslogtreecommitdiff
path: root/compiler/optimizing/stack_map_stream.cc
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/optimizing/stack_map_stream.cc')
-rw-r--r--compiler/optimizing/stack_map_stream.cc20
1 files changed, 13 insertions, 7 deletions
diff --git a/compiler/optimizing/stack_map_stream.cc b/compiler/optimizing/stack_map_stream.cc
index da6c711659..e1b657554f 100644
--- a/compiler/optimizing/stack_map_stream.cc
+++ b/compiler/optimizing/stack_map_stream.cc
@@ -292,6 +292,12 @@ void StackMapStream::FillInMethodInfo(MemoryRegion region) {
}
}
+template<typename Writer, typename Builder>
+ALWAYS_INLINE static void EncodeTable(Writer& out, const Builder& bit_table) {
+ out.WriteBit(false); // Is not deduped.
+ bit_table.Encode(out);
+}
+
size_t StackMapStream::PrepareForFillIn() {
DCHECK_EQ(out_.size(), 0u);
@@ -309,13 +315,13 @@ size_t StackMapStream::PrepareForFillIn() {
EncodeUnsignedLeb128(&out_, fp_spill_mask_);
EncodeUnsignedLeb128(&out_, num_dex_registers_);
BitMemoryWriter<ScopedArenaVector<uint8_t>> out(&out_, out_.size() * kBitsPerByte);
- stack_maps_.Encode(out);
- inline_infos_.Encode(out);
- register_masks_.Encode(out);
- stack_masks_.Encode(out);
- dex_register_masks_.Encode(out);
- dex_register_maps_.Encode(out);
- dex_register_catalog_.Encode(out);
+ EncodeTable(out, stack_maps_);
+ EncodeTable(out, inline_infos_);
+ EncodeTable(out, register_masks_);
+ EncodeTable(out, stack_masks_);
+ EncodeTable(out, dex_register_masks_);
+ EncodeTable(out, dex_register_maps_);
+ EncodeTable(out, dex_register_catalog_);
return out_.size();
}