
All leftover objects on the CppHeap get destructed within the destructor
of V8PerIsolateData. One of these leftover objects is AsyncTaskContext.
Its destructor, however, accessed the V8PerIsolateData to load the
ThreadDebugger, which was at that point already deallocated by the
destructor of V8PerIsolateData. The fix is therefore to reorder the
fields of V8PerIsolateData, such that ThreadDebugger gets destructed
after the leftover objects on the CppHeap.
This reverts commit 2aa39f7adc
.
Original change's description:
> bindings: Pass CppHeap on Isolate creation
>
> This CL switches Blink to use the new APIs to pass the Oilpan
> (CppHeap) heap on construction. This allows establishing the invariant
> that an Oilpan heap always exists. V8 can thus rely on providing
> Oilpan-managed types on its API.
>
> Bug: 42203693
Change-Id: Ia61a0fcf6b206d1df83ecd469e162411ac47c061
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6234236
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1417202}
Gin - Lightweight bindings for V8
This directory contains Gin, a set of utilities to make working with V8 easier.
Here are some of the key bits:
-
converter.h: Templatized JS ↔ C++ conversion routines for many common C++ types. You can define your own by specializing Converter.
-
function_template.h: Create JavaScript functions that dispatch to any C++ function, member function pointer, or base::RepeatingCallback.
-
object_template_builder.h: A handy utility for creation of v8::ObjectTemplate.
-
wrappable.h: Base class for C++ classes that want to be owned by the V8 GC. Wrappable objects are automatically deleted when GC discovers that nothing in the V8 heap refers to them. This is also an easy way to expose C++ objects to JavaScript.
-
runner.h: Create script contexts and run code in them.
-
module_runner_delegate.h: A delegate for runner that implements a subset of the AMD module specification. Also see modules/ with some example modules.