1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- 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 7d9068b87eee4dbc3435ed6f67285d428dc85f52..c0b8c6e5b49390b8a87d6a9d19605f6b6a1c3562 100644
- --- a/gin/isolate_holder.cc
- +++ b/gin/isolate_holder.cc
- @@ -59,7 +59,8 @@ IsolateHolder::IsolateHolder(
- IsolateType isolate_type,
- IsolateCreationMode isolate_creation_mode,
- v8::CreateHistogramCallback create_histogram_callback,
- - v8::AddHistogramSampleCallback add_histogram_sample_callback)
- + v8::AddHistogramSampleCallback add_histogram_sample_callback,
- + v8::Isolate* isolate)
- : access_mode_(access_mode), isolate_type_(isolate_type) {
- CHECK(Initialized())
- << "You need to invoke gin::IsolateHolder::Initialize first";
- @@ -70,7 +71,7 @@ IsolateHolder::IsolateHolder(
- v8::ArrayBuffer::Allocator* allocator = g_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);
- if (isolate_creation_mode == IsolateCreationMode::kCreateSnapshot) {
- diff --git a/gin/public/isolate_holder.h b/gin/public/isolate_holder.h
- index 4efc13c79ae742fa1925d064318627452ba852b2..978c0d144370162e65038cf8a2e125fbfd0f7ebf 100644
- --- a/gin/public/isolate_holder.h
- +++ b/gin/public/isolate_holder.h
- @@ -82,7 +82,8 @@ class GIN_EXPORT IsolateHolder {
- IsolateType isolate_type,
- IsolateCreationMode isolate_creation_mode = IsolateCreationMode::kNormal,
- v8::CreateHistogramCallback create_histogram_callback = nullptr,
- - v8::AddHistogramSampleCallback add_histogram_sample_callback = nullptr);
- + v8::AddHistogramSampleCallback add_histogram_sample_callback = nullptr,
- + v8::Isolate* isolate = nullptr);
- IsolateHolder(const IsolateHolder&) = delete;
- IsolateHolder& operator=(const IsolateHolder&) = delete;
- ~IsolateHolder();
|