| Index: runtime/vm/raw_object.cc
|
| diff --git a/runtime/vm/raw_object.cc b/runtime/vm/raw_object.cc
|
| index 04378e71a9bef9fdda6a42bda2119b5fb7c44436..31545928ce9ed1b961b61bad662fd643d3222e21 100644
|
| --- a/runtime/vm/raw_object.cc
|
| +++ b/runtime/vm/raw_object.cc
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "vm/raw_object.h"
|
|
|
| +#include "vm/assembler.h"
|
| #include "vm/class_table.h"
|
| #include "vm/dart.h"
|
| #include "vm/freelist.h"
|
| @@ -115,6 +116,13 @@ intptr_t RawObject::SizeFromClass() const {
|
| instance_size = Array::InstanceSize(array_length);
|
| break;
|
| }
|
| + case kObjectPoolCid: {
|
| + const RawObjectPool* raw_object_pool =
|
| + reinterpret_cast<const RawObjectPool*>(this);
|
| + intptr_t len = raw_object_pool->ptr()->length_;
|
| + instance_size = ObjectPool::InstanceSize(len);
|
| + break;
|
| + }
|
| #define SIZE_FROM_CLASS(clazz) \
|
| case kTypedData##clazz##Cid:
|
| CLASS_LIST_TYPED_DATA(SIZE_FROM_CLASS) {
|
| @@ -523,6 +531,28 @@ intptr_t RawCode::VisitCodePointers(RawCode* raw_obj,
|
| }
|
|
|
|
|
| +RawObjectPool::Entry* RawObjectPool::from() {
|
| + return &ptr()->data()[Assembler::kNumFixedEntries];
|
| +}
|
| +
|
| +
|
| +RawObjectPool::Entry* RawObjectPool::to() {
|
| + return &ptr()->data()[Assembler::kNumFixedEntries +
|
| + ptr()->num_tagged_entries_ - 1];
|
| +}
|
| +
|
| +
|
| +intptr_t RawObjectPool::VisitObjectPoolPointers(
|
| + RawObjectPool* raw_obj, ObjectPointerVisitor* visitor) {
|
| + for (Entry* current = raw_obj->from();
|
| + current <= raw_obj->to();
|
| + current++) {
|
| + visitor->VisitPointer(¤t->raw_obj_);
|
| + }
|
| + return ObjectPool::InstanceSize(raw_obj->ptr()->length_);
|
| +}
|
| +
|
| +
|
| intptr_t RawInstructions::VisitInstructionsPointers(
|
| RawInstructions* raw_obj, ObjectPointerVisitor* visitor) {
|
| RawInstructions* obj = raw_obj->ptr();
|
|
|