From aa857984b04511e62296b6d3ad9a451f81d71f71 Mon Sep 17 00:00:00 2001
From: Ryan Dahl <ry@tinyclouds.org>
Date: Sun, 10 Jun 2018 04:11:02 +0200
Subject: [PATCH] Simplify c api

---
 deno2/deno.cc             | 8 ++++++--
 deno2/deno.h              | 5 +++--
 deno2/snapshot_creator.cc | 9 +++------
 3 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/deno2/deno.cc b/deno2/deno.cc
index 1513262705..bf5dcc89f8 100644
--- a/deno2/deno.cc
+++ b/deno2/deno.cc
@@ -295,8 +295,12 @@ void deno_add_isolate(Deno* d, v8::Isolate* isolate) {
   d->isolate->SetData(0, d);
 }
 
-v8::StartupData deno_make_snapshot(const char* js_filename,
-                                   const char* js_source) {
+v8::StartupData make_snapshot(v8::StartupData* prev_natives_blob,
+                              v8::StartupData* prev_snapshot_blob,
+                              const char* js_filename, const char* js_source) {
+  v8::V8::SetNativesDataBlob(prev_natives_blob);
+  v8::V8::SetSnapshotDataBlob(prev_snapshot_blob);
+
   auto creator = new v8::SnapshotCreator(external_references);
   auto* isolate = creator->GetIsolate();
 
diff --git a/deno2/deno.h b/deno2/deno.h
index 00e4cc5026..007c708846 100644
--- a/deno2/deno.h
+++ b/deno2/deno.h
@@ -28,8 +28,9 @@ void v8_set_flags(int* argc, char** argv);
 // Constructors:
 Deno* deno_from_snapshot(v8::StartupData* blob, void* data, RecvCallback cb);
 
-v8::StartupData deno_make_snapshot(const char* js_filename,
-                                   const char* js_source);
+v8::StartupData make_snapshot(v8::StartupData* prev_natives_blob,
+                              v8::StartupData* prev_snapshot_blob,
+                              const char* js_filename, const char* js_source);
 
 void* deno_get_data();
 
diff --git a/deno2/snapshot_creator.cc b/deno2/snapshot_creator.cc
index 1aaa958d01..9ecfff11c9 100644
--- a/deno2/snapshot_creator.cc
+++ b/deno2/snapshot_creator.cc
@@ -125,16 +125,13 @@ int main(int argc, char** argv) {
   const char* natives_out_cc = argv[4];
   const char* snapshot_out_cc = argv[5];
 
-  deno::v8_init();
-
   auto js_data = ReadFile(js_fn);
   auto natives_blob = ReadFile(natives_in_bin);
   auto snapshot_in_blob = ReadFile(snapshot_in_bin);
 
-  v8::V8::SetNativesDataBlob(&natives_blob);
-  v8::V8::SetSnapshotDataBlob(&snapshot_in_blob);
-
-  auto snapshot_blob = deno::deno_make_snapshot(js_fn, js_data.data);
+  deno::v8_init();
+  auto snapshot_blob = deno::make_snapshot(&natives_blob, &snapshot_in_blob,
+                                           js_fn, js_data.data);
 
   StartupDataCppWriter nativesWriter("natives", natives_out_cc, natives_blob);
   nativesWriter.Write();