text: // Copyright 2006-2008 the V8 project authors. All rights reserved.
  // Use of this source code is governed by a BSD-style license that can be
  // found in the LICENSE file.
  
  #include "src/isolate.h"
  
  #ifndef V8_SNAPSHOT_H_
  #define V8_SNAPSHOT_H_
  
  namespace v8 {
  namespace internal {
  
  class Snapshot {
   public:
    // Initialize the VM from the internal snapshot. Returns false if no snapshot
    // could be found.
    static bool Initialize();
  
    static bool HaveASnapshotToStartFrom();
  
    // Create a new context using the internal partial snapshot.
    static Handle<Context> NewContextFromSnapshot(Isolate* isolate);
  
    // These methods support COMPRESS_STARTUP_DATA_BZ2.
    static const byte* data() { return data_; }
    static int size() { return size_; }
    static int raw_size() { return raw_size_; }
    static void set_raw_data(const byte* raw_data) {
      raw_data_ = raw_data;
    }
    static const byte* context_data() { return context_data_; }
    static int context_size() { return context_size_; }
    static int context_raw_size() { return context_raw_size_; }
    static void set_context_raw_data(
        const byte* context_raw_data) {
      context_raw_data_ = context_raw_data;
    }
  
   private:
    static const byte data_[];
    static const byte* raw_data_;
    static const byte context_data_[];
    static const byte* context_raw_data_;
    static const int new_space_used_;
    static const int pointer_space_used_;
    static const int data_space_used_;
    static const int code_space_used_;
    static const int map_space_used_;
    static const int cell_space_used_;
    static const int property_cell_space_used_;
    static const int context_new_space_used_;
    static const int context_pointer_space_used_;
    static const int context_data_space_used_;
    static const int context_code_space_used_;
    static const int context_map_space_used_;
    static const int context_cell_space_used_;
    static const int context_property_cell_space_used_;
    static const int size_;
    static const int raw_size_;
    static const int context_size_;
    static const int context_raw_size_;
  
    static void ReserveSpaceForLinkedInSnapshot(Deserializer* deserializer);
  
    DISALLOW_IMPLICIT_CONSTRUCTORS(Snapshot);
  };
  
  #ifdef V8_USE_EXTERNAL_STARTUP_DATA
  void SetSnapshotFromFile(StartupData* snapshot_blob);
  #endif
  
  } }  // namespace v8::internal
  
  #endif  // V8_SNAPSHOT_H_
  