| OLD | NEW | 
|     1 // Copyright 2012 the V8 project authors. All rights reserved. |     1 // Copyright 2012 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/api.h" |     5 #include "src/api.h" | 
|     6  |     6  | 
|     7 #include <string.h>  // For memcpy, strlen. |     7 #include <string.h>  // For memcpy, strlen. | 
|     8 #ifdef V8_USE_ADDRESS_SANITIZER |     8 #ifdef V8_USE_ADDRESS_SANITIZER | 
|     9 #include <sanitizer/asan_interface.h> |     9 #include <sanitizer/asan_interface.h> | 
|    10 #endif  // V8_USE_ADDRESS_SANITIZER |    10 #endif  // V8_USE_ADDRESS_SANITIZER | 
| (...skipping 541 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   552   int num_contexts = static_cast<int>(data->contexts_.Size()); |   552   int num_contexts = static_cast<int>(data->contexts_.Size()); | 
|   553   i::List<i::Object*> contexts(num_contexts); |   553   i::List<i::Object*> contexts(num_contexts); | 
|   554   for (int i = 0; i < num_contexts; i++) { |   554   for (int i = 0; i < num_contexts; i++) { | 
|   555     i::HandleScope scope(isolate); |   555     i::HandleScope scope(isolate); | 
|   556     i::Handle<i::Context> context = |   556     i::Handle<i::Context> context = | 
|   557         v8::Utils::OpenHandle(*data->contexts_.Get(i)); |   557         v8::Utils::OpenHandle(*data->contexts_.Get(i)); | 
|   558     contexts.Add(*context); |   558     contexts.Add(*context); | 
|   559   } |   559   } | 
|   560   data->contexts_.Clear(); |   560   data->contexts_.Clear(); | 
|   561  |   561  | 
|   562 #ifdef DEBUG |  | 
|   563   i::ExternalReferenceTable::instance(isolate)->ResetCount(); |  | 
|   564 #endif  // DEBUG |  | 
|   565  |  | 
|   566   i::StartupSerializer startup_serializer(isolate, function_code_handling); |   562   i::StartupSerializer startup_serializer(isolate, function_code_handling); | 
|   567   startup_serializer.SerializeStrongReferences(); |   563   startup_serializer.SerializeStrongReferences(); | 
|   568  |   564  | 
|   569   // Serialize each context with a new partial serializer. |   565   // Serialize each context with a new partial serializer. | 
|   570   i::List<i::SnapshotData*> context_snapshots(num_contexts); |   566   i::List<i::SnapshotData*> context_snapshots(num_contexts); | 
|   571   for (int i = 0; i < num_contexts; i++) { |   567   for (int i = 0; i < num_contexts; i++) { | 
|   572     i::PartialSerializer partial_serializer(isolate, &startup_serializer, |   568     i::PartialSerializer partial_serializer(isolate, &startup_serializer, | 
|   573                                             callback); |   569                                             callback); | 
|   574     partial_serializer.Serialize(&contexts[i]); |   570     partial_serializer.Serialize(&contexts[i]); | 
|   575     context_snapshots.Add(new i::SnapshotData(&partial_serializer)); |   571     context_snapshots.Add(new i::SnapshotData(&partial_serializer)); | 
|   576   } |   572   } | 
|   577  |   573  | 
|   578   startup_serializer.SerializeWeakReferencesAndDeferred(); |   574   startup_serializer.SerializeWeakReferencesAndDeferred(); | 
|   579  |  | 
|   580 #ifdef DEBUG |  | 
|   581   if (i::FLAG_external_reference_stats) { |  | 
|   582     i::ExternalReferenceTable::instance(isolate)->PrintCount(); |  | 
|   583   } |  | 
|   584 #endif  // DEBUG |  | 
|   585  |  | 
|   586   i::SnapshotData startup_snapshot(&startup_serializer); |   575   i::SnapshotData startup_snapshot(&startup_serializer); | 
|   587   StartupData result = |   576   StartupData result = | 
|   588       i::Snapshot::CreateSnapshotBlob(&startup_snapshot, &context_snapshots); |   577       i::Snapshot::CreateSnapshotBlob(&startup_snapshot, &context_snapshots); | 
|   589  |   578  | 
|   590   // Delete heap-allocated context snapshot instances. |   579   // Delete heap-allocated context snapshot instances. | 
|   591   for (const auto& context_snapshot : context_snapshots) { |   580   for (const auto& context_snapshot : context_snapshots) { | 
|   592     delete context_snapshot; |   581     delete context_snapshot; | 
|   593   } |   582   } | 
|   594   data->created_ = true; |   583   data->created_ = true; | 
|   595   return result; |   584   return result; | 
| (...skipping 9188 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  9784   Address callback_address = |  9773   Address callback_address = | 
|  9785       reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); |  9774       reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); | 
|  9786   VMState<EXTERNAL> state(isolate); |  9775   VMState<EXTERNAL> state(isolate); | 
|  9787   ExternalCallbackScope call_scope(isolate, callback_address); |  9776   ExternalCallbackScope call_scope(isolate, callback_address); | 
|  9788   callback(info); |  9777   callback(info); | 
|  9789 } |  9778 } | 
|  9790  |  9779  | 
|  9791  |  9780  | 
|  9792 }  // namespace internal |  9781 }  // namespace internal | 
|  9793 }  // namespace v8 |  9782 }  // namespace v8 | 
| OLD | NEW |