[wasm-gc] Basic JS interop handling for wasm objects [v8/v8 : main]

15 views
Skip to first unread message

Matthias Liedtke (Gerrit)

unread,
Sep 12, 2022, 1:01:15 PM9/12/22
to was...@google.com, v8-re...@googlegroups.com

Patch set 6:Commit-Queue +1

View Change

    To view, visit change 3879616. To unsubscribe, or for help writing mail filters, visit settings.

    Gerrit-Project: v8/v8
    Gerrit-Branch: main
    Gerrit-Change-Id: If0dc368f99d4097e3eaf53edde4e244e3081e334
    Gerrit-Change-Number: 3879616
    Gerrit-PatchSet: 6
    Gerrit-Owner: Matthias Liedtke <mlie...@chromium.org>
    Gerrit-Reviewer: Matthias Liedtke <mlie...@chromium.org>
    Gerrit-Comment-Date: Mon, 12 Sep 2022 17:01:03 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    Gerrit-MessageType: comment

    Matthias Liedtke (Gerrit)

    unread,
    Sep 14, 2022, 8:08:01 AM9/14/22
    to was...@google.com, V8 LUCI CQ, v8-re...@googlegroups.com

    View Change

    1 comment:

    • File src/builtins/promise-resolve.tq:

      • Patch Set #11, Line 164: // Skip "then" lookup for Wasm objects as they are opaque.

        This could also already be done in line 121.
        It might however be reasonable to consider this as part of the "slow" path as it is somewhat much less likely to have opaque wasm objects as a resolution value.

    To view, visit change 3879616. To unsubscribe, or for help writing mail filters, visit settings.

    Gerrit-Project: v8/v8
    Gerrit-Branch: main
    Gerrit-Change-Id: If0dc368f99d4097e3eaf53edde4e244e3081e334
    Gerrit-Change-Number: 3879616
    Gerrit-PatchSet: 11
    Gerrit-Owner: Matthias Liedtke <mlie...@chromium.org>
    Gerrit-Reviewer: Matthias Liedtke <mlie...@chromium.org>
    Gerrit-Comment-Date: Wed, 14 Sep 2022 12:07:52 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Gerrit-MessageType: comment

    Matthias Liedtke (Gerrit)

    unread,
    Sep 14, 2022, 1:01:19 PM9/14/22
    to was...@google.com, V8 LUCI CQ, v8-re...@googlegroups.com

    Patch set 15:Commit-Queue +1

    View Change

    7 comments:

    • File test/mjsunit/wasm/gc-js-interop.js:

      • Patch Set #15, Line 40:

          // TODO(7748): This assertion doesn't hold true, as some cases run into
        // deopt loops.
        // assertTrue(%ActiveTierIsTurbofan(fn));

        How much do we care about it for the MVP?

      • Patch Set #15, Line 55: // TODO: test repeated execution of functions using ICs, including optimized.

        As proposed I have changed everything to repeated execution.
        The issue is that this is quite slow taking about 80-90 seconds in `debug` (7 seconds in `optdebug`).
        As discussed offline, I'll split it into multiple files to allow parallel execution.

        Still, if there are some redundant test patterns (e.g. if we could condense all trigonometric functions into one because they use the same code paths), I'm happy to reduce it as well.

      • Patch Set #15, Line 282: testThrowsRepeated(() => new Symbol(wasm_obj), TypeError);

        These tests just iterate over all these functions in the global namespace.
        For some of them there are `TypeError`s with `new`, for some without.
        So in those cases the corresponding tests actually don't do anything with the argument as the `new` operator already throws the `TypeError`.
        Should we remove them from the test or just keep them "just in case"?

      • Patch Set #15, Line 673:

        // FIXME(mliedtke): Should we repeat the same testing for async generator
        // functions as for the synchronous ones?

        Can we just assume that it's pretty much the same + promises?
        I don't really want to bloat the test even more.

      • Patch Set #15, Line 697: repeated(() => assertTrue(Reflect.defineProperty(obj, "prop", wasm_obj)));

        This doesn't make any sense as the third parameter should be an object e.g. with a value element. Still it doesn't throw and just behaves like an empty object (see comment above).
        Should we change that?

      • Patch Set #15, Line 725: let proxy = new Proxy(wasm_obj, handler);

        An alternative would be to fail early and preventing to install a wasm object as a handler. This however would require additional code and for now the implementation choice was "keep the changes minimal". 😊

      • Patch Set #15, Line 761:

        // TODO(mliedtke): What about `export {struct, array}`?
        // d8 doesn't seem to accept exports (as the file isn't a module?)

        Is there a simple way to test importing/exporting?

    To view, visit change 3879616. To unsubscribe, or for help writing mail filters, visit settings.

    Gerrit-Project: v8/v8
    Gerrit-Branch: main
    Gerrit-Change-Id: If0dc368f99d4097e3eaf53edde4e244e3081e334
    Gerrit-Change-Number: 3879616
    Gerrit-PatchSet: 15
    Gerrit-Owner: Matthias Liedtke <mlie...@chromium.org>
    Gerrit-Reviewer: Matthias Liedtke <mlie...@chromium.org>
    Gerrit-Comment-Date: Wed, 14 Sep 2022 17:01:06 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    Gerrit-MessageType: comment

    Matthias Liedtke (Gerrit)

    unread,
    Sep 15, 2022, 9:00:42 AM9/15/22
    to was...@google.com, V8 LUCI CQ, v8-re...@googlegroups.com

    View Change

    1 comment:

    • File test/mjsunit/wasm/gc-js-interop.js:

      • Patch Set #15, Line 55: // TODO: test repeated execution of functions using ICs, including optimized.

        As proposed I have changed everything to repeated execution. […]

        Done

    To view, visit change 3879616. To unsubscribe, or for help writing mail filters, visit settings.

    Gerrit-Project: v8/v8
    Gerrit-Branch: main
    Gerrit-Change-Id: If0dc368f99d4097e3eaf53edde4e244e3081e334
    Gerrit-Change-Number: 3879616
    Gerrit-PatchSet: 18
    Gerrit-Owner: Matthias Liedtke <mlie...@chromium.org>
    Gerrit-Reviewer: Matthias Liedtke <mlie...@chromium.org>
    Gerrit-Comment-Date: Thu, 15 Sep 2022 13:00:29 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Matthias Liedtke <mlie...@chromium.org>
    Gerrit-MessageType: comment

    Matthias Liedtke (Gerrit)

    unread,
    Sep 15, 2022, 9:02:46 AM9/15/22
    to was...@google.com, Jakob Kummerow, V8 LUCI CQ, v8-re...@googlegroups.com

    Attention is currently required from: Jakob Kummerow.

    Patch set 18:Commit-Queue +1

    View Change

    1 comment:

    • Patchset:

      • Patch Set #18:

        @Jakob: Sorry for the large CL. Mostly these are test cases, the changes in production code are small.
        There are some comments on some cases whether the tested behavior is the desired one, so some further discussion might be required.

    To view, visit change 3879616. To unsubscribe, or for help writing mail filters, visit settings.

    Gerrit-Project: v8/v8
    Gerrit-Branch: main
    Gerrit-Change-Id: If0dc368f99d4097e3eaf53edde4e244e3081e334
    Gerrit-Change-Number: 3879616
    Gerrit-PatchSet: 18
    Gerrit-Owner: Matthias Liedtke <mlie...@chromium.org>
    Gerrit-Reviewer: Jakob Kummerow <jkum...@chromium.org>
    Gerrit-Reviewer: Matthias Liedtke <mlie...@chromium.org>
    Gerrit-Attention: Jakob Kummerow <jkum...@chromium.org>
    Gerrit-Comment-Date: Thu, 15 Sep 2022 13:02:34 +0000

    Matthias Liedtke (Gerrit)

    unread,
    Sep 15, 2022, 9:25:55 AM9/15/22
    to was...@google.com, Jakob Kummerow, V8 LUCI CQ, v8-re...@googlegroups.com

    Attention is currently required from: Jakob Kummerow.

    Patch set 19:Commit-Queue +1

    View Change

      To view, visit change 3879616. To unsubscribe, or for help writing mail filters, visit settings.

      Gerrit-Project: v8/v8
      Gerrit-Branch: main
      Gerrit-Change-Id: If0dc368f99d4097e3eaf53edde4e244e3081e334
      Gerrit-Change-Number: 3879616
      Gerrit-PatchSet: 19
      Gerrit-Owner: Matthias Liedtke <mlie...@chromium.org>
      Gerrit-Reviewer: Jakob Kummerow <jkum...@chromium.org>
      Gerrit-Reviewer: Matthias Liedtke <mlie...@chromium.org>
      Gerrit-Attention: Jakob Kummerow <jkum...@chromium.org>
      Gerrit-Comment-Date: Thu, 15 Sep 2022 13:25:42 +0000

      Matthias Liedtke (Gerrit)

      unread,
      Sep 15, 2022, 10:16:37 AM9/15/22
      to was...@google.com, Jakob Kummerow, V8 LUCI CQ, v8-re...@googlegroups.com

      Attention is currently required from: Jakob Kummerow.

      Patch set 20:Commit-Queue +1

      View Change

        To view, visit change 3879616. To unsubscribe, or for help writing mail filters, visit settings.

        Gerrit-Project: v8/v8
        Gerrit-Branch: main
        Gerrit-Change-Id: If0dc368f99d4097e3eaf53edde4e244e3081e334
        Gerrit-Change-Number: 3879616
        Gerrit-PatchSet: 20
        Gerrit-Owner: Matthias Liedtke <mlie...@chromium.org>
        Gerrit-Reviewer: Jakob Kummerow <jkum...@chromium.org>
        Gerrit-Reviewer: Matthias Liedtke <mlie...@chromium.org>
        Gerrit-Attention: Jakob Kummerow <jkum...@chromium.org>
        Gerrit-Comment-Date: Thu, 15 Sep 2022 14:16:26 +0000

        Matthias Liedtke (Gerrit)

        unread,
        Sep 15, 2022, 12:46:11 PM9/15/22
        to was...@google.com, Jakob Kummerow, V8 LUCI CQ, v8-re...@googlegroups.com

        Attention is currently required from: Jakob Kummerow.

        Patch set 21:Commit-Queue +1

        View Change

          To view, visit change 3879616. To unsubscribe, or for help writing mail filters, visit settings.

          Gerrit-Project: v8/v8
          Gerrit-Branch: main
          Gerrit-Change-Id: If0dc368f99d4097e3eaf53edde4e244e3081e334
          Gerrit-Change-Number: 3879616
          Gerrit-PatchSet: 21
          Gerrit-Owner: Matthias Liedtke <mlie...@chromium.org>
          Gerrit-Reviewer: Jakob Kummerow <jkum...@chromium.org>
          Gerrit-Reviewer: Matthias Liedtke <mlie...@chromium.org>
          Gerrit-Attention: Jakob Kummerow <jkum...@chromium.org>
          Gerrit-Comment-Date: Thu, 15 Sep 2022 16:45:58 +0000

          Jakob Kummerow (Gerrit)

          unread,
          Sep 15, 2022, 2:25:26 PM9/15/22
          to Matthias Liedtke, was...@google.com, Jakob Kummerow, V8 LUCI CQ, v8-re...@googlegroups.com

          Attention is currently required from: Matthias Liedtke.

          Patch set 21:Code-Review +1

          View Change

          27 comments:

          • Patchset:

          • File src/builtins/promise-resolve.tq:

            • This could also already be done in line 121. […]

              Ack

          • File src/objects/js-objects-inl.h:

            • Patch Set #20, Line 105:

              isolate->Throw(*isolate->factory()->NewTypeError(
              MessageTemplate::kWasmObjectsAreOpaque));
              return {};

              ```
              THROW_NEW_ERROR(isolate,
              NewTypeError(MessageTemplate::kWasmObjectsAreOpaque),
              HeapObject);
              ```
          • File src/objects/js-objects.cc:

            • Patch Set #20, Line 152:

              case LookupIterator::WASM_OBJECT:
              it->NotFound();
              return it->isolate()->factory()->undefined_value();

              nit: this is the same as the JSPROXY case, so you could combine it with that.

            • Patch Set #20, Line 5159:

              if (value->IsWasmObject()) {
              RETURN_FAILURE(isolate, should_throw,
              NewTypeError(MessageTemplate::kWasmObjectsAreOpaque));
              }

              I'm not convinced that we should throw at this point. Just wait until that prototype is encountered in some later lookup, it'll throw then :-)

          • File test/mjsunit/wasm/gc-js-interop-async.js:

          • File test/mjsunit/wasm/gc-js-interop-collections.js:

            • Patch Set #21, Line 71:

              Int8Array, Int16Array, Int32Array, Uint8Array, Uint16Array,
              Uint32Array

              If we wanted to save some test execution time, we could limit ourselves to one of these, as they share their implementations anyway. But also fine to keep them all.

            • Patch Set #21, Line 157: asssigned

              `assigned`

          • File test/mjsunit/wasm/gc-js-interop-global-constructors.js:

          • File test/mjsunit/wasm/gc-js-interop-helpers.js:

            • Patch Set #20, Line 5: // Flags: --experimental-wasm-gc --wasm-gc-js-interop --allow-natives-syntax

              You don't need this if you add a SKIP line to mjsunit.status. (Executing this file as a test isn't useful, after all.)

            • Patch Set #20, Line 12: function MakeInstance() {

              nit: this nested function doesn't really accomplish anything, so just inline it. (It previously kept its local variables out of the top-level scope, but that purpose is now served by `CreateWasmObjects`.)

          • File test/mjsunit/wasm/gc-js-interop-numeric.js:

          • File test/mjsunit/wasm/gc-js-interop-objects.js:

            • repeated(() => assertTrue(Reflect.defineProperty(obj, 'prop', wasm_obj)));

            •     repeated(() => assertTrue(obj.hasOwnProperty('prop')));
              repeated(() => assertEquals(undefined, obj.prop));
              repeated(
              () => assertTrue(
              Reflect.defineProperty(obj, 'prop2', {value: wasm_obj})));
              repeated(() => assertSame(wasm_obj, obj.prop2));

              nit: in the few cases where you have sequences of operations that build on each other's effects, it could make sense to combine them into a single function. So this entire block (lines 86 through 98) would become:
              ```
              repeated(() => {
              let obj = {};
              assertTrue(Reflect.define...);
              assertTrue(obj.hasOwn...);
              ...
              });
              ```
            • Patch Set #21, Line 103: assertFalse(Reflect.has(wasm_obj, 'prop'));

              Is there a reason this isn't `repeated(...)`?

          • File test/mjsunit/wasm/gc-js-interop.js:

            •   // TODO(7748): This assertion doesn't hold true, as some cases run into
              // deopt loops.
              // assertTrue(%ActiveTierIsTurbofan(fn));

              How much do we care about it for the MVP?

            • Not very much. For the MVP, it's important to have the right behavior and not crash; avoiding deopt loops is just a performance thing and hence can wait.

            • These tests just iterate over all these functions in the global namespace. […]

              I don't mind either way. It's fine to drop them.

              (We *could* pass a third argument to `assertThrows` that checks the error message... would that be worth it?)

            • Patch Set #15, Line 673:

              // FIXME(mliedtke): Should we repeat the same testing for async generator
              // functions as for the synchronous ones?

            • Can we just assume that it's pretty much the same + promises? […]

              Should be fine.

            • This doesn't make any sense as the third parameter should be an object e.g. with a value element. […]

              Not throwing is correct here.
              `Reflect.defineProperty` performs `ToPropertyDescriptor` on the third argument, which carefully checks with `has` whether `value` etc exist before accessing them. We expect that [[Has]] returns `false` (without throwing) for Wasm objects, so passing `wasm_obj` here is indeed equivalent to passing an empty object `{}`.
              You can include a summary of this explanation in the comment.
              (See https://tc39.es/ecma262/#sec-topropertydescriptor .)

            • An alternative would be to fail early and preventing to install a wasm object as a handler. […]

              I think allowing Wasm objects as Proxy targets is fine.

            • Patch Set #15, Line 761:

              // TODO(mliedtke): What about `export {struct, array}`?
              // d8 doesn't seem to accept exports (as the file isn't a module?)

              Is there a simple way to test importing/exporting?

            • d8 supports modules. See test/mjsunit/modules-* for inspiration. (And do it in a follow-up CL 😊)

          • File test/mjsunit/wasm/gc-js-interop.js:

            • Patch Set #20, Line 12:

              {
              wasm_obj.foo = 42;
              }

              nit: didn't you find these prettier when they were one-liners? The joys of code formatting!
              (You may keep them as they are if you wish.)

            • Patch Set #20, Line 62: ==

              also interesting: `assertFalse(2 === wasm_obj)`
              and `assertFalse({} === wasm_obj)`

          To view, visit change 3879616. To unsubscribe, or for help writing mail filters, visit settings.

          Gerrit-Project: v8/v8
          Gerrit-Branch: main
          Gerrit-Change-Id: If0dc368f99d4097e3eaf53edde4e244e3081e334
          Gerrit-Change-Number: 3879616
          Gerrit-PatchSet: 21
          Gerrit-Owner: Matthias Liedtke <mlie...@chromium.org>
          Gerrit-Reviewer: Jakob Kummerow <jkum...@chromium.org>
          Gerrit-Reviewer: Matthias Liedtke <mlie...@chromium.org>
          Gerrit-Attention: Matthias Liedtke <mlie...@chromium.org>
          Gerrit-Comment-Date: Thu, 15 Sep 2022 18:25:14 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: Yes

          Matthias Liedtke (Gerrit)

          unread,
          Sep 16, 2022, 8:14:45 AM9/16/22
          to was...@google.com, Jakob Kummerow, V8 LUCI CQ, v8-re...@googlegroups.com

          Attention is currently required from: Jakob Kummerow.

          Patch set 22:Commit-Queue +1

          View Change

          21 comments:

          • File src/objects/js-objects-inl.h:

            • Patch Set #20, Line 105:

              isolate->Throw(*isolate->factory()->NewTypeError(
              MessageTemplate::kWasmObjectsAreOpaque));
              return {};

            • ``` […]

              Done

          • File src/objects/js-objects.cc:

            • Patch Set #20, Line 152:

              case LookupIterator::WASM_OBJECT:
              it->NotFound();
              return it->isolate()->factory()->undefined_value();

              nit: this is the same as the JSPROXY case, so you could combine it with that.

            • Done

            • Patch Set #20, Line 5159:

              if (value->IsWasmObject()) {
              RETURN_FAILURE(isolate, should_throw,
              NewTypeError(MessageTemplate::kWasmObjectsAreOpaque));
              }

            • I'm not convinced that we should throw at this point. […]

              As this requires some more changes to some of the prototype handling, I'll address this in another CL, so we can follow-up on it independently of this CL.

          • File test/mjsunit/wasm/gc-js-interop-async.js:

            • Patch Set #21, Line 29: assertTrue(False)

              nit: I think you mean `assertUnreachable()`. `False` is a Python-ism, or a `ReferenceError` in JS.

            • Done

            • Done

            • Done

          • File test/mjsunit/wasm/gc-js-interop-collections.js:

          • File test/mjsunit/wasm/gc-js-interop-global-constructors.js:

            • Done

            • Done

            • Done

          • File test/mjsunit/wasm/gc-js-interop-helpers.js:

            • You don't need this if you add a SKIP line to mjsunit.status. […]

              Done

            • nit: this nested function doesn't really accomplish anything, so just inline it. […]

              Done

          • File test/mjsunit/wasm/gc-js-interop-numeric.js:

            • Done

          • File test/mjsunit/wasm/gc-js-interop-objects.js:

            • Done

            • Patch Set #21, Line 91:

              repeated(() => assertTrue(Reflect.defineProperty(obj, 'prop', wasm_obj)));
              repeated(() => assertTrue(obj.hasOwnProperty('prop')));
              repeated(() => assertEquals(undefined, obj.prop));
              repeated(
              () => assertTrue(
              Reflect.defineProperty(obj, 'prop2', {value: wasm_obj})));
              repeated(() => assertSame(wasm_obj, obj.prop2));

            • nit: in the few cases where you have sequences of operations that build on each other's effects, it […]

              Done

            • Is there a reason this isn't `repeated(... […]

              Done

          • File test/mjsunit/wasm/gc-js-interop.js:

            • Patch Set #15, Line 40:

                // TODO(7748): This assertion doesn't hold true, as some cases run into
              // deopt loops.
              // assertTrue(%ActiveTierIsTurbofan(fn));

            • Not very much. […]

              Done

            • I don't mind either way. It's fine to drop them. […]

              Back then I decided not to do it mainly for readability and simplicity and I still feel inclined not to do it.

            • Not throwing is correct here. […]

              Done, thanks for the explanation. 😊

          • File test/mjsunit/wasm/gc-js-interop.js:

            • nit: didn't you find these prettier when they were one-liners? The joys of code formatting! […]

              Done

            • also interesting: `assertFalse(2 === wasm_obj)` […]

              Done

          To view, visit change 3879616. To unsubscribe, or for help writing mail filters, visit settings.

          Gerrit-Project: v8/v8
          Gerrit-Branch: main
          Gerrit-Change-Id: If0dc368f99d4097e3eaf53edde4e244e3081e334
          Gerrit-Change-Number: 3879616
          Gerrit-PatchSet: 22
          Gerrit-Owner: Matthias Liedtke <mlie...@chromium.org>
          Gerrit-Reviewer: Jakob Kummerow <jkum...@chromium.org>
          Gerrit-Reviewer: Matthias Liedtke <mlie...@chromium.org>
          Gerrit-Attention: Jakob Kummerow <jkum...@chromium.org>
          Gerrit-Comment-Date: Fri, 16 Sep 2022 12:14:35 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: Yes
          Comment-In-Reply-To: Jakob Kummerow <jkum...@chromium.org>

          Jakob Kummerow (Gerrit)

          unread,
          Sep 16, 2022, 8:28:50 AM9/16/22
          to Matthias Liedtke, was...@google.com, Jakob Kummerow, V8 LUCI CQ, v8-re...@googlegroups.com

          Attention is currently required from: Matthias Liedtke.

          Patch set 22:Code-Review +1

          View Change

            To view, visit change 3879616. To unsubscribe, or for help writing mail filters, visit settings.

            Gerrit-Project: v8/v8
            Gerrit-Branch: main
            Gerrit-Change-Id: If0dc368f99d4097e3eaf53edde4e244e3081e334
            Gerrit-Change-Number: 3879616
            Gerrit-PatchSet: 22
            Gerrit-Owner: Matthias Liedtke <mlie...@chromium.org>
            Gerrit-Reviewer: Jakob Kummerow <jkum...@chromium.org>
            Gerrit-Reviewer: Matthias Liedtke <mlie...@chromium.org>
            Gerrit-Attention: Matthias Liedtke <mlie...@chromium.org>
            Gerrit-Comment-Date: Fri, 16 Sep 2022 12:28:40 +0000

            Matthias Liedtke (Gerrit)

            unread,
            Sep 16, 2022, 8:31:36 AM9/16/22
            to was...@google.com, Jakob Kummerow, V8 LUCI CQ, v8-re...@googlegroups.com

            Patch set 22:Commit-Queue +2

            View Change

              To view, visit change 3879616. To unsubscribe, or for help writing mail filters, visit settings.

              Gerrit-Project: v8/v8
              Gerrit-Branch: main
              Gerrit-Change-Id: If0dc368f99d4097e3eaf53edde4e244e3081e334
              Gerrit-Change-Number: 3879616
              Gerrit-PatchSet: 22
              Gerrit-Owner: Matthias Liedtke <mlie...@chromium.org>
              Gerrit-Reviewer: Jakob Kummerow <jkum...@chromium.org>
              Gerrit-Reviewer: Matthias Liedtke <mlie...@chromium.org>
              Gerrit-Comment-Date: Fri, 16 Sep 2022 12:31:27 +0000

              Matthias Liedtke (Gerrit)

              unread,
              Sep 16, 2022, 11:13:00 AM9/16/22
              to was...@google.com, Jakob Kummerow, V8 LUCI CQ, v8-re...@googlegroups.com

              Attention is currently required from: Jakob Kummerow.

              Patch set 23:Commit-Queue +1

              View Change

                To view, visit change 3879616. To unsubscribe, or for help writing mail filters, visit settings.

                Gerrit-Project: v8/v8
                Gerrit-Branch: main
                Gerrit-Change-Id: If0dc368f99d4097e3eaf53edde4e244e3081e334
                Gerrit-Change-Number: 3879616
                Gerrit-PatchSet: 23
                Gerrit-Owner: Matthias Liedtke <mlie...@chromium.org>
                Gerrit-Reviewer: Jakob Kummerow <jkum...@chromium.org>
                Gerrit-Reviewer: Matthias Liedtke <mlie...@chromium.org>
                Gerrit-Attention: Jakob Kummerow <jkum...@chromium.org>
                Gerrit-Comment-Date: Fri, 16 Sep 2022 15:12:48 +0000

                Matthias Liedtke (Gerrit)

                unread,
                Sep 16, 2022, 12:36:08 PM9/16/22
                to was...@google.com, Jakob Kummerow, V8 LUCI CQ, v8-re...@googlegroups.com

                Attention is currently required from: Jakob Kummerow.

                Patch set 24:Commit-Queue +1

                View Change

                  To view, visit change 3879616. To unsubscribe, or for help writing mail filters, visit settings.

                  Gerrit-Project: v8/v8
                  Gerrit-Branch: main
                  Gerrit-Change-Id: If0dc368f99d4097e3eaf53edde4e244e3081e334
                  Gerrit-Change-Number: 3879616
                  Gerrit-PatchSet: 24
                  Gerrit-Owner: Matthias Liedtke <mlie...@chromium.org>
                  Gerrit-Reviewer: Jakob Kummerow <jkum...@chromium.org>
                  Gerrit-Reviewer: Matthias Liedtke <mlie...@chromium.org>
                  Gerrit-Attention: Jakob Kummerow <jkum...@chromium.org>
                  Gerrit-Comment-Date: Fri, 16 Sep 2022 16:35:57 +0000

                  Jakob Kummerow (Gerrit)

                  unread,
                  Sep 16, 2022, 1:42:26 PM9/16/22
                  to Matthias Liedtke, was...@google.com, Nico Hartmann, Jakob Kummerow, V8 LUCI CQ, v8-re...@googlegroups.com

                  Attention is currently required from: Matthias Liedtke, Nico Hartmann.

                  Patch set 24:Code-Review +1

                  View Change

                  1 comment:

                  To view, visit change 3879616. To unsubscribe, or for help writing mail filters, visit settings.

                  Gerrit-Project: v8/v8
                  Gerrit-Branch: main
                  Gerrit-Change-Id: If0dc368f99d4097e3eaf53edde4e244e3081e334
                  Gerrit-Change-Number: 3879616
                  Gerrit-PatchSet: 24
                  Gerrit-Owner: Matthias Liedtke <mlie...@chromium.org>
                  Gerrit-Reviewer: Jakob Kummerow <jkum...@chromium.org>
                  Gerrit-Reviewer: Matthias Liedtke <mlie...@chromium.org>
                  Gerrit-Reviewer: Nico Hartmann <nicoha...@chromium.org>
                  Gerrit-Attention: Nico Hartmann <nicoha...@chromium.org>
                  Gerrit-Attention: Matthias Liedtke <mlie...@chromium.org>
                  Gerrit-Comment-Date: Fri, 16 Sep 2022 17:42:14 +0000
                  Gerrit-HasComments: Yes
                  Gerrit-Has-Labels: Yes
                  Gerrit-MessageType: comment

                  Nico Hartmann (Gerrit)

                  unread,
                  Sep 19, 2022, 6:13:00 AM9/19/22
                  to Matthias Liedtke, was...@google.com, Jakob Kummerow, V8 LUCI CQ, v8-re...@googlegroups.com

                  Attention is currently required from: Matthias Liedtke.

                  Patch set 24:Code-Review +1

                  View Change

                  1 comment:

                  To view, visit change 3879616. To unsubscribe, or for help writing mail filters, visit settings.

                  Gerrit-Project: v8/v8
                  Gerrit-Branch: main
                  Gerrit-Change-Id: If0dc368f99d4097e3eaf53edde4e244e3081e334
                  Gerrit-Change-Number: 3879616
                  Gerrit-PatchSet: 24
                  Gerrit-Owner: Matthias Liedtke <mlie...@chromium.org>
                  Gerrit-Reviewer: Jakob Kummerow <jkum...@chromium.org>
                  Gerrit-Reviewer: Matthias Liedtke <mlie...@chromium.org>
                  Gerrit-Reviewer: Nico Hartmann <nicoha...@chromium.org>
                  Gerrit-Attention: Matthias Liedtke <mlie...@chromium.org>
                  Gerrit-Comment-Date: Mon, 19 Sep 2022 10:12:52 +0000

                  Matthias Liedtke (Gerrit)

                  unread,
                  Sep 19, 2022, 6:46:29 AM9/19/22
                  to was...@google.com, Nico Hartmann, Jakob Kummerow, V8 LUCI CQ, v8-re...@googlegroups.com

                  Patch set 24:Commit-Queue +2

                  View Change

                    To view, visit change 3879616. To unsubscribe, or for help writing mail filters, visit settings.

                    Gerrit-Project: v8/v8
                    Gerrit-Branch: main
                    Gerrit-Change-Id: If0dc368f99d4097e3eaf53edde4e244e3081e334
                    Gerrit-Change-Number: 3879616
                    Gerrit-PatchSet: 24
                    Gerrit-Owner: Matthias Liedtke <mlie...@chromium.org>
                    Gerrit-Reviewer: Jakob Kummerow <jkum...@chromium.org>
                    Gerrit-Reviewer: Matthias Liedtke <mlie...@chromium.org>
                    Gerrit-Reviewer: Nico Hartmann <nicoha...@chromium.org>
                    Gerrit-Comment-Date: Mon, 19 Sep 2022 10:46:17 +0000

                    V8 LUCI CQ (Gerrit)

                    unread,
                    Sep 19, 2022, 7:26:32 AM9/19/22
                    to Matthias Liedtke, was...@google.com, Nico Hartmann, Jakob Kummerow, v8-re...@googlegroups.com

                    V8 LUCI CQ submitted this change.

                    View Change


                    Approvals: Nico Hartmann: Looks good to me Matthias Liedtke: Commit Jakob Kummerow: Looks good to me
                    [wasm-gc] Basic JS interop handling for wasm objects

                    This change tests all JavaScript language constructs and builtins in
                    combination with the unwrapped Wasm objects.
                    For JavaScript, excluding some basic introspection (e.g.
                    `Object.isExtensible`) WebAssembly GC objects are treated opaque.
                    They can be passed around freely but don't allow any access to
                    properties, elements etc.

                    This behavior is currently exposed only if the `wasm-gc-js-interop`
                    flag is set.

                    Bug: v8:7748
                    Change-Id: If0dc368f99d4097e3eaf53edde4e244e3081e334
                    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3879616
                    Reviewed-by: Jakob Kummerow <jkum...@chromium.org>
                    Reviewed-by: Nico Hartmann <nicoha...@chromium.org>
                    Commit-Queue: Matthias Liedtke <mlie...@chromium.org>
                    Cr-Commit-Position: refs/heads/main@{#83299}
                    ---
                    M src/builtins/base.tq
                    M src/builtins/promise-resolve.tq
                    M src/builtins/reflect.tq
                    M src/compiler/types.cc
                    M src/objects/js-objects-inl.h
                    M src/objects/js-objects.cc
                    M src/runtime/runtime-object.cc
                    M test/mjsunit/mjsunit.status
                    A test/mjsunit/wasm/gc-js-interop-async.js
                    A test/mjsunit/wasm/gc-js-interop-collections.js
                    A test/mjsunit/wasm/gc-js-interop-global-constructors.js
                    A test/mjsunit/wasm/gc-js-interop-helpers.js
                    A test/mjsunit/wasm/gc-js-interop-numeric.js
                    A test/mjsunit/wasm/gc-js-interop-objects.js
                    A test/mjsunit/wasm/gc-js-interop-wasm.js
                    M test/mjsunit/wasm/gc-js-interop.js
                    16 files changed, 1,063 insertions(+), 86 deletions(-)


                    To view, visit change 3879616. To unsubscribe, or for help writing mail filters, visit settings.

                    Gerrit-Project: v8/v8
                    Gerrit-Branch: main
                    Gerrit-Change-Id: If0dc368f99d4097e3eaf53edde4e244e3081e334
                    Gerrit-Change-Number: 3879616
                    Gerrit-PatchSet: 25
                    Gerrit-Owner: Matthias Liedtke <mlie...@chromium.org>
                    Gerrit-Reviewer: Jakob Kummerow <jkum...@chromium.org>
                    Gerrit-Reviewer: Matthias Liedtke <mlie...@chromium.org>
                    Gerrit-Reviewer: Nico Hartmann <nicoha...@chromium.org>
                    Gerrit-MessageType: merged
                    Reply all
                    Reply to author
                    Forward
                    0 new messages