Chromium Code Reviews| Index: vm/snapshot.cc |
| =================================================================== |
| --- vm/snapshot.cc (revision 11700) |
| +++ vm/snapshot.cc (working copy) |
| @@ -156,6 +156,8 @@ |
| type_(AbstractType::Handle()), |
| type_arguments_(AbstractTypeArguments::Handle()), |
| tokens_(Array::Handle()), |
| + stream_(TokenStream::Handle()), |
| + data_(ExternalUint8Array::Handle()), |
| backward_references_((kind == Snapshot::kFull) ? |
| kNumInitialReferencesInFullSnapshot : |
| kNumInitialReferences) { |
| @@ -403,9 +405,26 @@ |
| RawTokenStream* SnapshotReader::NewTokenStream(intptr_t len) { |
| - ALLOC_NEW_OBJECT_WITH_LEN(TokenStream, |
| - Object::token_stream_class(), |
| - len); |
| + ASSERT(kind_ == Snapshot::kFull); |
| + ASSERT(isolate()->no_gc_scope_depth() != 0); |
| + cls_ = Object::token_stream_class(); |
| + stream_ = reinterpret_cast<RawTokenStream*>( |
| + AllocateUninitialized(cls_, TokenStream::InstanceSize())); |
| + cls_ = object_store()->external_int8_array_class(); |
| + uint8_t* array = const_cast<uint8_t*>(CurrentBufferAddress()); |
| + ASSERT(array != NULL); |
| + Advance(len); |
| + ExternalByteArrayData<uint8_t>* external_data = |
| + new ExternalByteArrayData<uint8_t>(array, |
| + reinterpret_cast<void*>(array), |
|
cshapiro
2012/09/06 00:11:49
make line 419 a NULL instead of non-NULL
siva
2012/09/06 18:19:29
Done.
|
| + NULL); |
| + ASSERT(external_data != NULL); |
| + data_ = reinterpret_cast<RawExternalUint8Array*>( |
| + AllocateUninitialized(cls_, ExternalUint8Array::InstanceSize())); |
| + data_.SetExternalData(external_data); |
| + data_.SetLength(len); |
| + stream_.SetStream(data_); |
| + return stream_.raw(); |
| } |