- 16 Dec, 2021 1 commit
-
-
Manos Koukoutos authored
We switch the order of inlining and loop unrolling optimizations. This gives small improvements to wasm-gc benchmarks. Changes: - Change the loop analysis algorithm to accept loops directly connected to the graph's end. This is required because some nodes in an inlined function, such as tail calls, might be directly connected to the outer function's end without an intervening LoopExit node. - Based on the above, skip emitting loop exits for some Throw nodes in WasmGraphBuildingInterface. - Introduce WasmInliningPhase, add it before loop unrolling. Remove inlining from WasmOptimizationPhase. - Handle graph terminators in loop unrolling. - Add loops in the inlined function to the callers loop_infos. Drive-by: - Allow more wasm builtins in unrolled loops. - Reduce inlining parameters to reflect that functions are now slightly smaller during inlining, as no unrolling has taken place yet. Bug: v8:12166 Change-Id: Iadd6b2f75170aa153ca1efb47fbb0d185c2b8371 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3329783Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#78394}
-
- 14 Dec, 2021 1 commit
-
-
Andreas Haas authored
R=jkummerow@chromium.org Bug: v8:12281 Change-Id: If00f34053bb970a71a1826010050b79557dbb381 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3338259Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/main@{#78371}
-
- 13 Dec, 2021 1 commit
-
-
Manos Koukoutos authored
Since the reftypes proposal has shipped, we remove the respective flag and the code that handled its absence. We maintain a WasmFeature for reftypes for feature detection purposes. We remove the flag declaration from tests, and adapt some tests that make no sense without the flag. Bug: v8:7581 Change-Id: Icf2f8d0feae8f30ec68d5560f1e7ee5959481483 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3329781Reviewed-by:
Andreas Haas <ahaas@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#78351}
-
- 10 Dec, 2021 1 commit
-
-
Andreas Haas authored
With a recent addition to the type reflection proposal, 'anyfunc' gets renamed to 'funcref'. For backwards compatibility, 'anyfunc' becomes an alias for 'funcref'. With this CL, the string 'funcref' can be used to create a funcref table or a funcref global. Additionally, 'funcref' is returned as the type of imported and exported functions as well as globals and tables. R=manoskouk@chromium.org Change-Id: If3ed4d507de862ebfcabd4eb967bbfaae1c6ccba Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3300135Reviewed-by:
Manos Koukoutos <manoskouk@chromium.org> Commit-Queue: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/main@{#78341}
-
- 09 Dec, 2021 1 commit
-
-
Manos Koukoutos authored
Design doc: bit.ly/36MfD6Y We introduce simplified operators LoadImmutableFromObject and InitializeImmutableInObject. These are lowered to Loads and Stores like LoadFromObject and StoreToObject. We split CsaLoadElimination::AbstractState in two HalfStates, which represent the mutable and immutable component of the state. Immutable operators in the effect chain modify the immutable half-state, and plain operators modify the mutable half-state. The immutable part is maintained through write effects and loop headers. Immutable initializations do not lookup and kill previous overlapping stores, assuming each offset cannot be initialized more than once. Bug: v8:11510 Change-Id: I0f5feca3354fdd3bdc1f511cc5214ec51e1407ad Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3268728Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#78325}
-
- 08 Dec, 2021 3 commits
-
-
Shu-yu Guo authored
This reverts commit cb9e8608. Reason for revert: Causing timeouts on Wasm tests on TSAN and also seems to cause some deadlock issue on shared isolate GC: https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux64%20TSAN%20-%20no-concurrent-marking/6847/overview Original change's description: > [wasm] Add --wasm-dynamic-tiering to --future > > R=jkummerow@chromium.org > > Bug: v8:12281 > Change-Id: Ic1a2534aef4b6335c068636ee4e3aa10300fca53 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3322767 > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> > Commit-Queue: Andreas Haas <ahaas@chromium.org> > Cr-Commit-Position: refs/heads/main@{#78309} Bug: v8:12281 Change-Id: Idf2bea0907daea645be922f0db776caa9dff07a3 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3325023 Auto-Submit: Shu-yu Guo <syg@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Cr-Commit-Position: refs/heads/main@{#78311}
-
Andreas Haas authored
R=jkummerow@chromium.org Bug: v8:12281 Change-Id: Ic1a2534aef4b6335c068636ee4e3aa10300fca53 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3322767Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/main@{#78309}
-
Thibaud Michaud authored
Treat all stack pointers as roots: - Maintain a global linked-list of StackMemories - Update StackFrameIterator to process inactive stacks - Visit roots in all inactive stacks (including root marking and root pointer updating). Drive-by: - Fix some issues uncovered by the test - Refactor the builtin constants R=mlippautz@chromium.org,ahaas@chromium.org Bug: v8:12191 Change-Id: I5b6381f9818166e2eabf80dd59135673dddb2afc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3310932Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/main@{#78291}
-
- 29 Nov, 2021 3 commits
-
-
Manos Koukoutos authored
--experimental-wasm-mv has been removed, and --wasm-loop-unrolling is on by default. Change-Id: I094870765031ef46fcec95e9071333e4e80f407b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3302805 Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/main@{#78140}
-
Manos Koukoutos authored
{WasmInternalFunction::external} might return a function that is not a WasmExportedFunction, at which point the code in ProcessTypeFeedback fails. See crrev.com/c/3277878 for context. Bug: v8:12436, v8:12166 Change-Id: I09ef96df3fc051586044dd9c2ce88d6aeeb34b9f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3306391Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#78139}
-
Manos Koukoutos authored
To trigger speculative inlining, a function needs to run a few times on Liftoff-tier, and then tier-up to Turbofan. We make sure this happens by enabling --wasm-dynamic-tiering with a small budget, and running the critical functions until {%IsLiftoffFunction} is false. We also add an additional test. Bug: v8:12166 Change-Id: I6c5e0d3f1e3ba0df8510ae6850d8e9af1d01c179 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3306372Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#78123}
-
- 26 Nov, 2021 1 commit
-
-
Manos Koukoutos authored
See crrev.com/c/3277878 for context. We should only transform extenral to internal function references when passing a function value to a function-typed global or table. For their externref counterparts, we should preserve the reference unchanged. Bug: v8:11510, chromium:1273705 Change-Id: Ic1719c4d31e175f3a37ced6e4e4dfcd61a19ae57 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3302790 Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/main@{#78108}
-
- 24 Nov, 2021 1 commit
-
-
Manos Koukoutos authored
Design doc: bit.ly/3jEVgzz We separate the internal representation of function references in Wasm from their JSFunction-based (external) representation. This improves performance of call_ref by requiring less indirections to load the context and call target from a function reference. In the boundary between wasm and JS/the C API, we add transformations between the two representations. Detailed changes: - Introduce WasmInternalFunction, containing fields required by call_ref, as well as a reference to the corresponding WasmExternalFunction. Add a reference to the WasmInternalFunction in WasmFunctionData. The {WasmInternalFunction::FromExternal} helper extracts the internal out of an external function. - Change {WasmInstanceObject::external_functions()} to internal functions. - Change wasm function tables to contain internal functions. - Change the following code to use internal functions: - call_ref in liftoff and Turbofan - function type checks in liftoff and Turbofan - CallRefIC and GenericJSToWasmWrapper builtins - {InitExprInterface::RefFunc} - module-compiler.cc in {ProcessTypeFeedback} - In module-instantiate.cc, in function-rtt creation. - Add transformations between internal and external functions in: - WasmWrapperGraphBuilder::{ToJS, BuildUnpackObjectWrapper, FromJS, BuildJSToJSWrapper}. - debug-wasm-objects.cc in {FunctionProxy::Get}, {WasmValueObject::New} and {AddWasmTableObjectInternalProperties}. - runtime-wasm.cc in ReplaceWrapper - the C and JS APIs - module-instantiate.cc, in import and export processing, as well as {InitializeIndirectFunctionTables} - WasmTableObject::{IsValidElement, SetFunctionTableEntry} - {WasmGlobalObject::SetFuncRef} - Simplify body descriptors of WasmExternalFunction variants. - Adjust tests. Bug: v8:11510 Change-Id: I8377f46f55c3771391ae1c5c8201a83854ee7878 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3277878Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#78068}
-
- 18 Nov, 2021 1 commit
-
-
Manos Koukoutos authored
We prevent unrolling of loops with indirect calls. We expand the set of permitted wasm builtins in unrolled loops. Bug: v8:11298 Change-Id: I70b8ff3b16d9b0d3a4ea2d103f8ffb74083fd2a9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3289152 Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/main@{#77965}
-
- 17 Nov, 2021 1 commit
-
-
Manos Koukoutos authored
On 32-bit architectures, we need to run Int64Lowering on the inlinee code to make it compatible with the caller code. Since Int64Lowering now runs while a GraphReducer is active, only one of them can use node marks to store node states. Therefore, we move the Int64Lowering node states to an internal map. Bug: v8:12166 Change-Id: I53b85442d503e71fa533e06568f4b9db572a4401 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3283072Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#77941}
-
- 15 Nov, 2021 2 commits
-
-
Manos Koukoutos authored
The stored value might be an allocation that can be removed once the Store node is removed. We need to revisit this node manually because inputs in a node removed with ReplaceWithValue are not revisited automatically. Bug: v8:11510 Change-Id: I57cb8955a3e2f7143474ad7ced9d946e6d1cc18e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3277880Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#77899}
-
Manos Koukoutos authored
In each wasm CallDescriptor, we store the signature of the call based on the real parameters passed to the call. This signature is more precise than the formal function signature. We use this signature in inlining to enable more optimizations. Changes: - Add wasm_sig_ field to CallDescriptor. - Construct the real signature in {DoCall} and {DoReturnCall} in graph-builder-interface, and pass it to all call-related functions in WasmGraphBuilder. - Update {ReplaceTypeInCallDescriptorWith} to use ValueType over MachineType. Construct the updated function signature. - In wasm-inlining, kill the Call node after inlining. - Add two tests. Bug: v8:11510 Change-Id: Ica711b6b4d83945ecb7201be26577eab7db3c060 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3270539Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#77889}
-
- 12 Nov, 2021 1 commit
-
-
Jakob Kummerow authored
FLAG_wasm_dynamic_tiering is still off by default. When enabled, it now uses the technique previously behind --new-wasm-dynamic-tiering. Bug: v8:12281 Change-Id: I365c2c066e62418cd6abc7830f95d1fe0f950e33 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3275570 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/main@{#77883}
-
- 11 Nov, 2021 1 commit
-
-
Manos Koukoutos authored
Changes: - Enable allocation folding for wasm-gc graphs. - Improve structure of wasm escape analysis code. Kill dead nodes. - Revisit object node after eliminating a load or a store to that node. - Add a couple of tests, rename one test file. Bug: v8:11510 Change-Id: I8b3c5186cd0a8827744a05eba366ff79bc7bc975 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3264215Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#77840}
-
- 05 Nov, 2021 2 commits
-
-
Thibaud Michaud authored
R=ahaas@chromium.org CC=fgm@chromium.org Bug: v8:12191 Change-Id: I415c4488262a97cf04b71fd8e96071c7bff972cf Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3231337Reviewed-by:
Andreas Haas <ahaas@chromium.org> Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/main@{#77740}
-
Thibaud Michaud authored
R=ahaas@chromium.org Bug: v8:12191 Change-Id: I15a5507a7dd0f02a3bbe9d3ce200206adf4d4539 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3231075 Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/main@{#77734}
-
- 04 Nov, 2021 1 commit
-
-
Andreas Haas authored
The wasm serialization format only contains TurboFan code. All other functions are only represented by placeholders. With this CL serialization fails if the serialized module does not contain any TurboFan functions and would therefore consist only of placeholders. This is a defense in depth approach, because ideally serialization only gets triggered when TurboFan code is available. However, in some scenarios like debugging it can happen that modules without TurboFan code get serialized. Bug: v8:12281 Change-Id: Ib05430ff89eb2317da80fc0d086ce1d7ab0e919d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3212510 Commit-Queue: Andreas Haas <ahaas@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/main@{#77715}
-
- 26 Oct, 2021 1 commit
-
-
Thibaud Michaud authored
R=ahaas@chromium.org CC=fgm@chromium.org Bug: v8:12191 Change-Id: Ied9ab5fa5009e5ab268d1c9893729d8210ae62ce Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3220344 Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/main@{#77542}
-
- 18 Oct, 2021 1 commit
-
-
Manos Koukoutos authored
This CL improves wasm inlining heuristics in Turbofan, for an average 8,5% performance improvement in selected benchmarks. Changes: - In WasmInliner::Reduce(), only collect inlining candidates into a priority queue, according to WasmInliner::LexicographicOrdering. Move actual inlining to Finalize(). - Remove the InlineFirstFew heuristic. Add two limits to inlining: Maximum relative size increase (reversely proportional to the function size), and absolute size increase. - Pass information about call frequency from liftoff-collected feedback to the WasmInliner though the wasm module. - Run wasm inlining along other optimizations in the pipeline. - Split inlining and speculative inlining tests. Bug: v8:7748, v8:12166 Change-Id: Iccee22093db765981889a24451fb458dfce1f1a6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3222764Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#77428}
-
- 14 Oct, 2021 1 commit
-
-
Jakob Kummerow authored
Since we introduced `array.init` as a way to create fully initialized arrays, immutable arrays are no longer useless, and they enable certain static optimizations, so this patch allows them. Bug: v8:7748 Change-Id: I404aab60099826f4bd83cf54e5e1acbc38a3ca9b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3221151 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#77397}
-
- 04 Oct, 2021 1 commit
-
-
Clemens Backes authored
This reenables a test which is passing, independent of missing accounting for shared memory. This is because we repeatedly trigger a GC explicitly in all workers. R=dinfuehr@chromium.org Bug: v8:12278 Change-Id: I73d1513d809787284af0be4956018806719acd50 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3201995Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/main@{#77219}
-
- 30 Sep, 2021 3 commits
-
-
Manos Koukoutos authored
Loop exits are only used during loop unrolling and are then removed, as they cannot be handled by later optimization stages. Since unrolling comes before inlining in the compilation pipeline, we should not emit loop exits in inlined functions. Bug: v8:12166 Change-Id: I28b3ebaf67c9e15b127eeb1a63906c4ecfd77480 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3195871Reviewed-by:
Clemens Backes <clemensb@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#77175}
-
Clemens Backes authored
The test allocates a lot of wasm memories. This got a low slower after https://crrev.com/c/3190476, because we can now allocate more than 102 memories, and do not explicitly trigger a GC any more to get rid of unused memories. We should figure out how to tell the GC about the external memory such that the memories get collected earlier. R=ahaas@chromium.org Bug: v8:12076, v8:12278 Change-Id: I9b8795a9999a806380d86f22e751de2727942648 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3196131Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/main@{#77164}
-
Clemens Backes authored
The address space limit puts an arbitrary cap on the total reservation size, thus limiting the total number of Wasm memories to around 100 on 64-bit systems. Since the usable address space on 64 bit is much larger than the 1TB+4GB limit, this makes us reject code that we could otherwise just execute. This CL thus removes that limit completely. See the linked issue for more discussion, including security considerations. R=jkummerow@chromium.org, rsesek@chromium.org Bug: v8:12076 Change-Id: I1f61511d68efdab1f8cef4e09c0a39fc1d6fed60 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3190476Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/main@{#77161}
-
- 22 Sep, 2021 1 commit
-
-
Andreas Haas authored
See https://github.com/WebAssembly/js-types/blob/main/document/js-api/index.bs#L866 R=manoskouk@chromium.org Bug: v8:12227 Change-Id: I384483a7568d37c40d077487165ff9b1761da342 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3172768Reviewed-by:
Manos Koukoutos <manoskouk@chromium.org> Commit-Queue: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/main@{#76995}
-
- 21 Sep, 2021 3 commits
-
-
Andreas Haas authored
The function index encoded into the serialized module is already offset by num_imported_functions. For lazy compilation, however, we added the number of imported functions another time, which was incorrect. R=clemensb@chromium.org Change-Id: I56380e21e74b4d1935ebdbab6ef8cc388de49f2c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3172761 Commit-Queue: Andreas Haas <ahaas@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/main@{#76965}
-
Andreas Haas authored
Spec tests were fixed in the meantime. R=ecmziegler@chromium.org Bug: v8:7581 Change-Id: If8e192ea94f9908ec469ebd5ccd876f51e4ea6f3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3167492 Commit-Queue: Andreas Haas <ahaas@chromium.org> Reviewed-by:
Emanuel Ziegler <ecmziegler@chromium.org> Cr-Commit-Position: refs/heads/main@{#76960}
-
Andreas Haas authored
This CL sets the prototype for the other WebAssembly API objects, Module, Instance, Table, and Memory. For Instance, the WebAssemblyInstanceImpl function got inlined, as there was only one caller, and it made setting the prototype complicated. R=jkummerow@chromium.org Bug: v8:12227 Change-Id: I93b459d69b917b099b27f957fb0e04b7e021bd59 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3168282 Commit-Queue: Andreas Haas <ahaas@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/main@{#76954}
-
- 20 Sep, 2021 1 commit
-
-
Manos Koukoutos authored
Bug: v8:7748 Change-Id: I5b6d8bf0b6dbf88c4762f4d61fb468c3e2898201 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3168621Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#76927}
-
- 17 Sep, 2021 3 commits
-
-
Andreas Haas authored
This fixes the first part of a failing spec test, the other WebAssembly objects will follow in other CLs. R=jkummerow@chromium.org Bug: v8:12227 Change-Id: I7b57b0c518671f0614a88f0477b64e2507435aba Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3168272 Commit-Queue: Andreas Haas <ahaas@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/main@{#76907}
-
Andreas Haas authored
An initial value for Table.grow is supported by the core spec and does not depend on a proposal, see [1]. [1] https://webassembly.github.io/spec/js-api/index.html#tables R=thibaudm@chromium.org Bug: v8:12227 Change-Id: Ia4f16adc76a0422b2211c069614929a1a70afa76 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3164979Reviewed-by:
Thibaud Michaud <thibaudm@chromium.org> Commit-Queue: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/main@{#76905}
-
Andreas Haas authored
The default value for table entries in WebAssembly tables is null when the table gets allocated from WebAssembly, but when the table gets allocated from JavaScript, the default value is undefined when the table type is externref. With this CL V8 handles the JavaScript case spec-compliant. R=manoskouk@chromium.org Bug: v8:12227 Change-Id: Ic8a1361629d8e5dfb59e2ee22a5e0ae0f6de936d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3162045 Commit-Queue: Andreas Haas <ahaas@chromium.org> Reviewed-by:
Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#76892}
-
- 16 Sep, 2021 3 commits
-
-
Manos Koukoutos authored
Behind the --wasm-inlining flag, we introduce speculative direct calls as an alternative to invoking functions through references. In pseudocode, call_ref(func_ref, args...) reduces to if (func_ref == function_reference_at(expected_index)) { call_direct(expected_index, args...) } else call_ref(func_ref, args...) The introduced direct call can later get inlined in WasmInliningPhase. Currently, we always speculate that the reference is the function at index 0. Proper heuristics, based on liftoff runtime feedback, will come later. Bug: v8:12166, v8:7748 Change-Id: Icd1319d3091b436e71906717fd8a2662bfbb8481 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3162602 Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/main@{#76884}
-
Andreas Haas authored
Reason for revert: There was an out-dated wpt test in blink that failed after this CL. I adjusted the test expectations in https://chromium-review.googlesource.com/c/chromium/src/+/3162980 so that I can land this CL. Original change's description: > Revert "[wasm][externref] Support default value for the table.set" > > This reverts commit 6b578980. > > Reason for revert: Fails layout tests: https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Blink%20Linux/13751/overview > > Original change's description: > > [wasm][externref] Support default value for the table.set > > > > WebAssembly.Table.set allows a default value instead of the second > > parameter, which was not supported by V8 so far. > > > > R=thibaudm@chromium.org > > > > Bug: v8:7581 > > Change-Id: I417790722b1cb4f854cd0056ecb8377c330c45fa > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3141574 > > Reviewed-by: Thibaud Michaud <thibaudm@chromium.org> > > Commit-Queue: Andreas Haas <ahaas@chromium.org> > > Cr-Commit-Position: refs/heads/main@{#76846} > > Bug: v8:7581 > Change-Id: I83d9be59c66ece3184b5708e5b8a3b401e4938ed > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3163257 > Auto-Submit: Clemens Backes <clemensb@chromium.org> > Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> > Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> > Cr-Commit-Position: refs/heads/main@{#76852} Bug: v8:7581 Change-Id: I248f836ba4de2a4e3f3d80c00e6f1ac0b46a38d7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3162608 Commit-Queue: Andreas Haas <ahaas@chromium.org> Reviewed-by:
Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/main@{#76873}
-
Andreas Haas authored
R=thibaudm@chromium.org Bug: v8:12227 Change-Id: If10683be63beb32c658d2dfaac0a07d858c472ba Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3162038 Commit-Queue: Andreas Haas <ahaas@chromium.org> Reviewed-by:
Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/main@{#76871}
-