Line data Source code
1 : // Copyright 2006-2008 the V8 project authors. All rights reserved.
2 : // Use of this source code is governed by a BSD-style license that can be
3 : // found in the LICENSE file.
4 :
5 : // Used for building with external snapshots.
6 :
7 : #include "src/snapshot/snapshot.h"
8 :
9 : #include "src/base/platform/mutex.h"
10 : #include "src/snapshot/snapshot-source-sink.h"
11 : #include "src/v8.h" // for V8::Initialize
12 :
13 :
14 : #ifndef V8_USE_EXTERNAL_STARTUP_DATA
15 : #error snapshot-external.cc is used only for the external snapshot build.
16 : #endif // V8_USE_EXTERNAL_STARTUP_DATA
17 :
18 :
19 : namespace v8 {
20 : namespace internal {
21 :
22 : static base::LazyMutex external_startup_data_mutex = LAZY_MUTEX_INITIALIZER;
23 : static v8::StartupData external_startup_blob = {nullptr, 0};
24 :
25 59592 : void SetSnapshotFromFile(StartupData* snapshot_blob) {
26 : base::MutexGuard lock_guard(external_startup_data_mutex.Pointer());
27 : DCHECK(snapshot_blob);
28 : DCHECK(snapshot_blob->data);
29 : DCHECK_GT(snapshot_blob->raw_size, 0);
30 : DCHECK(!external_startup_blob.data);
31 : DCHECK(Snapshot::SnapshotIsValid(snapshot_blob));
32 59592 : external_startup_blob = *snapshot_blob;
33 59592 : }
34 :
35 :
36 60753 : const v8::StartupData* Snapshot::DefaultSnapshotBlob() {
37 : base::MutexGuard lock_guard(external_startup_data_mutex.Pointer());
38 60753 : return &external_startup_blob;
39 : }
40 : } // namespace internal
41 178776 : } // namespace v8
|