Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(399)

Side by Side Diff: src/snapshot/deserializer.cc

Issue 2628093003: [serializer] change internal field callbacks to take data pointer. (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/debug/debug.cc ('k') | src/snapshot/partial-serializer.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/snapshot/deserializer.h" 5 #include "src/snapshot/deserializer.h"
6 6
7 #include "src/bootstrapper.h" 7 #include "src/bootstrapper.h"
8 #include "src/external-reference-table.h" 8 #include "src/external-reference-table.h"
9 #include "src/heap/heap.h" 9 #include "src/heap/heap.h"
10 #include "src/isolate.h" 10 #include "src/isolate.h"
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 } 214 }
215 } 215 }
216 } 216 }
217 217
218 void Deserializer::DeserializeInternalFields( 218 void Deserializer::DeserializeInternalFields(
219 v8::DeserializeInternalFieldsCallback internal_fields_deserializer) { 219 v8::DeserializeInternalFieldsCallback internal_fields_deserializer) {
220 if (!source_.HasMore() || source_.Get() != kInternalFieldsData) return; 220 if (!source_.HasMore() || source_.Get() != kInternalFieldsData) return;
221 DisallowHeapAllocation no_gc; 221 DisallowHeapAllocation no_gc;
222 DisallowJavascriptExecution no_js(isolate_); 222 DisallowJavascriptExecution no_js(isolate_);
223 DisallowCompilation no_compile(isolate_); 223 DisallowCompilation no_compile(isolate_);
224 DCHECK_NOT_NULL(internal_fields_deserializer); 224 DCHECK_NOT_NULL(internal_fields_deserializer.callback);
225 for (int code = source_.Get(); code != kSynchronize; code = source_.Get()) { 225 for (int code = source_.Get(); code != kSynchronize; code = source_.Get()) {
226 HandleScope scope(isolate_); 226 HandleScope scope(isolate_);
227 int space = code & kSpaceMask; 227 int space = code & kSpaceMask;
228 DCHECK(space <= kNumberOfSpaces); 228 DCHECK(space <= kNumberOfSpaces);
229 DCHECK(code - space == kNewObject); 229 DCHECK(code - space == kNewObject);
230 Handle<JSObject> obj(JSObject::cast(GetBackReferencedObject(space)), 230 Handle<JSObject> obj(JSObject::cast(GetBackReferencedObject(space)),
231 isolate_); 231 isolate_);
232 int index = source_.GetInt(); 232 int index = source_.GetInt();
233 int size = source_.GetInt(); 233 int size = source_.GetInt();
234 byte* data = new byte[size]; 234 byte* data = new byte[size];
235 source_.CopyRaw(data, size); 235 source_.CopyRaw(data, size);
236 internal_fields_deserializer(v8::Utils::ToLocal(obj), index, 236 internal_fields_deserializer.callback(v8::Utils::ToLocal(obj), index,
237 {reinterpret_cast<char*>(data), size}); 237 {reinterpret_cast<char*>(data), size},
238 internal_fields_deserializer.data);
238 delete[] data; 239 delete[] data;
239 } 240 }
240 } 241 }
241 242
242 // Used to insert a deserialized internalized string into the string table. 243 // Used to insert a deserialized internalized string into the string table.
243 class StringTableInsertionKey : public HashTableKey { 244 class StringTableInsertionKey : public HashTableKey {
244 public: 245 public:
245 explicit StringTableInsertionKey(String* string) 246 explicit StringTableInsertionKey(String* string)
246 : string_(string), hash_(HashForObject(string)) { 247 : string_(string), hash_(HashForObject(string)) {
247 DCHECK(string->IsInternalizedString()); 248 DCHECK(string->IsInternalizedString());
(...skipping 608 matching lines...) Expand 10 before | Expand all | Expand 10 after
856 857
857 default: 858 default:
858 CHECK(false); 859 CHECK(false);
859 } 860 }
860 } 861 }
861 CHECK_EQ(limit, current); 862 CHECK_EQ(limit, current);
862 return true; 863 return true;
863 } 864 }
864 } // namespace internal 865 } // namespace internal
865 } // namespace v8 866 } // namespace v8
OLDNEW
« no previous file with comments | « src/debug/debug.cc ('k') | src/snapshot/partial-serializer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698