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 #include "src/isolate.h" 6 7 #ifndef V8_SNAPSHOT_H_ 8 #define V8_SNAPSHOT_H_ 9 10 namespace v8 { 11 namespace internal { 12 13 class Snapshot { 14 public: 15 // Initialize the Isolate from the internal snapshot. Returns false if no 16 // snapshot could be found. 17 static bool Initialize(Isolate* isolate); 18 19 static bool HaveASnapshotToStartFrom(); 20 21 // Create a new context using the internal partial snapshot. 22 static Handle<Context> NewContextFromSnapshot(Isolate* isolate); 23 24 // These methods support COMPRESS_STARTUP_DATA_BZ2. data()25 static const byte* data() { return data_; } size()26 static int size() { return size_; } raw_size()27 static int raw_size() { return raw_size_; } set_raw_data(const byte * raw_data)28 static void set_raw_data(const byte* raw_data) { 29 raw_data_ = raw_data; 30 } context_data()31 static const byte* context_data() { return context_data_; } context_size()32 static int context_size() { return context_size_; } context_raw_size()33 static int context_raw_size() { return context_raw_size_; } set_context_raw_data(const byte * context_raw_data)34 static void set_context_raw_data( 35 const byte* context_raw_data) { 36 context_raw_data_ = context_raw_data; 37 } 38 39 private: 40 static const byte data_[]; 41 static const byte* raw_data_; 42 static const byte context_data_[]; 43 static const byte* context_raw_data_; 44 static const int new_space_used_; 45 static const int pointer_space_used_; 46 static const int data_space_used_; 47 static const int code_space_used_; 48 static const int map_space_used_; 49 static const int cell_space_used_; 50 static const int property_cell_space_used_; 51 static const int context_new_space_used_; 52 static const int context_pointer_space_used_; 53 static const int context_data_space_used_; 54 static const int context_code_space_used_; 55 static const int context_map_space_used_; 56 static const int context_cell_space_used_; 57 static const int context_property_cell_space_used_; 58 static const int size_; 59 static const int raw_size_; 60 static const int context_size_; 61 static const int context_raw_size_; 62 63 static void ReserveSpaceForLinkedInSnapshot(Deserializer* deserializer); 64 65 DISALLOW_IMPLICIT_CONSTRUCTORS(Snapshot); 66 }; 67 68 #ifdef V8_USE_EXTERNAL_STARTUP_DATA 69 void SetSnapshotFromFile(StartupData* snapshot_blob); 70 #endif 71 72 } } // namespace v8::internal 73 74 #endif // V8_SNAPSHOT_H_ 75