50 lines
		
	
	
	
		
			2.1 KiB
			
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
	
		
			2.1 KiB
			
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 | 
						|
From: Samuel Attard <samuel.r.attard@gmail.com>
 | 
						|
Date: Thu, 18 Oct 2018 17:07:27 -0700
 | 
						|
Subject: isolate_holder.patch
 | 
						|
 | 
						|
Pass pre allocated isolate for initialization, node platform
 | 
						|
needs to register on an isolate so that it can be used later
 | 
						|
down in the initialization process of an isolate.
 | 
						|
 | 
						|
diff --git a/gin/isolate_holder.cc b/gin/isolate_holder.cc
 | 
						|
index 2514f591208372d6654ff9c5be50a51a39a881cb..4dd48f6a871cccb374c58adacb8ad9a80da89a5a 100644
 | 
						|
--- a/gin/isolate_holder.cc
 | 
						|
+++ b/gin/isolate_holder.cc
 | 
						|
@@ -52,7 +52,8 @@ IsolateHolder::IsolateHolder(
 | 
						|
     AccessMode access_mode,
 | 
						|
     AllowAtomicsWaitMode atomics_wait_mode,
 | 
						|
     IsolateType isolate_type,
 | 
						|
-    IsolateCreationMode isolate_creation_mode)
 | 
						|
+    IsolateCreationMode isolate_creation_mode,
 | 
						|
+    v8::Isolate* isolate)
 | 
						|
     : access_mode_(access_mode), isolate_type_(isolate_type) {
 | 
						|
   DCHECK(task_runner);
 | 
						|
   DCHECK(task_runner->BelongsToCurrentThread());
 | 
						|
@@ -60,7 +61,11 @@ IsolateHolder::IsolateHolder(
 | 
						|
   v8::ArrayBuffer::Allocator* allocator = g_array_buffer_allocator;
 | 
						|
   CHECK(allocator) << "You need to invoke gin::IsolateHolder::Initialize first";
 | 
						|
 
 | 
						|
-  isolate_ = v8::Isolate::Allocate();
 | 
						|
+  if (!isolate) {
 | 
						|
+    isolate_ = v8::Isolate::Allocate();
 | 
						|
+  } else {
 | 
						|
+    isolate_ = isolate;
 | 
						|
+  }
 | 
						|
   isolate_data_.reset(
 | 
						|
       new PerIsolateData(isolate_, allocator, access_mode_, task_runner));
 | 
						|
   if (isolate_creation_mode == IsolateCreationMode::kCreateSnapshot) {
 | 
						|
diff --git a/gin/public/isolate_holder.h b/gin/public/isolate_holder.h
 | 
						|
index ede178acabc63c3c33d6ce93efd5632bec50ba89..ffe7331cf1806417a32e66970f81b7797b9b80fc 100644
 | 
						|
--- a/gin/public/isolate_holder.h
 | 
						|
+++ b/gin/public/isolate_holder.h
 | 
						|
@@ -75,7 +75,8 @@ class GIN_EXPORT IsolateHolder {
 | 
						|
       AccessMode access_mode,
 | 
						|
       AllowAtomicsWaitMode atomics_wait_mode,
 | 
						|
       IsolateType isolate_type,
 | 
						|
-      IsolateCreationMode isolate_creation_mode = IsolateCreationMode::kNormal);
 | 
						|
+      IsolateCreationMode isolate_creation_mode = IsolateCreationMode::kNormal,
 | 
						|
+      v8::Isolate* isolate = nullptr);
 | 
						|
   ~IsolateHolder();
 | 
						|
 
 | 
						|
   // Should be invoked once before creating IsolateHolder instances to
 |