// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. #ifndef RUNTIME_BIN_SNAPSHOT_UTILS_H_ #define RUNTIME_BIN_SNAPSHOT_UTILS_H_ #include "platform/globals.h" namespace dart { namespace bin { class AppSnapshot { public: virtual ~AppSnapshot() {} virtual void SetBuffers(const uint8_t** vm_data_buffer, const uint8_t** vm_instructions_buffer, const uint8_t** isolate_data_buffer, const uint8_t** isolate_instructions_buffer) = 0; protected: AppSnapshot() {} private: DISALLOW_COPY_AND_ASSIGN(AppSnapshot); }; class Snapshot { public: static void GenerateKernel(const char* snapshot_filename, const char* script_name, const char* package_config); static void GenerateAppJIT(const char* snapshot_filename); static void GenerateAppAOTAsBlobs(const char* snapshot_filename, const uint8_t* shared_data, const uint8_t* shared_instructions); static void GenerateAppAOTAsAssembly(const char* snapshot_filename); static AppSnapshot* TryReadAppSnapshot(const char* script_name); static void WriteAppSnapshot(const char* filename, uint8_t* vm_data_buffer, intptr_t vm_data_size, uint8_t* vm_instructions_buffer, intptr_t vm_instructions_size, uint8_t* isolate_data_buffer, intptr_t isolate_data_size, uint8_t* isolate_instructions_buffer, intptr_t isolate_instructions_size); private: DISALLOW_ALLOCATION(); DISALLOW_IMPLICIT_CONSTRUCTORS(Snapshot); }; } // namespace bin } // namespace dart #endif // RUNTIME_BIN_SNAPSHOT_UTILS_H_