1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
- From: Samuel Attard <[email protected]>
- 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.
- Specifically, v8::Isolate::Initialize ends up calling
- NodePlatform::GetForegroundTaskRunner, which requires that the
- isolate has previously been registered with NodePlatform::RegisterIsolate.
- However, if we let gin allocate the isolate, there's no opportunity
- for us to register the isolate in between Isolate::Allocate and
- Isolate::Initialize.
- diff --git a/gin/isolate_holder.cc b/gin/isolate_holder.cc
- index 1c3536a183aad1965e834b1681e36a3fc46ae419..1923f18cf2d4fff5094e6fe60bbef06b3e2cb06b 100644
- --- a/gin/isolate_holder.cc
- +++ b/gin/isolate_holder.cc
- @@ -73,7 +73,8 @@ IsolateHolder::IsolateHolder(
- IsolateCreationMode isolate_creation_mode,
- v8::CreateHistogramCallback create_histogram_callback,
- v8::AddHistogramSampleCallback add_histogram_sample_callback,
- - scoped_refptr<base::SingleThreadTaskRunner> low_priority_task_runner)
- + scoped_refptr<base::SingleThreadTaskRunner> low_priority_task_runner,
- + v8::Isolate* isolate)
- : IsolateHolder(std::move(task_runner),
- access_mode,
- isolate_type,
- @@ -82,7 +83,8 @@ IsolateHolder::IsolateHolder(
- create_histogram_callback,
- add_histogram_sample_callback),
- isolate_creation_mode,
- - std::move(low_priority_task_runner)) {}
- + std::move(low_priority_task_runner),
- + isolate) {}
-
- IsolateHolder::IsolateHolder(
- scoped_refptr<base::SingleThreadTaskRunner> task_runner,
- @@ -90,7 +92,8 @@ IsolateHolder::IsolateHolder(
- IsolateType isolate_type,
- std::unique_ptr<v8::Isolate::CreateParams> params,
- IsolateCreationMode isolate_creation_mode,
- - scoped_refptr<base::SingleThreadTaskRunner> low_priority_task_runner)
- + scoped_refptr<base::SingleThreadTaskRunner> low_priority_task_runner,
- + v8::Isolate* isolate)
- : access_mode_(access_mode), isolate_type_(isolate_type) {
- CHECK(Initialized())
- << "You need to invoke gin::IsolateHolder::Initialize first";
- @@ -101,7 +104,7 @@ IsolateHolder::IsolateHolder(
- v8::ArrayBuffer::Allocator* allocator = params->array_buffer_allocator;
- DCHECK(allocator);
-
- - isolate_ = v8::Isolate::Allocate();
- + isolate_ = isolate ? isolate : v8::Isolate::Allocate();
- isolate_data_ = std::make_unique<PerIsolateData>(
- isolate_, allocator, access_mode_, task_runner,
- std::move(low_priority_task_runner));
- diff --git a/gin/public/isolate_holder.h b/gin/public/isolate_holder.h
- index a5db8841773618814ac90f740201d4d7e9057b3c..1368ab8bfbf9e69437b394a8376bf7c956ca13ce 100644
- --- a/gin/public/isolate_holder.h
- +++ b/gin/public/isolate_holder.h
- @@ -85,7 +85,8 @@ class GIN_EXPORT IsolateHolder {
- v8::CreateHistogramCallback create_histogram_callback = nullptr,
- v8::AddHistogramSampleCallback add_histogram_sample_callback = nullptr,
- scoped_refptr<base::SingleThreadTaskRunner> low_priority_task_runner =
- - nullptr);
- + nullptr,
- + v8::Isolate* isolate = nullptr);
- IsolateHolder(
- scoped_refptr<base::SingleThreadTaskRunner> task_runner,
- AccessMode access_mode,
- @@ -93,7 +94,8 @@ class GIN_EXPORT IsolateHolder {
- std::unique_ptr<v8::Isolate::CreateParams> params,
- IsolateCreationMode isolate_creation_mode = IsolateCreationMode::kNormal,
- scoped_refptr<base::SingleThreadTaskRunner> low_priority_task_runner =
- - nullptr);
- + nullptr,
- + v8::Isolate* isolate = nullptr);
- IsolateHolder(const IsolateHolder&) = delete;
- IsolateHolder& operator=(const IsolateHolder&) = delete;
- ~IsolateHolder();
|