node/deps/v8
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: 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
..
.github
bazel deps: update V8 to 13.6.233.8 2025-05-02 15:06:53 +02:00
build_overrides deps: update V8 to 13.6.233.8 2025-05-02 15:06:53 +02:00
custom_deps
docs deps: update V8 to 13.0.245.25 2025-01-31 12:45:51 +01:00
gni deps: update V8 to 13.6.233.8 2025-05-02 15:06:53 +02:00
include deps: V8: backport 954187bb1b87 2025-05-02 15:10:33 +02:00
infra deps: update V8 to 13.6.233.8 2025-05-02 15:06:53 +02:00
samples deps: update V8 to 13.0.245.25 2025-01-31 12:45:51 +01:00
src deps: V8: backport 954187bb1b87 2025-05-02 15:10:33 +02:00
test deps: V8: backport 954187bb1b87 2025-05-02 15:10:33 +02:00
testing deps: update V8 to 10.7.193.13 2022-10-11 07:24:33 +02:00
third_party deps: patch V8 to support compilation with MSVC 2025-05-02 15:10:33 +02:00
tools deps: update V8 to 13.6.233.8 2025-05-02 15:06:53 +02:00
.bazelrc deps: update V8 to 13.6.233.8 2025-05-02 15:06:53 +02:00
.clang-format deps: update V8 to 12.4.254.14 2024-04-22 21:25:15 +00:00
.clang-tidy deps: update V8 to 13.6.233.8 2025-05-02 15:06:53 +02:00
.editorconfig deps: update V8 to 12.9.202.18 2024-09-19 14:25:34 +00:00
.flake8
.git-blame-ignore-revs deps: update V8 to 11.3.244.4 2023-03-31 14:15:23 +00:00
.gitattributes
.gitignore deps: update V8 to 13.6.233.8 2025-05-02 15:06:53 +02:00
.gn deps: update V8 to 13.6.233.8 2025-05-02 15:06:53 +02:00
.mailmap deps: update V8 to 10.7.193.13 2022-10-11 07:24:33 +02:00
.style.yapf deps: update V8 to 11.3.244.4 2023-03-31 14:15:23 +00:00
.vpython3 deps: update V8 to 12.2.281.27 2024-03-31 15:36:07 +02:00
.ycm_extra_conf.py deps: update V8 to 10.9.194.4 2022-11-27 17:27:13 +00:00
AUTHORS deps: update V8 to 13.6.233.8 2025-05-02 15:06:53 +02:00
BUILD.bazel deps: update V8 to 13.6.233.8 2025-05-02 15:06:53 +02:00
BUILD.gn deps: update V8 to 13.6.233.8 2025-05-02 15:06:53 +02:00
CODE_OF_CONDUCT.md
codereview.settings
COMMON_OWNERS deps: update V8 to 13.6.233.8 2025-05-02 15:06:53 +02:00
DEPS deps: update V8 to 13.6.233.8 2025-05-02 15:06:53 +02:00
DIR_METADATA deps: update V8 to 13.6.233.8 2025-05-02 15:06:53 +02:00
ENG_REVIEW_OWNERS deps: update V8 to 13.6.233.8 2025-05-02 15:06:53 +02:00
INFRA_OWNERS deps: update V8 to 12.2.281.27 2024-03-31 15:36:07 +02:00
INTL_OWNERS
LICENSE deps: update V8 to 13.6.233.8 2025-05-02 15:06:53 +02:00
LICENSE.fdlibm
LICENSE.strongtalk
LICENSE.v8
LOONG_OWNERS
MIPS_OWNERS
MODULE.bazel deps: update V8 to 13.6.233.8 2025-05-02 15:06:53 +02:00
OWNERS deps: update V8 to 13.6.233.8 2025-05-02 15:06:53 +02:00
PPC_OWNERS deps: update V8 to 11.3.244.4 2023-03-31 14:15:23 +00:00
PRESUBMIT.py deps: update V8 to 13.6.233.8 2025-05-02 15:06:53 +02:00
pyrightconfig.json deps: update V8 to 13.6.233.8 2025-05-02 15:06:53 +02:00
README.md
RISCV_OWNERS
S390_OWNERS deps: update V8 to 11.3.244.4 2023-03-31 14:15:23 +00:00
WATCHLISTS deps: update V8 to 13.6.233.8 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.