diff --git a/src/env-inl.h b/src/env-inl.h index 01df1ad5b7..6be914ffb3 100644 --- a/src/env-inl.h +++ b/src/env-inl.h @@ -50,7 +50,7 @@ inline uint32_t* IsolateData::zero_fill_field() const { return zero_fill_field_; } -inline WorkerSupportingPlatform* IsolateData::platform() const { +inline MultiIsolatePlatform* IsolateData::platform() const { return platform_; } diff --git a/src/env.cc b/src/env.cc index 2c3341d19c..9703794601 100644 --- a/src/env.cc +++ b/src/env.cc @@ -28,7 +28,7 @@ using v8::String; IsolateData::IsolateData(Isolate* isolate, uv_loop_t* event_loop, - WorkerSupportingPlatform* platform, + MultiIsolatePlatform* platform, uint32_t* zero_fill_field) : // Create string and private symbol properties as internalized one byte strings. diff --git a/src/env.h b/src/env.h index b3a2c7fc4a..96a7f0628b 100644 --- a/src/env.h +++ b/src/env.h @@ -339,12 +339,12 @@ struct node_async_ids { class IsolateData { public: IsolateData(v8::Isolate* isolate, uv_loop_t* event_loop, - WorkerSupportingPlatform* platform = nullptr, + MultiIsolatePlatform* platform = nullptr, uint32_t* zero_fill_field = nullptr); ~IsolateData(); inline uv_loop_t* event_loop() const; inline uint32_t* zero_fill_field() const; - inline WorkerSupportingPlatform* platform() const; + inline MultiIsolatePlatform* platform() const; #define VP(PropertyName, StringValue) V(v8::Private, PropertyName) #define VS(PropertyName, StringValue) V(v8::String, PropertyName) @@ -373,7 +373,7 @@ class IsolateData { v8::Isolate* const isolate_; uv_loop_t* const event_loop_; uint32_t* const zero_fill_field_; - WorkerSupportingPlatform* platform_; + MultiIsolatePlatform* platform_; DISALLOW_COPY_AND_ASSIGN(IsolateData); }; diff --git a/src/node.cc b/src/node.cc index 4565b7dff3..49fcb2907a 100644 --- a/src/node.cc +++ b/src/node.cc @@ -4686,7 +4686,7 @@ IsolateData* CreateIsolateData(Isolate* isolate, uv_loop_t* loop) { IsolateData* CreateIsolateData( Isolate* isolate, uv_loop_t* loop, - WorkerSupportingPlatform* platform) { + MultiIsolatePlatform* platform) { return new IsolateData(isolate, loop, platform); } diff --git a/src/node.h b/src/node.h index 7cc46efb4a..2542d69f76 100644 --- a/src/node.h +++ b/src/node.h @@ -210,9 +210,9 @@ NODE_EXTERN void Init(int* argc, class IsolateData; class Environment; -class WorkerSupportingPlatform : public v8::Platform { +class MultiIsolatePlatform : public v8::Platform { public: - virtual ~WorkerSupportingPlatform() { } + virtual ~MultiIsolatePlatform() { } virtual void DrainBackgroundTasks(v8::Isolate* isolate) = 0; // These will be called by the `IsolateData` creation/destruction functions. @@ -221,15 +221,16 @@ class WorkerSupportingPlatform : public v8::Platform { virtual void UnregisterIsolate(IsolateData* isolate_data) = 0; }; -// If `platform` is passed, it will be used to register new worker instances. -// It can be `nullptr`, in which case creating new workers will not work. +// If `platform` is passed, it will be used to register new Worker instances. +// It can be `nullptr`, in which case creating new Workers inside of +// Environments that use this `IsolateData` will not work. NODE_EXTERN IsolateData* CreateIsolateData( v8::Isolate* isolate, struct uv_loop_s* loop); NODE_EXTERN IsolateData* CreateIsolateData( v8::Isolate* isolate, struct uv_loop_s* loop, - WorkerSupportingPlatform* platform); + MultiIsolatePlatform* platform); NODE_EXTERN void FreeIsolateData(IsolateData* isolate_data); NODE_EXTERN Environment* CreateEnvironment(IsolateData* isolate_data, diff --git a/src/node_platform.cc b/src/node_platform.cc index 74ed1bf903..ec2fca6c41 100644 --- a/src/node_platform.cc +++ b/src/node_platform.cc @@ -15,11 +15,6 @@ using v8::Platform; using v8::Task; using v8::TracingController; -void PerIsolatePlatformData::FlushTasks(uv_async_t* handle) { - auto platform_data = static_cast(handle->data); - platform_data->FlushForegroundTasksInternal(); -} - static void BackgroundRunner(void* data) { TaskQueue* background_tasks = static_cast*>(data); while (Task* task = background_tasks->BlockingPop()) { @@ -38,6 +33,11 @@ PerIsolatePlatformData::PerIsolatePlatformData( uv_unref(reinterpret_cast(flush_tasks_)); } +void PerIsolatePlatformData::FlushTasks(uv_async_t* handle) { + auto platform_data = static_cast(handle->data); + platform_data->FlushForegroundTasksInternal(); +} + void PerIsolatePlatformData::CallOnForegroundThread(Task* task) { foreground_tasks_.Push(task); uv_async_send(flush_tasks_); diff --git a/src/node_platform.h b/src/node_platform.h index 0d9d5997ba..aa9bf327d7 100644 --- a/src/node_platform.h +++ b/src/node_platform.h @@ -2,8 +2,8 @@ #define SRC_NODE_PLATFORM_H_ #include -#include #include +#include #include "libplatform/libplatform.h" #include "node.h" @@ -63,7 +63,7 @@ class PerIsolatePlatformData { TaskQueue> foreground_delayed_tasks_; }; -class NodePlatform : public WorkerSupportingPlatform { +class NodePlatform : public MultiIsolatePlatform { public: NodePlatform(int thread_pool_size, v8::TracingController* tracing_controller); virtual ~NodePlatform() {} diff --git a/test/cctest/node_test_fixture.h b/test/cctest/node_test_fixture.h index 9e99e5afb0..890fe90499 100644 --- a/test/cctest/node_test_fixture.h +++ b/test/cctest/node_test_fixture.h @@ -73,7 +73,7 @@ class NodeTestFixture : public ::testing::Test { public: static uv_loop_t* CurrentLoop() { return ¤t_loop; } - node::WorkerSupportingPlatform* Platform() const { return platform_; } + node::MultiIsolatePlatform* Platform() const { return platform_; } protected: v8::Isolate::CreateParams params_;