- 17 Feb, 2022 1 commit
-
-
Thibaud Michaud authored
Use the existing generic js-to-wasm wrapper to handle arguments in the stack-switching export wrapper, by combining them into a single helper function parameterized by a boolean. If the stack_switch parameter is false, the generated js-to-wasm wrapper is the same as before. If the stack_switch parameter is true, we allocate and switch to the new stack before starting to process the parameters. To load the parameters, we also keep a pointer to the old stack. After the call, we convert the return value according to the return type as usual, and then switch back to the parent stack (which may be different than the original stack, but has a compatible stack frame layout). If the stack suspends during the call, control-flow jumps right before we deconstruct and leave the frame, and returns the Promise as an externref in the return register. R=ahaas@chromium.org,jkummerow@chromium.org CC=fgm@chromium.org Bug: v8:12191 Change-Id: If3f8eaba8edebe6e98d4738f79f895fdb5322adc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3460410Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/main@{#79148}
-
- 15 Feb, 2022 1 commit
-
-
Thibaud Michaud authored
Split small chunks of assembly instructions into separate functions. This makes the code easier to follow and to maintain, especially for register allocation. Drive-by: simplify stack-switching test. R=ahaas@chromium.org Bug: v8:12191 Change-Id: Id7544a3b2d16085540d9f1863a0eabd1f72f22bb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3461929Reviewed-by:
Andreas Haas <ahaas@chromium.org> Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/main@{#79105}
-
- 07 Feb, 2022 2 commits
-
-
Thibaud Michaud authored
Currently, the stack-switching import wrapper always suspends. Only suspend if the returned value is a promise, otherwise just convert and return the value back to wasm. R=ahaas@chromium.org CC=fgm@chromium.org Bug: v8:12191 Change-Id: I26e7a3921aeae30fcce7f0ccc98d790a1a6f8c35 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3440655Reviewed-by:
Andreas Haas <ahaas@chromium.org> Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/main@{#78980}
-
Thibaud Michaud authored
- Suspender.suspendOnReturnedPromise expects a function with type [ti*]->[externref] and returns a function with the same type. - Suspender.returnPromiseOnSuspend expects a function with type [ti*]->[to] and returns a function with type [ti*]->[externref]. Changes: - Check the wrapped function's return types - Skip type checking of return types when importing a wrapper (and assert that the return type is externref) - Add special case for WebAssembly.Function.type of a WasmExportedFunction: it currently returns the signature declared by the module. Change the return type to externref if this is a stack-switching export. Bug: v8:12191 Change-Id: I6619c306e9613825ad1b021cb3400d73cd684656 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3435190Reviewed-by:
Andreas Haas <ahaas@chromium.org> Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/main@{#78973}
-
- 03 Feb, 2022 1 commit
-
-
Thibaud Michaud authored
This is a reland of f942f656 Changes: Change the order of initialization for wasm continuations to ensure object integrity if a GC happens during allocation. Also add missing handles. Original change's description: > Reland "[wasm] Resume suspender on resolved promise" > > This is a reland of a865d16b > > Changes: > - Make the next ID atomic > - Leave more space for runtime calls in debug mode > > Original change's description: > > [wasm] Resume suspender on resolved promise > > > > Implement the WasmResume builtin, which resumes a wasm suspender > > when the corresponding JS promise resolves. > > > > Drive-by 1: Fix detection of empty stacks in the stack frame iterator. > > Drive-by 2: Add a stack ID for better tracing. > > > > R=ahaas@chromium.org > > CC=fgm@chromium.org > > > > Bug: v8:12191 > > Change-Id: Ifa3f00c4259f802292b04d426c739e9b551f87b9 > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3420827 > > Reviewed-by: Andreas Haas <ahaas@chromium.org> > > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> > > Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> > > Cr-Commit-Position: refs/heads/main@{#78842} > > Bug: v8:12191 > Change-Id: I3c231690b27be79a0c00e13043342bb4a3628886 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3427203 > Reviewed-by: Andreas Haas <ahaas@chromium.org> > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> > Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> > Cr-Commit-Position: refs/heads/main@{#78890} Bug: v8:12191 Change-Id: I0e1362d3a9da1fd8c0d600ad9776ce2fd26c6a52 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3434145Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/main@{#78922}
-
- 01 Feb, 2022 2 commits
-
-
Thibaud Michaud authored
This reverts commit f942f656. Reason for revert: Breaks gc-stress Original change's description: > Reland "[wasm] Resume suspender on resolved promise" > > This is a reland of a865d16b > > Changes: > - Make the next ID atomic > - Leave more space for runtime calls in debug mode > > Original change's description: > > [wasm] Resume suspender on resolved promise > > > > Implement the WasmResume builtin, which resumes a wasm suspender > > when the corresponding JS promise resolves. > > > > Drive-by 1: Fix detection of empty stacks in the stack frame iterator. > > Drive-by 2: Add a stack ID for better tracing. > > > > R=ahaas@chromium.org > > CC=fgm@chromium.org > > > > Bug: v8:12191 > > Change-Id: Ifa3f00c4259f802292b04d426c739e9b551f87b9 > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3420827 > > Reviewed-by: Andreas Haas <ahaas@chromium.org> > > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> > > Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> > > Cr-Commit-Position: refs/heads/main@{#78842} > > Bug: v8:12191 > Change-Id: I3c231690b27be79a0c00e13043342bb4a3628886 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3427203 > Reviewed-by: Andreas Haas <ahaas@chromium.org> > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> > Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> > Cr-Commit-Position: refs/heads/main@{#78890} Bug: v8:12191 Change-Id: I5037419b6cee7a3bb49c1649e5a5d11a935a9b28 No-Presubmit: true No-Tree-Checks: true No-Try: true Auto-submit: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3429500 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Thibaud Michaud <thibaudm@chromium.org> Owners-Override: Maya Lekova <mslekova@chromium.org> Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/main@{#78893}
-
Thibaud Michaud authored
This is a reland of a865d16b Changes: - Make the next ID atomic - Leave more space for runtime calls in debug mode Original change's description: > [wasm] Resume suspender on resolved promise > > Implement the WasmResume builtin, which resumes a wasm suspender > when the corresponding JS promise resolves. > > Drive-by 1: Fix detection of empty stacks in the stack frame iterator. > Drive-by 2: Add a stack ID for better tracing. > > R=ahaas@chromium.org > CC=fgm@chromium.org > > Bug: v8:12191 > Change-Id: Ifa3f00c4259f802292b04d426c739e9b551f87b9 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3420827 > Reviewed-by: Andreas Haas <ahaas@chromium.org> > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> > Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> > Cr-Commit-Position: refs/heads/main@{#78842} Bug: v8:12191 Change-Id: I3c231690b27be79a0c00e13043342bb4a3628886 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3427203Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/main@{#78890}
-
- 28 Jan, 2022 2 commits
-
-
Thibaud Michaud authored
This reverts commit a865d16b. Reason for revert: breaks tsan and gc-stress Original change's description: > [wasm] Resume suspender on resolved promise > > Implement the WasmResume builtin, which resumes a wasm suspender > when the corresponding JS promise resolves. > > Drive-by 1: Fix detection of empty stacks in the stack frame iterator. > Drive-by 2: Add a stack ID for better tracing. > > R=ahaas@chromium.org > CC=fgm@chromium.org > > Bug: v8:12191 > Change-Id: Ifa3f00c4259f802292b04d426c739e9b551f87b9 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3420827 > Reviewed-by: Andreas Haas <ahaas@chromium.org> > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> > Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> > Cr-Commit-Position: refs/heads/main@{#78842} Bug: v8:12191 Change-Id: I3352c8b1dcc8d99e1bd782a09276add219a3ecda No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3424489 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Owners-Override: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/main@{#78845}
-
Thibaud Michaud authored
Implement the WasmResume builtin, which resumes a wasm suspender when the corresponding JS promise resolves. Drive-by 1: Fix detection of empty stacks in the stack frame iterator. Drive-by 2: Add a stack ID for better tracing. R=ahaas@chromium.org CC=fgm@chromium.org Bug: v8:12191 Change-Id: Ifa3f00c4259f802292b04d426c739e9b551f87b9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3420827Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/main@{#78842}
-
- 26 Jan, 2022 1 commit
-
-
Thibaud Michaud authored
Create and return the chained promise, which resumes the suspended wasm continuation once the JS promise resolves: - Add stub for the WasmResume builtin, which will resume the given suspender. - Add the JS function wrapper for the builtin. - On suspension, return promise.then(onFulfilled) to the prompt. R=ahaas@chromium.org CC=fgm@chromium.org Bug: v8:12191 Change-Id: I2d6136b2bd610daa4be1880f347b7bdf897e75ac Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3404776Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/main@{#78787}
-
- 21 Jan, 2022 1 commit
-
-
Thibaud Michaud authored
Save the PC in the jump buffer and implement the suspend builtin. R=ahaas@chromium.org CC=fgm@chromium.org Bug: v8:12191 Change-Id: I1a6d965d7864dce0a572f6c8d7102046dad190fd Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3345006Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/main@{#78715}
-
- 11 Jan, 2022 1 commit
-
-
Thibaud Michaud authored
- Add Suspender.suspendOnReturnedPromise method - Extend the WasmApiFunctionRef data with the suspender - Detect wrapped WasmJSFunctions when we resolve the import For now the generated wrapper is still a regular wasm-to-js wrapper, but this sets the ground for generating specific wrappers for functions wrapped by suspendOnReturnedPromise, and to access the suspender from the wrapper code. R=ahaas@chromium.org CC=fgm@chromium.org Bug: v8:12191 Change-Id: I81cbec6b023507e47e6e1463b5f9b912f807da6a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3345000Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/main@{#78560}
-
- 08 Dec, 2021 1 commit
-
-
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}
-
- 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}
-
- 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}
-