Index: runtime/vm/snapshot.cc |
diff --git a/runtime/vm/snapshot.cc b/runtime/vm/snapshot.cc |
index 41959955949172ca7d6645626533c034a5227e5f..6a4371fd7ab42aa325c9ecc3abbf4dd9559b9c92 100644 |
--- a/runtime/vm/snapshot.cc |
+++ b/runtime/vm/snapshot.cc |
@@ -166,14 +166,10 @@ intptr_t BaseReader::ReadSmiValue() { |
SnapshotReader::SnapshotReader( |
const uint8_t* buffer, |
intptr_t size, |
- const uint8_t* instructions_buffer, |
- const uint8_t* data_buffer, |
Snapshot::Kind kind, |
ZoneGrowableArray<BackRefNode>* backward_refs, |
Thread* thread) |
: BaseReader(buffer, size), |
- instructions_buffer_(instructions_buffer), |
- data_buffer_(data_buffer), |
kind_(kind), |
thread_(thread), |
zone_(thread->zone()), |
@@ -192,19 +188,12 @@ SnapshotReader::SnapshotReader( |
stream_(TokenStream::Handle(zone_)), |
data_(ExternalTypedData::Handle(zone_)), |
typed_data_(TypedData::Handle(zone_)), |
- code_(Code::Handle(zone_)), |
function_(Function::Handle(zone_)), |
- megamorphic_cache_(MegamorphicCache::Handle(zone_)), |
error_(UnhandledException::Handle(zone_)), |
max_vm_isolate_object_id_( |
(Snapshot::IsFull(kind)) ? |
Object::vm_isolate_snapshot_object_table().Length() : 0), |
- backward_references_(backward_refs), |
- instructions_reader_(NULL) { |
- if (instructions_buffer != NULL) { |
- instructions_reader_ = |
- new InstructionsReader(instructions_buffer, data_buffer); |
- } |
+ backward_references_(backward_refs) { |
} |
@@ -220,9 +209,7 @@ RawObject* SnapshotReader::ReadObject() { |
(*backward_references_)[i].set_state(kIsDeserialized); |
} |
} |
- if (!Snapshot::IsFull(kind())) { |
- ProcessDeferredCanonicalizations(); |
- } |
+ ProcessDeferredCanonicalizations(); |
return obj.raw(); |
} else { |
// An error occurred while reading, return the error object. |
@@ -480,11 +467,7 @@ RawObject* SnapshotReader::ReadInstance(intptr_t object_id, |
instance_size = cls_.instance_size(); |
ASSERT(instance_size > 0); |
// Allocate the instance and read in all the fields for the object. |
- if (Snapshot::IsFull(kind_)) { |
- *result ^= AllocateUninitialized(cls_.id(), instance_size); |
- } else { |
- *result ^= Object::Allocate(cls_.id(), instance_size, HEAP_SPACE(kind_)); |
- } |
+ *result ^= Object::Allocate(cls_.id(), instance_size, HEAP_SPACE(kind_)); |
} else { |
cls_ ^= ReadObjectImpl(kAsInlinedObject); |
ASSERT(!cls_.IsNull()); |
@@ -522,21 +505,9 @@ RawObject* SnapshotReader::ReadInstance(intptr_t object_id, |
// snapshot (kFull, kScript) with asserts. |
offset += kWordSize; |
} |
- if (Snapshot::IsFull(kind_)) { |
- // We create an uninitialized object in the case of full snapshots, so |
- // we need to initialize any remaining padding area with the Null object. |
- while (offset < instance_size) { |
- result->SetFieldAtOffset(offset, Object::null_object()); |
- offset += kWordSize; |
- } |
- } |
if (RawObject::IsCanonical(tags)) { |
- if (Snapshot::IsFull(kind_)) { |
- result->SetCanonical(); |
- } else { |
- *result = result->CheckAndCanonicalize(thread(), NULL); |
- ASSERT(!result->IsNull()); |
- } |
+ *result = result->CheckAndCanonicalize(thread(), NULL); |
+ ASSERT(!result->IsNull()); |
} |
} |
return result->raw(); |
@@ -681,418 +652,16 @@ RawApiError* SnapshotReader::VerifyVersionAndFeatures() { |
} |
-#define ALLOC_NEW_OBJECT_WITH_LEN(type, length) \ |
- ASSERT(Snapshot::IsFull(kind_)); \ |
- ASSERT_NO_SAFEPOINT_SCOPE(); \ |
- Raw##type* obj = reinterpret_cast<Raw##type*>( \ |
- AllocateUninitialized(k##type##Cid, type::InstanceSize(length))); \ |
- obj->StoreSmi(&(obj->ptr()->length_), Smi::New(length)); \ |
- return obj; \ |
- |
- |
-RawArray* SnapshotReader::NewArray(intptr_t len) { |
- ALLOC_NEW_OBJECT_WITH_LEN(Array, len); |
-} |
- |
- |
-RawImmutableArray* SnapshotReader::NewImmutableArray(intptr_t len) { |
- ALLOC_NEW_OBJECT_WITH_LEN(ImmutableArray, len); |
-} |
- |
- |
-RawOneByteString* SnapshotReader::NewOneByteString(intptr_t len) { |
- ALLOC_NEW_OBJECT_WITH_LEN(OneByteString, len); |
-} |
- |
- |
-RawTwoByteString* SnapshotReader::NewTwoByteString(intptr_t len) { |
- ALLOC_NEW_OBJECT_WITH_LEN(TwoByteString, len); |
-} |
- |
- |
-RawTypeArguments* SnapshotReader::NewTypeArguments(intptr_t len) { |
- ALLOC_NEW_OBJECT_WITH_LEN(TypeArguments, len); |
-} |
- |
- |
-RawObjectPool* SnapshotReader::NewObjectPool(intptr_t len) { |
- ASSERT(Snapshot::IsFull(kind_)); |
- ASSERT_NO_SAFEPOINT_SCOPE(); |
- RawObjectPool* obj = reinterpret_cast<RawObjectPool*>( |
- AllocateUninitialized(kObjectPoolCid, ObjectPool::InstanceSize(len))); |
- obj->ptr()->length_ = len; |
- return obj; |
-} |
- |
- |
-RawLocalVarDescriptors* SnapshotReader::NewLocalVarDescriptors( |
- intptr_t num_entries) { |
- ASSERT(Snapshot::IsFull(kind_)); |
- ASSERT_NO_SAFEPOINT_SCOPE(); |
- RawLocalVarDescriptors* obj = reinterpret_cast<RawLocalVarDescriptors*>( |
- AllocateUninitialized(kLocalVarDescriptorsCid, |
- LocalVarDescriptors::InstanceSize(num_entries))); |
- obj->ptr()->num_entries_ = num_entries; |
- return obj; |
-} |
- |
- |
-RawExceptionHandlers* SnapshotReader::NewExceptionHandlers( |
- intptr_t num_entries) { |
- ASSERT(Snapshot::IsFull(kind_)); |
- ASSERT_NO_SAFEPOINT_SCOPE(); |
- RawExceptionHandlers* obj = reinterpret_cast<RawExceptionHandlers*>( |
- AllocateUninitialized(kExceptionHandlersCid, |
- ExceptionHandlers::InstanceSize(num_entries))); |
- obj->ptr()->num_entries_ = num_entries; |
- return obj; |
-} |
- |
- |
-RawPcDescriptors* SnapshotReader::NewPcDescriptors(intptr_t len) { |
- ASSERT(Snapshot::IsFull(kind_)); |
- ASSERT_NO_SAFEPOINT_SCOPE(); |
- RawPcDescriptors* obj = reinterpret_cast<RawPcDescriptors*>( |
- AllocateUninitialized(kPcDescriptorsCid, |
- PcDescriptors::InstanceSize(len))); |
- obj->ptr()->length_ = len; |
- return obj; |
-} |
- |
- |
-RawCodeSourceMap* SnapshotReader::NewCodeSourceMap(intptr_t len) { |
- ASSERT(Snapshot::IsFull(kind_)); |
- ASSERT_NO_SAFEPOINT_SCOPE(); |
- RawCodeSourceMap* obj = reinterpret_cast<RawCodeSourceMap*>( |
- AllocateUninitialized(kCodeSourceMapCid, |
- CodeSourceMap::InstanceSize(len))); |
- obj->ptr()->length_ = len; |
- return obj; |
-} |
- |
- |
-RawStackmap* SnapshotReader::NewStackmap(intptr_t len) { |
- ASSERT(Snapshot::IsFull(kind_)); |
- ASSERT_NO_SAFEPOINT_SCOPE(); |
- RawStackmap* obj = reinterpret_cast<RawStackmap*>( |
- AllocateUninitialized(kStackmapCid, Stackmap::InstanceSize(len))); |
- obj->ptr()->length_ = len; |
- return obj; |
-} |
- |
- |
-RawContextScope* SnapshotReader::NewContextScope(intptr_t num_variables) { |
- ASSERT(Snapshot::IsFull(kind_)); |
- ASSERT_NO_SAFEPOINT_SCOPE(); |
- RawContextScope* obj = reinterpret_cast<RawContextScope*>( |
- AllocateUninitialized(kContextScopeCid, |
- ContextScope::InstanceSize(num_variables))); |
- obj->ptr()->num_variables_ = num_variables; |
- return obj; |
-} |
- |
- |
-RawCode* SnapshotReader::NewCode(intptr_t pointer_offsets_length) { |
- ASSERT(pointer_offsets_length == 0); |
- ASSERT(Snapshot::IsFull(kind_)); |
- ASSERT_NO_SAFEPOINT_SCOPE(); |
- RawCode* obj = reinterpret_cast<RawCode*>( |
- AllocateUninitialized(kCodeCid, Code::InstanceSize(0))); |
- return obj; |
-} |
- |
- |
-RawTokenStream* SnapshotReader::NewTokenStream(intptr_t len) { |
- ASSERT(Snapshot::IsFull(kind_)); |
- ASSERT_NO_SAFEPOINT_SCOPE(); |
- stream_ = reinterpret_cast<RawTokenStream*>( |
- AllocateUninitialized(kTokenStreamCid, TokenStream::InstanceSize())); |
- uint8_t* array = const_cast<uint8_t*>(CurrentBufferAddress()); |
- ASSERT(array != NULL); |
- Advance(len); |
- data_ = reinterpret_cast<RawExternalTypedData*>( |
- AllocateUninitialized(kExternalTypedDataUint8ArrayCid, |
- ExternalTypedData::InstanceSize())); |
- data_.SetData(array); |
- data_.SetLength(len); |
- stream_.SetStream(data_); |
- return stream_.raw(); |
-} |
- |
- |
-RawContext* SnapshotReader::NewContext(intptr_t num_variables) { |
- ASSERT(Snapshot::IsFull(kind_)); |
- ASSERT_NO_SAFEPOINT_SCOPE(); |
- RawContext* obj = reinterpret_cast<RawContext*>( |
- AllocateUninitialized(kContextCid, Context::InstanceSize(num_variables))); |
- obj->ptr()->num_variables_ = num_variables; |
- return obj; |
-} |
- |
- |
-RawClass* SnapshotReader::NewClass(intptr_t class_id) { |
- ASSERT(Snapshot::IsFull(kind_)); |
- ASSERT_NO_SAFEPOINT_SCOPE(); |
- if (class_id < kNumPredefinedCids) { |
- ASSERT((class_id >= kInstanceCid) && |
- (class_id <= kNullCid)); |
- return isolate()->class_table()->At(class_id); |
- } |
- RawClass* obj = reinterpret_cast<RawClass*>( |
- AllocateUninitialized(kClassCid, Class::InstanceSize())); |
- Instance fake; |
- obj->ptr()->handle_vtable_ = fake.vtable(); |
- cls_ = obj; |
- cls_.set_id(class_id); |
- isolate()->RegisterClassAt(class_id, cls_); |
- return cls_.raw(); |
-} |
- |
- |
-RawInstance* SnapshotReader::NewInstance() { |
- ASSERT(Snapshot::IsFull(kind_)); |
- ASSERT_NO_SAFEPOINT_SCOPE(); |
- RawInstance* obj = reinterpret_cast<RawInstance*>( |
- AllocateUninitialized(kInstanceCid, Instance::InstanceSize())); |
- return obj; |
-} |
- |
- |
-RawMint* SnapshotReader::NewMint(int64_t value) { |
- ASSERT(Snapshot::IsFull(kind_)); |
- ASSERT_NO_SAFEPOINT_SCOPE(); |
- RawMint* obj = reinterpret_cast<RawMint*>( |
- AllocateUninitialized(kMintCid, Mint::InstanceSize())); |
- obj->ptr()->value_ = value; |
- return obj; |
-} |
- |
- |
-RawDouble* SnapshotReader::NewDouble(double value) { |
- ASSERT(Snapshot::IsFull(kind_)); |
- ASSERT_NO_SAFEPOINT_SCOPE(); |
- RawDouble* obj = reinterpret_cast<RawDouble*>( |
- AllocateUninitialized(kDoubleCid, Double::InstanceSize())); |
- obj->ptr()->value_ = value; |
- return obj; |
-} |
- |
- |
-RawTypedData* SnapshotReader::NewTypedData(intptr_t class_id, intptr_t len) { |
- ASSERT(Snapshot::IsFull(kind_)); |
- ASSERT_NO_SAFEPOINT_SCOPE(); |
- const intptr_t lengthInBytes = len * TypedData::ElementSizeInBytes(class_id); |
- RawTypedData* obj = reinterpret_cast<RawTypedData*>( |
- AllocateUninitialized(class_id, TypedData::InstanceSize(lengthInBytes))); |
- obj->StoreSmi(&(obj->ptr()->length_), Smi::New(len)); |
- return obj; |
-} |
- |
- |
-#define ALLOC_NEW_OBJECT(type) \ |
- ASSERT(Snapshot::IsFull(kind_)); \ |
- ASSERT_NO_SAFEPOINT_SCOPE(); \ |
- return reinterpret_cast<Raw##type*>( \ |
- AllocateUninitialized(k##type##Cid, type::InstanceSize())); \ |
- |
- |
-RawBigint* SnapshotReader::NewBigint() { |
- ALLOC_NEW_OBJECT(Bigint); |
-} |
- |
- |
-RawUnresolvedClass* SnapshotReader::NewUnresolvedClass() { |
- ALLOC_NEW_OBJECT(UnresolvedClass); |
-} |
- |
- |
-RawType* SnapshotReader::NewType() { |
- ALLOC_NEW_OBJECT(Type); |
-} |
- |
- |
-RawTypeRef* SnapshotReader::NewTypeRef() { |
- ALLOC_NEW_OBJECT(TypeRef); |
-} |
- |
- |
-RawTypeParameter* SnapshotReader::NewTypeParameter() { |
- ALLOC_NEW_OBJECT(TypeParameter); |
-} |
- |
- |
-RawBoundedType* SnapshotReader::NewBoundedType() { |
- ALLOC_NEW_OBJECT(BoundedType); |
-} |
- |
- |
-RawMixinAppType* SnapshotReader::NewMixinAppType() { |
- ALLOC_NEW_OBJECT(MixinAppType); |
-} |
- |
- |
-RawPatchClass* SnapshotReader::NewPatchClass() { |
- ALLOC_NEW_OBJECT(PatchClass); |
-} |
- |
- |
-RawClosure* SnapshotReader::NewClosure() { |
- ALLOC_NEW_OBJECT(Closure); |
-} |
- |
- |
-RawClosureData* SnapshotReader::NewClosureData() { |
- ALLOC_NEW_OBJECT(ClosureData); |
-} |
- |
- |
-RawRedirectionData* SnapshotReader::NewRedirectionData() { |
- ALLOC_NEW_OBJECT(RedirectionData); |
-} |
- |
- |
-RawFunction* SnapshotReader::NewFunction() { |
- ALLOC_NEW_OBJECT(Function); |
-} |
- |
- |
-RawICData* SnapshotReader::NewICData() { |
- ALLOC_NEW_OBJECT(ICData); |
-} |
- |
- |
-RawLinkedHashMap* SnapshotReader::NewLinkedHashMap() { |
- ALLOC_NEW_OBJECT(LinkedHashMap); |
-} |
- |
- |
-RawMegamorphicCache* SnapshotReader::NewMegamorphicCache() { |
- ALLOC_NEW_OBJECT(MegamorphicCache); |
-} |
- |
- |
-RawSubtypeTestCache* SnapshotReader::NewSubtypeTestCache() { |
- ALLOC_NEW_OBJECT(SubtypeTestCache); |
-} |
- |
- |
-RawField* SnapshotReader::NewField() { |
- ALLOC_NEW_OBJECT(Field); |
-} |
- |
- |
-RawLibrary* SnapshotReader::NewLibrary() { |
- ALLOC_NEW_OBJECT(Library); |
-} |
- |
- |
-RawLibraryPrefix* SnapshotReader::NewLibraryPrefix() { |
- ALLOC_NEW_OBJECT(LibraryPrefix); |
-} |
- |
- |
-RawNamespace* SnapshotReader::NewNamespace() { |
- ALLOC_NEW_OBJECT(Namespace); |
-} |
- |
- |
-RawScript* SnapshotReader::NewScript() { |
- ALLOC_NEW_OBJECT(Script); |
-} |
- |
- |
-RawLiteralToken* SnapshotReader::NewLiteralToken() { |
- ALLOC_NEW_OBJECT(LiteralToken); |
-} |
- |
- |
-RawGrowableObjectArray* SnapshotReader::NewGrowableObjectArray() { |
- ALLOC_NEW_OBJECT(GrowableObjectArray); |
-} |
- |
- |
-RawWeakProperty* SnapshotReader::NewWeakProperty() { |
- ALLOC_NEW_OBJECT(WeakProperty); |
-} |
- |
- |
-RawRegExp* SnapshotReader::NewRegExp() { |
- ALLOC_NEW_OBJECT(RegExp); |
-} |
- |
- |
-RawFloat32x4* SnapshotReader::NewFloat32x4(float v0, float v1, float v2, |
- float v3) { |
- ASSERT(Snapshot::IsFull(kind_)); |
- ASSERT_NO_SAFEPOINT_SCOPE(); |
- RawFloat32x4* obj = reinterpret_cast<RawFloat32x4*>( |
- AllocateUninitialized(kFloat32x4Cid, Float32x4::InstanceSize())); |
- obj->ptr()->value_[0] = v0; |
- obj->ptr()->value_[1] = v1; |
- obj->ptr()->value_[2] = v2; |
- obj->ptr()->value_[3] = v3; |
- return obj; |
-} |
- |
- |
-RawInt32x4* SnapshotReader::NewInt32x4(uint32_t v0, uint32_t v1, uint32_t v2, |
- uint32_t v3) { |
- ASSERT(Snapshot::IsFull(kind_)); |
- ASSERT_NO_SAFEPOINT_SCOPE(); |
- RawInt32x4* obj = reinterpret_cast<RawInt32x4*>( |
- AllocateUninitialized(kInt32x4Cid, Int32x4::InstanceSize())); |
- obj->ptr()->value_[0] = v0; |
- obj->ptr()->value_[1] = v1; |
- obj->ptr()->value_[2] = v2; |
- obj->ptr()->value_[3] = v3; |
- return obj; |
-} |
- |
- |
-RawFloat64x2* SnapshotReader::NewFloat64x2(double v0, double v1) { |
- ASSERT(Snapshot::IsFull(kind_)); |
- ASSERT_NO_SAFEPOINT_SCOPE(); |
- RawFloat64x2* obj = reinterpret_cast<RawFloat64x2*>( |
- AllocateUninitialized(kFloat64x2Cid, Float64x2::InstanceSize())); |
- obj->ptr()->value_[0] = v0; |
- obj->ptr()->value_[1] = v1; |
- return obj; |
-} |
- |
- |
-RawApiError* SnapshotReader::NewApiError() { |
- ALLOC_NEW_OBJECT(ApiError); |
-} |
- |
- |
-RawLanguageError* SnapshotReader::NewLanguageError() { |
- ALLOC_NEW_OBJECT(LanguageError); |
-} |
- |
- |
-RawUnhandledException* SnapshotReader::NewUnhandledException() { |
- ALLOC_NEW_OBJECT(UnhandledException); |
-} |
- |
- |
RawObject* SnapshotReader::NewInteger(int64_t value) { |
ASSERT((value & kSmiTagMask) == kSmiTag); |
value = value >> kSmiTagShift; |
if (Smi::IsValid(value)) { |
return Smi::New(static_cast<intptr_t>(value)); |
} |
- if (Snapshot::IsFull(kind_)) { |
- return NewMint(value); |
- } |
return Mint::NewCanonical(value); |
} |
-RawStacktrace* SnapshotReader::NewStacktrace() { |
- ALLOC_NEW_OBJECT(Stacktrace); |
-} |
- |
- |
int32_t InstructionsWriter::GetOffsetFor(RawInstructions* instructions, |
RawCode* code) { |
#if defined(PRODUCT) |
@@ -1422,34 +991,6 @@ intptr_t SnapshotReader::LookupInternalClass(intptr_t class_header) { |
} |
-RawObject* SnapshotReader::AllocateUninitialized(intptr_t class_id, |
- intptr_t size) { |
- ASSERT_NO_SAFEPOINT_SCOPE(); |
- ASSERT(Utils::IsAligned(size, kObjectAlignment)); |
- |
- uword address = |
- old_space()->TryAllocateDataBumpLocked(size, PageSpace::kForceGrowth); |
- if (address == 0) { |
- // Use the preallocated out of memory exception to avoid calling |
- // into dart code or allocating any code. |
- // We do a longjmp at this point to unwind out of the entire |
- // read part and return the error object back. |
- const UnhandledException& error = UnhandledException::Handle( |
- object_store()->preallocated_unhandled_exception()); |
- thread()->long_jump_base()->Jump(1, error); |
- } |
- |
- RawObject* raw_obj = reinterpret_cast<RawObject*>(address + kHeapObjectTag); |
- uword tags = 0; |
- ASSERT(class_id != kIllegalCid); |
- tags = RawObject::ClassIdTag::update(class_id, tags); |
- tags = RawObject::SizeTag::update(size, tags); |
- tags = RawObject::VMHeapObjectTag::update(is_vm_isolate(), tags); |
- raw_obj->ptr()->tags_ = tags; |
- return raw_obj; |
-} |
- |
- |
#define READ_VM_SINGLETON_OBJ(id, obj) \ |
if (object_id == id) { \ |
return obj; \ |
@@ -1520,10 +1061,8 @@ RawObject* SnapshotReader::ReadIndexedObject(intptr_t object_id, |
if (IsObjectStoreClassId(class_id)) { |
return isolate()->class_table()->At(class_id); // get singleton class. |
} |
- if (!Snapshot::IsFull(kind_)) { |
- if (IsObjectStoreTypeId(object_id)) { |
- return GetType(object_store(), object_id); // return type obj. |
- } |
+ if (IsObjectStoreTypeId(object_id)) { |
+ return GetType(object_store(), object_id); // return type obj. |
} |
ASSERT(object_id >= kMaxPredefinedObjectIds); |
intptr_t index = (object_id - kMaxPredefinedObjectIds); |
@@ -1538,7 +1077,7 @@ RawObject* SnapshotReader::ReadIndexedObject(intptr_t object_id, |
void SnapshotReader::AddPatchRecord(intptr_t object_id, |
intptr_t patch_object_id, |
intptr_t patch_offset) { |
- if (patch_object_id != kInvalidPatchIndex && !Snapshot::IsFull(kind())) { |
+ if (patch_object_id != kInvalidPatchIndex) { |
ASSERT(object_id >= kMaxPredefinedObjectIds); |
intptr_t index = (object_id - kMaxPredefinedObjectIds); |
ASSERT(index >= max_vm_isolate_object_id_); |
@@ -1623,8 +1162,6 @@ ScriptSnapshotReader::ScriptSnapshotReader(const uint8_t* buffer, |
Thread* thread) |
: SnapshotReader(buffer, |
size, |
- NULL, /* instructions_buffer */ |
- NULL, /* data_buffer */ |
Snapshot::kScript, |
new ZoneGrowableArray<BackRefNode>(kNumInitialReferences), |
thread) { |
@@ -1641,8 +1178,6 @@ MessageSnapshotReader::MessageSnapshotReader(const uint8_t* buffer, |
Thread* thread) |
: SnapshotReader(buffer, |
size, |
- NULL, /* instructions_buffer */ |
- NULL, /* data_buffer */ |
Snapshot::kMessage, |
new ZoneGrowableArray<BackRefNode>(kNumInitialReferences), |
thread) { |
@@ -1660,21 +1195,16 @@ SnapshotWriter::SnapshotWriter(Thread* thread, |
ReAlloc alloc, |
intptr_t initial_size, |
ForwardList* forward_list, |
- InstructionsWriter* instructions_writer, |
- bool can_send_any_object, |
- bool writing_vm_isolate) |
+ bool can_send_any_object) |
: BaseWriter(buffer, alloc, initial_size), |
thread_(thread), |
kind_(kind), |
object_store_(isolate()->object_store()), |
class_table_(isolate()->class_table()), |
forward_list_(forward_list), |
- instructions_writer_(instructions_writer), |
exception_type_(Exceptions::kNone), |
exception_msg_(NULL), |
- unmarked_objects_(false), |
- can_send_any_object_(can_send_any_object), |
- writing_vm_isolate_(writing_vm_isolate) { |
+ can_send_any_object_(can_send_any_object) { |
ASSERT(forward_list_ != NULL); |
} |
@@ -1766,47 +1296,25 @@ bool SnapshotWriter::HandleVMIsolateObject(RawObject* rawobj) { |
} |
} |
- if (writing_vm_isolate_) { |
- // When we are writing the VM isolate snapshot, write out the object |
- // itself instead of a VM object id. |
- return false; |
- } |
- |
- if (Snapshot::IsFull(kind())) { |
- // Check it is a predefined symbol in the VM isolate. |
- id = Symbols::LookupPredefinedSymbol(rawobj); |
- if (id != kInvalidIndex) { |
- WriteVMIsolateObject(id); |
- return true; |
- } |
- |
- // Check if it is an object from the vm isolate snapshot object table. |
- id = FindVmSnapshotObject(rawobj); |
- if (id != kInvalidIndex) { |
- WriteIndexedObject(id); |
- return true; |
- } |
+ // In the case of script snapshots or for messages we do not use |
+ // the index into the vm isolate snapshot object table, instead we |
+ // explicitly write the object out. |
+ intptr_t object_id = forward_list_->FindObject(rawobj); |
+ if (object_id != -1) { |
+ WriteIndexedObject(object_id); |
+ return true; |
} else { |
- // In the case of script snapshots or for messages we do not use |
- // the index into the vm isolate snapshot object table, instead we |
- // explicitly write the object out. |
- intptr_t object_id = forward_list_->FindObject(rawobj); |
- if (object_id != -1) { |
- WriteIndexedObject(object_id); |
- return true; |
- } else { |
- switch (id) { |
- VM_OBJECT_CLASS_LIST(VM_OBJECT_WRITE) |
- case kTypedDataUint32ArrayCid: { |
- object_id = forward_list_->AddObject(zone(), rawobj, kIsSerialized); |
- RawTypedData* raw_obj = reinterpret_cast<RawTypedData*>(rawobj); |
- raw_obj->WriteTo(this, object_id, kind(), false); |
- return true; |
- } |
- default: |
- OS::Print("class id = %" Pd "\n", id); |
- break; |
+ switch (id) { |
+ VM_OBJECT_CLASS_LIST(VM_OBJECT_WRITE) |
+ case kTypedDataUint32ArrayCid: { |
+ object_id = forward_list_->AddObject(zone(), rawobj, kIsSerialized); |
+ RawTypedData* raw_obj = reinterpret_cast<RawTypedData*>(rawobj); |
+ raw_obj->WriteTo(this, object_id, kind(), false); |
+ return true; |
} |
+ default: |
+ OS::Print("class id = %" Pd "\n", id); |
+ break; |
} |
} |
@@ -1930,34 +1438,32 @@ bool SnapshotWriter::CheckAndWritePredefinedObject(RawObject* rawobj) { |
// Check if it is a code object in that case just write a Null object |
// as we do not want code objects in the snapshot. |
- if (cid == kCodeCid && !Snapshot::IncludesCode(kind_)) { |
+ if (cid == kCodeCid) { |
WriteVMIsolateObject(kNullObject); |
return true; |
} |
// Check if classes are not being serialized and it is preinitialized type |
// or a predefined internal VM class in the object store. |
- if (!Snapshot::IsFull(kind_)) { |
- // Check if it is an internal VM class which is in the object store. |
- if (cid == kClassCid) { |
- RawClass* raw_class = reinterpret_cast<RawClass*>(rawobj); |
- intptr_t class_id = raw_class->ptr()->id_; |
- if (IsObjectStoreClassId(class_id)) { |
- intptr_t object_id = ObjectIdFromClassId(class_id); |
- WriteIndexedObject(object_id); |
- return true; |
- } |
- } |
- |
- // Now check it is a preinitialized type object. |
- RawType* raw_type = reinterpret_cast<RawType*>(rawobj); |
- intptr_t index = GetTypeIndex(object_store(), raw_type); |
- if (index != kInvalidIndex) { |
- WriteIndexedObject(index); |
+ // Check if it is an internal VM class which is in the object store. |
+ if (cid == kClassCid) { |
+ RawClass* raw_class = reinterpret_cast<RawClass*>(rawobj); |
+ intptr_t class_id = raw_class->ptr()->id_; |
+ if (IsObjectStoreClassId(class_id)) { |
+ intptr_t object_id = ObjectIdFromClassId(class_id); |
+ WriteIndexedObject(object_id); |
return true; |
} |
} |
+ // Now check it is a preinitialized type object. |
+ RawType* raw_type = reinterpret_cast<RawType*>(rawobj); |
+ intptr_t index = GetTypeIndex(object_store(), raw_type); |
+ if (index != kInvalidIndex) { |
+ WriteIndexedObject(index); |
+ return true; |
+ } |
+ |
return false; |
} |
@@ -2358,9 +1864,7 @@ ScriptSnapshotWriter::ScriptSnapshotWriter(uint8_t** buffer, |
alloc, |
kInitialSize, |
&forward_list_, |
- NULL, /* instructions_writer */ |
- true, /* can_send_any_object */ |
- false /* writing_vm_isolate */), |
+ true /* can_send_any_object */), |
forward_list_(thread(), kMaxPredefinedObjectIds) { |
ASSERT(buffer != NULL); |
ASSERT(alloc != NULL); |
@@ -2414,9 +1918,7 @@ MessageWriter::MessageWriter(uint8_t** buffer, |
alloc, |
kInitialSize, |
&forward_list_, |
- NULL, /* instructions_writer */ |
- can_send_any_object, |
- false /* writing_vm_isolate */), |
+ can_send_any_object), |
forward_list_(thread(), kMaxPredefinedObjectIds) { |
ASSERT(buffer != NULL); |
ASSERT(alloc != NULL); |