From 38ef0e94bfaa3f7130c8e66847fa0c1262dde28e Mon Sep 17 00:00:00 2001 From: yangguo Date: Thu, 20 Aug 2015 02:26:21 -0700 Subject: [PATCH] Add deserialized scripts to script list. TBR=mvstanton@chromium.org Review URL: https://codereview.chromium.org/1296793003 Cr-Commit-Position: refs/heads/master@{#30266} --- src/snapshot/serialize.cc | 16 ++++++++++++---- src/snapshot/serialize.h | 3 ++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/snapshot/serialize.cc b/src/snapshot/serialize.cc index a3a2233..e7976ac 100644 --- a/src/snapshot/serialize.cc +++ b/src/snapshot/serialize.cc @@ -633,7 +633,7 @@ MaybeHandle Deserializer::DeserializeCode( DeserializeDeferredObjects(); result = Handle(SharedFunctionInfo::cast(root)); } - CommitNewInternalizedStrings(isolate); + CommitPostProcessedObjects(isolate); return scope.CloseAndEscape(result); } } @@ -726,8 +726,7 @@ HeapObject* Deserializer::PostProcessNewObject(HeapObject* obj, int space) { } } } else if (obj->IsScript()) { - // Assign a new script id to avoid collision. - Script::cast(obj)->set_id(isolate_->heap()->NextScriptId()); + new_scripts_.Add(handle(Script::cast(obj))); } else { DCHECK(CanBeDeferred(obj)); } @@ -760,7 +759,7 @@ HeapObject* Deserializer::PostProcessNewObject(HeapObject* obj, int space) { } -void Deserializer::CommitNewInternalizedStrings(Isolate* isolate) { +void Deserializer::CommitPostProcessedObjects(Isolate* isolate) { StringTable::EnsureCapacityForDeserialization( isolate, new_internalized_strings_.length()); for (Handle string : new_internalized_strings_) { @@ -768,6 +767,15 @@ void Deserializer::CommitNewInternalizedStrings(Isolate* isolate) { DCHECK_NULL(StringTable::LookupKeyIfExists(isolate, &key)); StringTable::LookupKey(isolate, &key); } + + Heap* heap = isolate->heap(); + Factory* factory = isolate->factory(); + for (Handle