Add code size to CodeInfo.
This is in preparation of removing it from OatQuickMethodHeader.
Bug: 123510633
Test: m test-art-host-gtest
Test: ./art/test.py -b -r --host
Change-Id: I5c5adb4c040e329b81c1393aa1b80ee017729c8a
diff --git a/runtime/stack_map.h b/runtime/stack_map.h
index 0d289b8..e8e57aa 100644
--- a/runtime/stack_map.h
+++ b/runtime/stack_map.h
@@ -299,6 +299,7 @@
static QuickMethodFrameInfo DecodeFrameInfo(const uint8_t* data);
static CodeInfo DecodeGcMasksOnly(const OatQuickMethodHeader* header);
static CodeInfo DecodeInlineInfoOnly(const OatQuickMethodHeader* header);
+ static uint32_t DecodeCodeSize(const OatQuickMethodHeader* header);
ALWAYS_INLINE const BitTable<StackMap>& GetStackMaps() const {
return stack_maps_;
@@ -447,6 +448,7 @@
ALWAYS_INLINE static void ForEachHeaderField(Callback callback) {
size_t index = 0;
callback(index++, &CodeInfo::flags_);
+ callback(index++, &CodeInfo::code_size_);
callback(index++, &CodeInfo::packed_frame_size_);
callback(index++, &CodeInfo::core_spill_mask_);
callback(index++, &CodeInfo::fp_spill_mask_);
@@ -480,8 +482,9 @@
};
// The CodeInfo starts with sequence of variable-length bit-encoded integers.
- static constexpr size_t kNumHeaders = 6;
- uint32_t flags_ = 0;
+ static constexpr size_t kNumHeaders = 7;
+ uint32_t flags_ = 0; // Note that the space is limited to three bits.
+ uint32_t code_size_ = 0; // The size of native PC range in bytes.
uint32_t packed_frame_size_ = 0; // Frame size in kStackAlignment units.
uint32_t core_spill_mask_ = 0;
uint32_t fp_spill_mask_ = 0;