Joyee Cheung d58f474b2d
deps: V8: backport 954187bb1b87
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: https://chromium-review.googlesource.com/c/v8/v8/+/6480071
    Reviewed-by: Leszek Swirski <leszeks@chromium.org>
    Commit-Queue: Joyee Cheung <joyee@igalia.com>
    Cr-Commit-Position: refs/heads/main@{#99890}

Refs: 954187bb1b
PR-URL: https://github.com/nodejs/node/pull/58070
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Darshan Sen <raisinten@gmail.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
2025-05-02 15:10:33 +02:00
..
2025-05-02 15:06:53 +02:00
2025-01-31 12:45:51 +01:00
2025-05-02 15:06:53 +02:00
2025-05-02 15:10:33 +02:00
2025-05-02 15:06:53 +02:00
2025-01-31 12:45:51 +01:00
2025-05-02 15:10:33 +02:00
2025-05-02 15:10:33 +02:00
2025-05-02 15:06:53 +02:00
2025-05-02 15:06:53 +02:00
2025-05-02 15:06:53 +02:00
2024-09-19 14:25:34 +00:00
2025-05-02 15:06:53 +02:00
.gn
2025-05-02 15:06:53 +02:00
2025-05-02 15:06:53 +02:00
2025-05-02 15:06:53 +02:00
2025-05-02 15:06:53 +02:00
2025-05-02 15:06:53 +02:00
2025-05-02 15:06:53 +02:00
2025-05-02 15:06:53 +02:00
2025-05-02 15:06:53 +02:00
2025-05-02 15:06:53 +02:00
2025-05-02 15:06:53 +02:00
2025-05-02 15:06:53 +02:00
2025-05-02 15:06:53 +02:00

V8 JavaScript Engine

V8 is Google's open source JavaScript engine.

V8 implements ECMAScript as specified in ECMA-262.

V8 is written in C++ and is used in Google Chrome, the open source browser from Google.

V8 can run standalone, or can be embedded into any C++ application.

V8 Project page: https://v8.dev/docs

Getting the Code

Checkout depot tools, and run

    fetch v8

This will checkout V8 into the directory v8 and fetch all of its dependencies. To stay up to date, run

    git pull origin
    gclient sync

For fetching all branches, add the following into your remote configuration in .git/config:

    fetch = +refs/branch-heads/*:refs/remotes/branch-heads/*
    fetch = +refs/tags/*:refs/tags/*

Contributing

Please follow the instructions mentioned at v8.dev/docs/contribute.