summaryrefslogtreecommitdiff
path: root/compiler/optimizing/stack_map_stream.h
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/optimizing/stack_map_stream.h')
-rw-r--r--compiler/optimizing/stack_map_stream.h24
1 files changed, 19 insertions, 5 deletions
diff --git a/compiler/optimizing/stack_map_stream.h b/compiler/optimizing/stack_map_stream.h
index 20dd32e308..33c624a36c 100644
--- a/compiler/optimizing/stack_map_stream.h
+++ b/compiler/optimizing/stack_map_stream.h
@@ -40,10 +40,10 @@ class StackMapStream : public DeletableArenaObject<kArenaAllocStackMapStream> {
: allocator_(allocator),
instruction_set_(instruction_set),
stack_maps_(allocator),
- inline_infos_(allocator),
- method_infos_(allocator),
register_masks_(allocator),
stack_masks_(allocator),
+ inline_infos_(allocator),
+ method_infos_(allocator),
dex_register_masks_(allocator),
dex_register_maps_(allocator),
dex_register_catalog_(allocator),
@@ -97,18 +97,32 @@ class StackMapStream : public DeletableArenaObject<kArenaAllocStackMapStream> {
void CreateDexRegisterMap();
+ // Invokes the callback with pointer of each BitTableBuilder field.
+ template<typename Callback>
+ void ForEachBitTable(Callback callback) {
+ size_t index = 0;
+ callback(index++, &stack_maps_);
+ callback(index++, &register_masks_);
+ callback(index++, &stack_masks_);
+ callback(index++, &inline_infos_);
+ callback(index++, &method_infos_);
+ callback(index++, &dex_register_masks_);
+ callback(index++, &dex_register_maps_);
+ callback(index++, &dex_register_catalog_);
+ CHECK_EQ(index, CodeInfo::kNumBitTables);
+ }
+
ScopedArenaAllocator* allocator_;
const InstructionSet instruction_set_;
- uint32_t flags_ = 0;
uint32_t packed_frame_size_ = 0;
uint32_t core_spill_mask_ = 0;
uint32_t fp_spill_mask_ = 0;
uint32_t num_dex_registers_ = 0;
BitTableBuilder<StackMap> stack_maps_;
- BitTableBuilder<InlineInfo> inline_infos_;
- BitTableBuilder<MethodInfo> method_infos_;
BitTableBuilder<RegisterMask> register_masks_;
BitmapTableBuilder stack_masks_;
+ BitTableBuilder<InlineInfo> inline_infos_;
+ BitTableBuilder<MethodInfo> method_infos_;
BitmapTableBuilder dex_register_masks_;
BitTableBuilder<DexRegisterMapInfo> dex_register_maps_;
BitTableBuilder<DexRegisterInfo> dex_register_catalog_;