• mtrofin's avatar
    Reland of [wasm] Transferrable modules (patchset #1 id:1 of... · 9dfa4639
    mtrofin authored
    Reland of [wasm] Transferrable modules (patchset #1 id:1 of https://codereview.chromium.org/2762163002/ )
    
    Reason for revert:
    Temporarily disabled tests on chromium side (https://codereview.chromium.org/2764933002)
    
    Original issue's description:
    > Revert of [wasm] Transferrable modules (patchset #13 id:280001 of https://codereview.chromium.org/2748473004/ )
    >
    > Reason for revert:
    > Breaks layout tests:
    > https://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Linux%2064/builds/14312
    >
    > See https://github.com/v8/v8/wiki/Blink-layout-tests
    >
    > Original issue's description:
    > > [wasm] Transferrable modules
    > >
    > > We want to restrict structured cloning in Chrome to:
    > > - postMessage senders and receivers that are co-located
    > > in the same process
    > > - indexedDB (just https).
    > >
    > > For context, on the Chrome side, we will achieve the postMessage part
    > > by using a mechanism similar to transferrables: the
    > > SerializedScriptValue will have a list of wasm modules, separate from
    > > the serialized data stream; and this list won't be copied cross
    > > process boundaries. The IDB part is achieved by explicitly opting in
    > > reading/writing to the serialization stream. To block attack vectors
    > > in IPC cases, the default for deserialization will be to expect data
    > > in the wasm transfers list.
    > >
    > > This change is the V8 side necessary to enabling this design. We
    > > introduce TransferrableModule, an opaque datatype exposed to the
    > > embedder. Internally, TransferrableModules are just serialized data,
    > > because we don't have a better mechanism, at the moment, for
    > > de-contextualizing/re-contextualizing wasm modules (wrt Isolate and
    > > Context).
    > >
    > > The chrome defaults will be implemented in the
    > > serialization/deserialization delegates on that side. For the v8 side
    > > of things, in the absence of a serialization delegate, the V8
    > > serializer will write to serialization stream. In the absence of a
    > > deserialization delegate, the deserializer won't work. This asymmetry
    > > is intentional - it communicates to the embedder the need to make a
    > > policy decision, otherwise wasm serialization/deserialization won't
    > > work "out of the box".
    > >
    > > BUG=v8:6079
    > >
    > > Review-Url: https://codereview.chromium.org/2748473004
    > > Cr-Commit-Position: refs/heads/master@{#43955}
    > > Committed: https://chromium.googlesource.com/v8/v8/+/99743ad460ea5b9795ba9d70a074e75d7362a3d1
    >
    > TBR=jbroman@chromium.org,bradnelson@chromium.org,mtrofin@chromium.org
    > # Skipping CQ checks because original CL landed less than 1 days ago.
    > NOPRESUBMIT=true
    > NOTREECHECKS=true
    > NOTRY=true
    > BUG=v8:6079
    >
    > Review-Url: https://codereview.chromium.org/2762163002
    > Cr-Commit-Position: refs/heads/master@{#43981}
    > Committed: https://chromium.googlesource.com/v8/v8/+/e538b70e1a45289dfe0fa9789563f023a5e9c22b
    
    TBR=jbroman@chromium.org,bradnelson@chromium.org,machenbach@chromium.org
    # Skipping CQ checks because original CL landed less than 1 days ago.
    NOPRESUBMIT=true
    NOTREECHECKS=true
    NOTRY=true
    BUG=v8:6079
    
    Review-Url: https://codereview.chromium.org/2762273002
    Cr-Commit-Position: refs/heads/master@{#43994}
    9dfa4639
value-serializer.cc 70.7 KB