mirror of
https://github.com/nodejs/node.git
synced 2025-08-15 21:58:48 +02:00
![]() Original commit message: [api] add Isolate::Deinitialize() and Isolate::Free() This allows embedders to mirror the isolate disposal routine with an initialization routine that uses Isolate::Allocate(). ``` v8::Isolate* isolate = v8::Isolate::Allocate(); // Use the isolate address as a key. v8::Isolate::Initialize(isolate, params); isolate->Deinitialize(); // Remove the entry keyed by isolate address. v8::Isolate::Free(isolate); ``` Previously, the only way to dispose the isolate bundles the de-initialization and the freeing of the address together in v8::Isolate::Dispose(). This is inadequate for embedders like Node.js that uses the isolate address as a key to manage the task runner associated with it, if another thread gets an isolate allocated at the aligned address before the other thread finishes cleanup for the isolate previously allocated at the same address, and locking on the entire disposal can be too risky since it may post GC tasks that in turn requires using the isolate address to locate the task runner. It's a lot simpler to handle the issue if the disposal process of the isolate can mirror the initialization of it and split into two routines. Refs: https://github.com/nodejs/node/pull/57753#issuecomment-2818999420 Refs: https://github.com/nodejs/node/issues/30850 Bug: 412943769 Change-Id: I3865c27395aded3a6f32de74d96d0698b2d891b9 Reviewed-on: |
||
---|---|---|
.. | ||
cppgc | ||
libplatform | ||
APIDesign.md | ||
DEPS | ||
DIR_METADATA | ||
js_protocol-1.2.json | ||
js_protocol-1.3.json | ||
js_protocol.pdl | ||
OWNERS | ||
v8-array-buffer.h | ||
v8-callbacks.h | ||
v8-container.h | ||
v8-context.h | ||
v8-cppgc.h | ||
v8-data.h | ||
v8-date.h | ||
v8-debug.h | ||
v8-embedder-heap.h | ||
v8-embedder-state-scope.h | ||
v8-exception.h | ||
v8-extension.h | ||
v8-external-memory-accounter.h | ||
v8-external.h | ||
v8-fast-api-calls.h | ||
v8-forward.h | ||
v8-function-callback.h | ||
v8-function.h | ||
v8-handle-base.h | ||
v8-initialization.h | ||
v8-inspector-protocol.h | ||
v8-inspector.h | ||
v8-internal.h | ||
v8-isolate.h | ||
v8-json.h | ||
v8-local-handle.h | ||
v8-locker.h | ||
v8-maybe.h | ||
v8-memory-span.h | ||
v8-message.h | ||
v8-metrics.h | ||
v8-microtask-queue.h | ||
v8-microtask.h | ||
v8-object.h | ||
v8-persistent-handle.h | ||
v8-platform.h | ||
v8-primitive-object.h | ||
v8-primitive.h | ||
v8-profiler.h | ||
v8-promise.h | ||
v8-proxy.h | ||
v8-regexp.h | ||
v8-sandbox.h | ||
v8-script.h | ||
v8-snapshot.h | ||
v8-source-location.h | ||
v8-statistics.h | ||
v8-template.h | ||
v8-trace-categories.h | ||
v8-traced-handle.h | ||
v8-typed-array.h | ||
v8-unwinder-state.h | ||
v8-unwinder.h | ||
v8-util.h | ||
v8-value-serializer-version.h | ||
v8-value-serializer.h | ||
v8-value.h | ||
v8-version-string.h | ||
v8-version.h | ||
v8-wasm-trap-handler-posix.h | ||
v8-wasm-trap-handler-win.h | ||
v8-wasm.h | ||
v8-weak-callback-info.h | ||
v8.h | ||
v8config.h |