Index: runtime/vm/raw_object.h |
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h |
index 217f30f4bf54851e7e75a45ce60e0de3add2c71d..d43424ef5d2e9cec7446ef1a4d2c9cb69bf7d763 100644 |
--- a/runtime/vm/raw_object.h |
+++ b/runtime/vm/raw_object.h |
@@ -31,6 +31,7 @@ namespace dart { |
V(Namespace) \ |
V(Code) \ |
V(Instructions) \ |
+ V(ObjectPool) \ |
V(PcDescriptors) \ |
V(Stackmap) \ |
V(LocalVarDescriptors) \ |
@@ -991,6 +992,28 @@ class RawCode : public RawObject { |
}; |
+class RawObjectPool : public RawObject { |
+ RAW_HEAP_OBJECT_IMPLEMENTATION(ObjectPool); |
+ |
+ intptr_t length_; |
+ intptr_t num_tagged_entries_; |
+ |
+ struct Entry { |
+ union { |
+ RawObject* raw_obj_; |
+ uword raw_value_; |
+ }; |
+ }; |
+ Entry* data() { OPEN_ARRAY_START(Entry, Entry); } |
+ Entry const* data() const { OPEN_ARRAY_START(Entry, Entry); } |
+ |
+ Entry* from(); |
+ Entry* to(); |
+ |
+ friend class Object; |
+}; |
+ |
+ |
class RawInstructions : public RawObject { |
RAW_HEAP_OBJECT_IMPLEMENTATION(Instructions); |
@@ -998,7 +1021,7 @@ class RawInstructions : public RawObject { |
return reinterpret_cast<RawObject**>(&ptr()->code_); |
} |
RawCode* code_; |
- RawArray* object_pool_; |
+ RawObjectPool* object_pool_; |
RawObject** to() { |
return reinterpret_cast<RawObject**>(&ptr()->object_pool_); |
} |
@@ -2098,6 +2121,7 @@ inline bool RawObject::IsVariableSizeClassId(intptr_t index) { |
(index == kContextCid) || |
(index == kTypeArgumentsCid) || |
(index == kInstructionsCid) || |
+ (index == kObjectPoolCid) || |
(index == kPcDescriptorsCid) || |
(index == kStackmapCid) || |
(index == kLocalVarDescriptorsCid) || |