mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
src: isolate->Dispose() order consistency
PR-URL: https://github.com/nodejs/node/pull/30181 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: David Carlier <devnexen@gmail.com>
This commit is contained in:
parent
d7452b7140
commit
312c02d25e
@ -273,10 +273,11 @@ class NODE_EXTERN MultiIsolatePlatform : public v8::Platform {
|
||||
// This function may only be called once per `Isolate`.
|
||||
virtual void RegisterIsolate(v8::Isolate* isolate,
|
||||
struct uv_loop_s* loop) = 0;
|
||||
// This needs to be called right before calling `Isolate::Dispose()`.
|
||||
|
||||
// This function may only be called once per `Isolate`, and discard any
|
||||
// pending delayed tasks scheduled for that isolate.
|
||||
virtual void UnregisterIsolate(v8::Isolate* isolate) = 0;
|
||||
|
||||
// The platform should call the passed function once all state associated
|
||||
// with the given isolate has been cleaned up. This can, but does not have to,
|
||||
// happen asynchronously.
|
||||
|
@ -155,9 +155,9 @@ class WorkerThreadData {
|
||||
w_->platform_->AddIsolateFinishedCallback(isolate, [](void* data) {
|
||||
*static_cast<bool*>(data) = true;
|
||||
}, &platform_finished);
|
||||
w_->platform_->UnregisterIsolate(isolate);
|
||||
|
||||
isolate->Dispose();
|
||||
w_->platform_->UnregisterIsolate(isolate);
|
||||
|
||||
// Wait until the platform has cleaned up all relevant resources.
|
||||
while (!platform_finished)
|
||||
|
Loading…
Reference in New Issue
Block a user