Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

deps: V8: backport 0aa622e12893 #49419

Merged
merged 1 commit into from
Sep 11, 2023

Commits on Sep 7, 2023

  1. deps: V8: backport 93b1a74cbc9b

    Original commit message:
    
        Reland "[api] allow v8::Data as internal field"
    
        This is a reland of commit 0aa622e12893e9921c01a34ce9507b544e599c4a
    
        The original patch tried to run a test that calls exit() in the
        fatal error handler in parallel, which would not work. This marked
        the test with TEST() to avoid running it in parallel.
    
        Original change's description:
        > [api] allow v8::Data as internal field
        >
        > Previously only v8::Value can be stored as internal fields.
        > In some cases, however, it's necessary for the embedder to
        > tie the lifetime of a v8::Data with the lifetime of a
        > JS object, and that v8::Data may not be a v8::Value, as
        > it can be something returned from the V8 API. One way to
        > keep the v8::Data alive may be to use a v8::Persistent<v8::Data>
        > but that can easily lead to leaks.
        >
        > This patch changes v8::Object::GetInternalField() and
        > v8::Object::SetInernalField() to accept v8::Data instead of just
        > v8::Value, so that v8::Data can kept alive by a JS object in
        > a way that the GC can be aware of to address this problem.
        > This is a breaking change for embedders
        > using v8::Object::GetInternalField() as it changes the return
        > type. Since most v8::Value subtypes only support direct casts
        > from v8::Value but not v8::Data, calls like
        >
        > object->GetInternalField(index).As<v8::External>()
        >
        > needs to be updated to cast the value to v8::Value first:
        >
        > object->GetInternalField(index).As<v8::Value>().As<v8::External>()
        >
        > Bug: v8:14120
        > Change-Id: I731c958d1756b9d5ee4a3e78813416cd60d1b7ca
        > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4707972
        > Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
        > Commit-Queue: Joyee Cheung <joyee@igalia.com>
        > Cr-Commit-Position: refs/heads/main@{#89718}
    
        Bug: v8:14120
        Change-Id: I3e45d09b5c300d5eefc73e380ef21ac2bd61760c
        Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4834471
        Commit-Queue: Joyee Cheung <joyee@igalia.com>
        Reviewed-by: Camillo Bruni <cbruni@chromium.org>
        Cr-Commit-Position: refs/heads/main@{#89824}
    
    Refs: v8/v8@93b1a74
    joyeecheung committed Sep 7, 2023
    Configuration menu
    Copy the full SHA
    d08e689 View commit details
    Browse the repository at this point in the history