blob: 2fda57125220085a12ff0bf78224ab5d7ff72ec5 [file] [log] [blame]
Ben Murdochb8a8cc12014-11-26 15:28:44 +00001// 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.h"
8
9#include "src/serialize.h"
10#include "src/snapshot-source-sink.h"
11#include "src/v8.h" // for V8::Initialize
12
Emily Bernierd0a1eb72015-03-24 16:35:39 -040013
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
Ben Murdochb8a8cc12014-11-26 15:28:44 +000019namespace v8 {
20namespace internal {
21
Emily Bernierd0a1eb72015-03-24 16:35:39 -040022static v8::StartupData external_startup_blob = {NULL, 0};
Ben Murdochb8a8cc12014-11-26 15:28:44 +000023
24void SetSnapshotFromFile(StartupData* snapshot_blob) {
25 DCHECK(snapshot_blob);
26 DCHECK(snapshot_blob->data);
27 DCHECK(snapshot_blob->raw_size > 0);
Emily Bernierd0a1eb72015-03-24 16:35:39 -040028 DCHECK(!external_startup_blob.data);
29 // Validate snapshot blob.
30 DCHECK(!Snapshot::ExtractStartupData(snapshot_blob).is_empty());
31 DCHECK(!Snapshot::ExtractContextData(snapshot_blob).is_empty());
32 external_startup_blob = *snapshot_blob;
Ben Murdochb8a8cc12014-11-26 15:28:44 +000033}
34
Emily Bernierd0a1eb72015-03-24 16:35:39 -040035
36const v8::StartupData Snapshot::SnapshotBlob() { return external_startup_blob; }
Ben Murdochb8a8cc12014-11-26 15:28:44 +000037} } // namespace v8::internal