2018-10-24 18:24:11 +00:00
|
|
|
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.
|
|
|
|
|
2018-10-03 07:06:40 +00:00
|
|
|
diff --git a/gin/isolate_holder.cc b/gin/isolate_holder.cc
|
2019-01-16 18:07:52 +00:00
|
|
|
index c8d5b58d711012bf9761ce073af00f30f803081b..ec61b873d4e2dcdca833c8503beabb88d0798f2d 100644
|
2018-10-03 07:06:40 +00:00
|
|
|
--- a/gin/isolate_holder.cc
|
|
|
|
+++ b/gin/isolate_holder.cc
|
2018-10-24 23:25:48 +00:00
|
|
|
@@ -52,7 +52,8 @@ IsolateHolder::IsolateHolder(
|
2018-10-03 07:06:40 +00:00
|
|
|
AccessMode access_mode,
|
|
|
|
AllowAtomicsWaitMode atomics_wait_mode,
|
2018-10-24 23:25:48 +00:00
|
|
|
IsolateType isolate_type,
|
2018-10-03 07:06:40 +00:00
|
|
|
- IsolateCreationMode isolate_creation_mode)
|
|
|
|
+ IsolateCreationMode isolate_creation_mode,
|
2018-10-05 18:40:17 +00:00
|
|
|
+ v8::Isolate* isolate)
|
2018-10-24 23:25:48 +00:00
|
|
|
: access_mode_(access_mode), isolate_type_(isolate_type) {
|
2018-10-03 07:06:40 +00:00
|
|
|
DCHECK(task_runner);
|
|
|
|
DCHECK(task_runner->BelongsToCurrentThread());
|
2018-10-24 23:25:48 +00:00
|
|
|
@@ -60,7 +61,11 @@ IsolateHolder::IsolateHolder(
|
2018-10-03 07:06:40 +00:00
|
|
|
v8::ArrayBuffer::Allocator* allocator = g_array_buffer_allocator;
|
|
|
|
CHECK(allocator) << "You need to invoke gin::IsolateHolder::Initialize first";
|
|
|
|
|
|
|
|
- isolate_ = v8::Isolate::Allocate();
|
2018-10-05 18:40:17 +00:00
|
|
|
+ if (!isolate) {
|
2018-10-03 07:06:40 +00:00
|
|
|
+ isolate_ = v8::Isolate::Allocate();
|
2018-10-05 18:40:17 +00:00
|
|
|
+ } else {
|
|
|
|
+ isolate_ = isolate;
|
2018-10-03 07:06:40 +00:00
|
|
|
+ }
|
|
|
|
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
|
2019-01-16 18:07:52 +00:00
|
|
|
index 6c5d101fef97e880bee20d2f76e4b339a624eb6f..576086de0de0a6fea9e2f2077af3aff18fd3138a 100644
|
2018-10-03 07:06:40 +00:00
|
|
|
--- a/gin/public/isolate_holder.h
|
|
|
|
+++ b/gin/public/isolate_holder.h
|
2019-01-16 18:07:52 +00:00
|
|
|
@@ -75,7 +75,8 @@ class GIN_EXPORT IsolateHolder {
|
2018-10-03 07:06:40 +00:00
|
|
|
AccessMode access_mode,
|
|
|
|
AllowAtomicsWaitMode atomics_wait_mode,
|
2018-10-24 23:25:48 +00:00
|
|
|
IsolateType isolate_type,
|
2018-10-03 07:06:40 +00:00
|
|
|
- IsolateCreationMode isolate_creation_mode = IsolateCreationMode::kNormal);
|
|
|
|
+ IsolateCreationMode isolate_creation_mode = IsolateCreationMode::kNormal,
|
2018-10-05 18:40:17 +00:00
|
|
|
+ v8::Isolate* isolate = nullptr);
|
2018-10-03 07:06:40 +00:00
|
|
|
~IsolateHolder();
|
|
|
|
|
|
|
|
// Should be invoked once before creating IsolateHolder instances to
|