- 18 Aug, 2022 1 commit
-
-
Matthias Liedtke authored
This is a reland of commit ee89a269 Original change's description: > [wasm-gc] Add extern.externalize > > This adds `extern.externalize(ref null any): ref null extern` to wasm > which packs wasm objects into JS objects if the js-interop flag is not set. > This is the counterpart to extern.internalize introduced in > 50ec8a11. > > Bug: v8:7748 > Change-Id: I67b8fe6d70b9f526ff6c43b0a4d7861c7ff5dad0 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3825879 > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> > Commit-Queue: Matthias Liedtke <mliedtke@chromium.org> > Cr-Commit-Position: refs/heads/main@{#82492} Bug: v8:7748 Change-Id: Ie13cfd6464006dcadc2a53f2dbf77f76ab185504 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3829940Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Auto-Submit: Matthias Liedtke <mliedtke@chromium.org> Commit-Queue: Nico Hartmann <nicohartmann@chromium.org> Cr-Commit-Position: refs/heads/main@{#82551}
-
- 16 Aug, 2022 2 commits
-
-
Nico Hartmann authored
This reverts commit ee89a269. Reason for revert: Speculative revert https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Mac64%20GC%20Stress/24078/overview Original change's description: > [wasm-gc] Add extern.externalize > > This adds `extern.externalize(ref null any): ref null extern` to wasm > which packs wasm objects into JS objects if the js-interop flag is not set. > This is the counterpart to extern.internalize introduced in > 50ec8a11. > > Bug: v8:7748 > Change-Id: I67b8fe6d70b9f526ff6c43b0a4d7861c7ff5dad0 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3825879 > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> > Commit-Queue: Matthias Liedtke <mliedtke@chromium.org> > Cr-Commit-Position: refs/heads/main@{#82492} Bug: v8:7748 Change-Id: I22c84d69a1dc957208f60ae3125e80278ae739a5 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3832389 Owners-Override: Nico Hartmann <nicohartmann@chromium.org> Auto-Submit: Nico Hartmann <nicohartmann@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@{#82495}
-
Matthias Liedtke authored
This adds `extern.externalize(ref null any): ref null extern` to wasm which packs wasm objects into JS objects if the js-interop flag is not set. This is the counterpart to extern.internalize introduced in 50ec8a11. Bug: v8:7748 Change-Id: I67b8fe6d70b9f526ff6c43b0a4d7861c7ff5dad0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3825879Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Matthias Liedtke <mliedtke@chromium.org> Cr-Commit-Position: refs/heads/main@{#82492}
-
- 12 Aug, 2022 1 commit
-
-
Matthias Liedtke authored
This adds `extern.internalize(ref null extern): ref null any` to wasm which unpacks the wrapped wasm object if the js-interop flag is not set. I31 values are still wrapped in object wrappers and don't use SMIs. Bug: v8:7748 Change-Id: Ie4a4507961d0ad41caf430054a3d341f474b8e66 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3819645Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Matthias Liedtke <mliedtke@chromium.org> Cr-Commit-Position: refs/heads/main@{#82426}
-
- 02 Aug, 2022 1 commit
-
-
Matthias Liedtke authored
Preparation step to remove the subtype relationship between funcref and anyref. Bug: v8:7748 Change-Id: Ie4b29bfc4b874aaca668082018f5359d1b6e3a2e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3803226Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Matthias Liedtke <mliedtke@chromium.org> Cr-Commit-Position: refs/heads/main@{#82125}
-
- 01 Aug, 2022 1 commit
-
-
Matthias Liedtke authored
Preparation step to remove the subtype relationship between funcref and anyref. Bug: v8:7748 Change-Id: Ic2d3467addff16dc0df466234cb7ce6e573ba666 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3797829 Auto-Submit: Matthias Liedtke <mliedtke@chromium.org> Commit-Queue: Matthias Liedtke <mliedtke@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/main@{#82111}
-
- 29 Jul, 2022 1 commit
-
-
Manos Koukoutos authored
Currently, we canonicalize types for call_indirect by looking in the current module for a signature of the same shape. This is not enough as of wasm-gc. Instead, the canonical identifier representing a type has to be computed via isorecursive canonicalization. This change is implemented behind a flag for now. Future work: Also integrate export wrappers with isorecursive canonical types. We need to store wrappers in instance-independent storage. Drive-by: - Always emit type check for call_indirect. We did not emit a check only when typed-function-references was enabled, but not gc. This is not something that will be possible long-term. - Fix some wasm cctests. Bug: v8:7748 Change-Id: I7cced187009ac148c833dff5e720a8bb9a717e68 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3784600Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#82064}
-
- 28 Jul, 2022 1 commit
-
-
Matthias Liedtke authored
Bug: v8:7748 Change-Id: Ifd4caec2015894f736dd94356298f6ee35ac852b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3779911Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Auto-Submit: Matthias Liedtke <mliedtke@chromium.org> Reviewed-by:
Philip Pfaffe <pfaffe@chromium.org> Commit-Queue: Matthias Liedtke <mliedtke@chromium.org> Cr-Commit-Position: refs/heads/main@{#82035}
-
- 22 Jul, 2022 1 commit
-
-
Matthias Liedtke authored
Bug: v8:7748 Change-Id: I067e9d6a56dd58dbd0f45607f62b5ef36c69ff6f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3776690Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Auto-Submit: Matthias Liedtke <mliedtke@google.com> Commit-Queue: Matthias Liedtke <mliedtke@google.com> Cr-Commit-Position: refs/heads/main@{#81888}
-
- 20 Jul, 2022 1 commit
-
-
Matthias Liedtke authored
Bug: v8:7748 Change-Id: I09e9d919751945e99e0178168358a3f269fa34a3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3776679 Auto-Submit: Matthias Liedtke <mliedtke@google.com> Commit-Queue: Matthias Liedtke <mliedtke@google.com> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/main@{#81850}
-
- 19 Jul, 2022 1 commit
-
-
Matthias Liedtke authored
Bug: v8:7748 Change-Id: Iec95162ec86a0d96fdd64764864604fc3e26cc39 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3771902Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Auto-Submit: Matthias Liedtke <mliedtke@google.com> Commit-Queue: Matthias Liedtke <mliedtke@google.com> Cr-Commit-Position: refs/heads/main@{#81821}
-
- 18 Jul, 2022 2 commits
-
-
Matthias Liedtke authored
Bug: v8:7748 Change-Id: Ib8fadc272178fb0d49f7d5fab7d1953e2328a1ad Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3770107 Auto-Submit: Matthias Liedtke <mliedtke@google.com> Commit-Queue: Matthias Liedtke <mliedtke@google.com> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/main@{#81787}
-
Manos Koukoutos authored
Mostly test/cctest/. Bug: v8:13006 Change-Id: I8853d38feb79bed6234a4354ab25a13255a1871b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3755149 Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/main@{#81777}
-
- 08 Jul, 2022 2 commits
-
-
Manos Koukoutos authored
Mostly src/codegen, src/compiler, src/interpreter, src/libplatform. Drive-by: Remove some unreachable code. Bug: v8:13006 Change-Id: I1a9467f7e42531c545f660d35416c388e8ef9d3c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3749193 Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/main@{#81613}
-
Matthias Liedtke authored
in unit tests: - function-body-decoder-unittest.cc - module-decoder-unittest.cc Bug: v8:7748 Change-Id: I1f782bb7292ecd1206a921daccde23b1d314d325 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3751198Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Matthias Liedtke <mliedtke@google.com> Auto-Submit: Matthias Liedtke <mliedtke@google.com> Cr-Commit-Position: refs/heads/main@{#81601}
-
- 05 Jul, 2022 3 commits
-
-
Manos Koukoutos authored
This is a reland of commit 2d74bfa4 Difference compared to original: Restore one needed include. Original change's description: > Remove some unused includes > > Mostly src/api, src/asmjs. src/ast, src/base, src/wasm. > > Bug: v8:13006 > Change-Id: If4e85afe003fda9f8a681077827c3502e939fe57 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3742702 > Reviewed-by: Thibaud Michaud <thibaudm@chromium.org> > Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> > Reviewed-by: Toon Verwaest <verwaest@chromium.org> > Cr-Commit-Position: refs/heads/main@{#81523} Bug: v8:13006 Change-Id: I88c45059572fa25af4e0999f479ba5c28572db7f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3746077Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Reviewed-by:
Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/main@{#81539}
-
Manos Koukoutos authored
This reverts commit 2d74bfa4. Reason for revert: https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Mac%20-%20arm64%20-%20debug%20builder/7403/overview Original change's description: > Remove some unused includes > > Mostly src/api, src/asmjs. src/ast, src/base, src/wasm. > > Bug: v8:13006 > Change-Id: If4e85afe003fda9f8a681077827c3502e939fe57 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3742702 > Reviewed-by: Thibaud Michaud <thibaudm@chromium.org> > Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> > Reviewed-by: Toon Verwaest <verwaest@chromium.org> > Cr-Commit-Position: refs/heads/main@{#81523} Bug: v8:13006 Change-Id: I7579dc3805ed4cbcd56488c31450c7941b430b1a No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3746076 Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Reviewed-by:
Manos Koukoutos <manoskouk@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Owners-Override: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#81526}
-
Manos Koukoutos authored
Mostly src/api, src/asmjs. src/ast, src/base, src/wasm. Bug: v8:13006 Change-Id: If4e85afe003fda9f8a681077827c3502e939fe57 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3742702Reviewed-by:
Thibaud Michaud <thibaudm@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/main@{#81523}
-
- 01 Jul, 2022 3 commits
-
-
Manos Koukoutos authored
This opcode is being removed in favor of pre-declared non-defaultable locals (details are still TBD). Bug: v8:9495 Change-Id: I96ac053a1b5a852310c5dc0bbaeab0cbf5384663 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3738743 Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/main@{#81496}
-
Manos Koukoutos authored
Most often, the {ValueType::Ref} constructor was called with a constant nullability. To make things more convenient, this CL renames {Ref} to {RefMaybeNull}, and introduces {Ref} and {RefNull} constructors with fixed nullability. Bug: v8:7748 Change-Id: I664ff184ca936cc752e152c3c67546d79aa24390 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3732936Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#81494}
-
Manos Koukoutos authored
This makes the internal V8 name consistent with the text-format name. Bug: v8:7748 Change-Id: I44f7ac1eb5e634b4f829e596bf1f14caeb748d54 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3726291Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#81491}
-
- 27 Jun, 2022 1 commit
-
-
Manos Koukoutos authored
Rename: - array.init(_static) -> array.new_fixed(_static) - array.init_from_data(_static) -> array.new_data(_static) - array.init_from_elem_static -> array.new_elem_static - (Wasm)ArrayInitFromSegment -> (Wasm)ArrayNewSegment Bug: v8:7748 Change-Id: I5ea314d653dd0e9f7f1f556469794d880934e01b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3726207Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#81393}
-
- 09 Jun, 2022 1 commit
-
-
Manos Koukoutos authored
- Functions related to table initialization now return an optional {MessageTemplate} if they fail. This is used to emit the correct error message in one test. - InitExprInterface now uses {MessageTemplate} to describe errors. Change-Id: I2428f7823859b95d14b6e81c8200f78da4510ceb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3695579Reviewed-by:
Clemens Backes <clemensb@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#81045}
-
- 03 Jun, 2022 1 commit
-
-
Clemens Backes authored
Extend the effect of --freeze-flags-after-init to also protect updates of individual flags instead of only the API. For this, we wrap each flag in a {FlagValue} class which implicitly converts to the value of the flag. Some cases still require the explicit {value()} accessor though. That accessor is {constexpr}, in contrast to the implicit conversion, because otherwise clang emits a lot of warnings about dead code within "if (FLAG...)" scopes. R=cbruni@chromium.org Bug: v8:12887 Change-Id: I87d3457e49ceb317d34d6a21cf09c520d4171eb5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3683321Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Patrick Thier <pthier@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Reviewed-by:
Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/main@{#80938}
-
- 02 Jun, 2022 1 commit
-
-
Ilya Rezvov authored
Prototype the instruction on the interpreter, and Arm64. Details of instruction lowerings on all relevant architectures can be found at: https://github.com/WebAssembly/relaxed-simd/issues/52 Bug: v8:12908 Change-Id: If8ffb82c38042191c67c9b5c23a231877d4f2159 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3679848Reviewed-by:
Clemens Backes <clemensb@chromium.org> Commit-Queue: Ilya Rezvov <irezvov@chromium.org> Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/main@{#80924}
-
- 19 May, 2022 1 commit
-
-
Clemens Backes authored
As a follow-up to https://crrev.com/c/3625835, document how we internally encode Wasm opcodes in the WasmOpcode enum. In particular, it's important for the mapping to be bijective. R=thibaudm@chromium.org CC=gdeepti@chromium.org Bug: v8:12284 Change-Id: Ic4bcd70211e83b1eabb45204bdcce3209a4432b3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3647360Reviewed-by:
Thibaud Michaud <thibaudm@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/main@{#80635}
-
- 11 May, 2022 1 commit
-
-
Deepti Gandluri authored
Prototype the instruction on the interpreter, and Arm64. Details of instruction lowerings on all relevant architectures can be found at: https://github.com/WebAssembly/relaxed-simd/issues/40 Bug: v8:12284 Change-Id: Id4cb3889d94cf0bb7169ea068efe5ca68cfcbad9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3636365 Commit-Queue: Deepti Gandluri <gdeepti@chromium.org> Reviewed-by:
Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/main@{#80475}
-
- 09 May, 2022 1 commit
-
-
Deepti Gandluri authored
Add new opcode numbers for relaxed-simd opcodes as in: https://github.com/WebAssembly/relaxed-simd/pull/61, and updates for decoded opcodes larger than two bytes. Bug: v8:12284 Change-Id: I0bff22812243a39599bfeee3c0bc69171dd3c7d2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3625835Reviewed-by:
Thibaud Michaud <thibaudm@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Commit-Queue: Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/main@{#80432}
-
- 05 May, 2022 1 commit
-
-
Peter Kasting authored
This prevents ambiguity errors in C++20 due to ADL when casting types in std::, which gains std::bit_cast<>(). Bug: chromium:1284275 Change-Id: I25046d1952a9304852e481ad8b84049c6769c289 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3625838 Auto-Submit: Peter Kasting <pkasting@chromium.org> Reviewed-by:
Adam Klein <adamk@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/main@{#80378}
-
- 28 Apr, 2022 1 commit
-
-
Igor Sheludko authored
This is a reland of commit 9d31f866 There were issues with --future flag implications on M1. Original change's description: > [rwx][mac] Support fast W^X permission switching on Apple Silicon (M1) > > ... for V8 code space. The feature is currently disabled. > > In order to use fast W^X permission switching we must allocate > executable pages with readable writable executable permissions (RWX). > However, MacOS on ARM64 ("Apple M1"/Apple Silicon) prohibits further > permission changing of RWX memory pages. This means that the code page > headers must be allocated with RWX permissions too because otherwise > it wouldn't be possible to allocate a large code page over the freed > regular code page and vice versa. > > When enabled, the new machinery works as follows: > > 1) when memory region is reserved for allocating executable pages, the > whole region is committed with RWX permissions and then decommitted, > 2) since reconfiguration of RWX page permissions is not allowed on > MacOS on ARM64 ("Apple M1"/Apple Silicon), there must be no attempts > to change them, > 3) the request to set RWX permissions in the executable page region > just recommits the pages without changing permissions (see (1), they > were already allocated as RWX and then discarded), > 4) in order to make executable pages inaccessible one must use > OS::DiscardSystemPages() instead of OS::DecommitPages() or > setting permissions to kNoAccess because the latter two are not > allowed by the MacOS (see (2)). > 5) since code space page headers are allocated as RWX pages it's also > necessary to switch between W^X modes when updating the data in the > page headers (i.e. when marking, updating stats, wiring pages in > lists, etc.). The new CodePageHeaderModificationScope class is used > in the respective places. On unrelated configurations it's a no-op. > > The fast permission switching can't be used for V8 configuration with > enabled pointer compression and disabled external code space because > a) the pointer compression cage has to be reserved with MAP_JIT flag > which is too expensive, > b) in case of shared pointer compression cage if the code range will > be deleted while the cage is still alive then attempt to configure > permissions of pages that were previously set to RWX will fail. > > This also CL extends the unmapper unit tests with permissions tracking > for discarded pages. > > Bug: v8:12797 > Change-Id: Idb28cbc481306477589eee9962d2e75167d87c61 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3579303 > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> > Reviewed-by: Clemens Backes <clemensb@chromium.org> > Reviewed-by: Michael Lippautz <mlippautz@chromium.org> > Commit-Queue: Igor Sheludko <ishell@chromium.org> > Cr-Commit-Position: refs/heads/main@{#80238} Bug: v8:12797 Change-Id: I0fe86666f31bad37d7074e217555c95900d2afba Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3610433Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/main@{#80259}
-
- 27 Apr, 2022 2 commits
-
-
Adam Klein authored
This reverts commit 9d31f866. Reason for revert: crashes on Mac/arm64 bots: https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Mac%20-%20arm64%20-%20debug/5923/overview Original change's description: > [rwx][mac] Support fast W^X permission switching on Apple Silicon (M1) > > ... for V8 code space. The feature is currently disabled. > > In order to use fast W^X permission switching we must allocate > executable pages with readable writable executable permissions (RWX). > However, MacOS on ARM64 ("Apple M1"/Apple Silicon) prohibits further > permission changing of RWX memory pages. This means that the code page > headers must be allocated with RWX permissions too because otherwise > it wouldn't be possible to allocate a large code page over the freed > regular code page and vice versa. > > When enabled, the new machinery works as follows: > > 1) when memory region is reserved for allocating executable pages, the > whole region is committed with RWX permissions and then decommitted, > 2) since reconfiguration of RWX page permissions is not allowed on > MacOS on ARM64 ("Apple M1"/Apple Silicon), there must be no attempts > to change them, > 3) the request to set RWX permissions in the executable page region > just recommits the pages without changing permissions (see (1), they > were already allocated as RWX and then discarded), > 4) in order to make executable pages inaccessible one must use > OS::DiscardSystemPages() instead of OS::DecommitPages() or > setting permissions to kNoAccess because the latter two are not > allowed by the MacOS (see (2)). > 5) since code space page headers are allocated as RWX pages it's also > necessary to switch between W^X modes when updating the data in the > page headers (i.e. when marking, updating stats, wiring pages in > lists, etc.). The new CodePageHeaderModificationScope class is used > in the respective places. On unrelated configurations it's a no-op. > > The fast permission switching can't be used for V8 configuration with > enabled pointer compression and disabled external code space because > a) the pointer compression cage has to be reserved with MAP_JIT flag > which is too expensive, > b) in case of shared pointer compression cage if the code range will > be deleted while the cage is still alive then attempt to configure > permissions of pages that were previously set to RWX will fail. > > This also CL extends the unmapper unit tests with permissions tracking > for discarded pages. > > Bug: v8:12797 > Change-Id: Idb28cbc481306477589eee9962d2e75167d87c61 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3579303 > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> > Reviewed-by: Clemens Backes <clemensb@chromium.org> > Reviewed-by: Michael Lippautz <mlippautz@chromium.org> > Commit-Queue: Igor Sheludko <ishell@chromium.org> > Cr-Commit-Position: refs/heads/main@{#80238} Bug: v8:12797 Change-Id: Ic07948e036db36326d464a2a901d052aa060a406 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3611665 Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/main@{#80239}
-
Igor Sheludko authored
... for V8 code space. The feature is currently disabled. In order to use fast W^X permission switching we must allocate executable pages with readable writable executable permissions (RWX). However, MacOS on ARM64 ("Apple M1"/Apple Silicon) prohibits further permission changing of RWX memory pages. This means that the code page headers must be allocated with RWX permissions too because otherwise it wouldn't be possible to allocate a large code page over the freed regular code page and vice versa. When enabled, the new machinery works as follows: 1) when memory region is reserved for allocating executable pages, the whole region is committed with RWX permissions and then decommitted, 2) since reconfiguration of RWX page permissions is not allowed on MacOS on ARM64 ("Apple M1"/Apple Silicon), there must be no attempts to change them, 3) the request to set RWX permissions in the executable page region just recommits the pages without changing permissions (see (1), they were already allocated as RWX and then discarded), 4) in order to make executable pages inaccessible one must use OS::DiscardSystemPages() instead of OS::DecommitPages() or setting permissions to kNoAccess because the latter two are not allowed by the MacOS (see (2)). 5) since code space page headers are allocated as RWX pages it's also necessary to switch between W^X modes when updating the data in the page headers (i.e. when marking, updating stats, wiring pages in lists, etc.). The new CodePageHeaderModificationScope class is used in the respective places. On unrelated configurations it's a no-op. The fast permission switching can't be used for V8 configuration with enabled pointer compression and disabled external code space because a) the pointer compression cage has to be reserved with MAP_JIT flag which is too expensive, b) in case of shared pointer compression cage if the code range will be deleted while the cage is still alive then attempt to configure permissions of pages that were previously set to RWX will fail. This also CL extends the unmapper unit tests with permissions tracking for discarded pages. Bug: v8:12797 Change-Id: Idb28cbc481306477589eee9962d2e75167d87c61 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3579303Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/main@{#80238}
-
- 22 Apr, 2022 1 commit
-
-
Deepti Gandluri authored
These were originally proposed as a part of the fixed-width SIMD proposal, and were then migrated to the relaxed-simd proposal which also deems these operations out of scope. Github issue: https://github.com/WebAssembly/relaxed-simd/issues/4 Bug: v8:12284 Change-Id: I65ceb6dfd25c43cf49bd7ec5b5ecd6b32cc3516a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3595970Reviewed-by:
Thibaud Michaud <thibaudm@chromium.org> Commit-Queue: Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/main@{#80125}
-
- 19 Apr, 2022 1 commit
-
-
Igor Sheludko authored
This is a reland of commit 4d8e1846 One of the Mac arm64 bots failed to link an exported thread_local static variable (crbug/1316800). Original change's description: > [rwx][mac] Introduce RwxMemoryWriteScope > > ... as a single bottleneck that encapsulates the semantics and > implementation of fast per-thread W^X permission switching supported > by Apple Silicon (arm64 M1). > On other architectures this class is a no-op. > > Bug: v8:12797 > Change-Id: Ica842ff9f843e20b7f61fd7e80591e7a1fd29771 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3586986 > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> > Commit-Queue: Igor Sheludko <ishell@chromium.org> > Cr-Commit-Position: refs/heads/main@{#79994} Bug: v8:12797 Change-Id: Ifbd15c233bb343f11daa89b1328b5bf65c4806f4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3591332Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/main@{#80011}
-
- 18 Apr, 2022 1 commit
-
-
Deepti Gandluri authored
This reverts commit 4d8e1846. Reason for revert: Blocks V8 roll, crbug.com/1316800 Original change's description: > [rwx][mac] Introduce RwxMemoryWriteScope > > ... as a single bottleneck that encapsulates the semantics and > implementation of fast per-thread W^X permission switching supported > by Apple Silicon (arm64 M1). > On other architectures this class is a no-op. > > Bug: v8:12797 > Change-Id: Ica842ff9f843e20b7f61fd7e80591e7a1fd29771 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3586986 > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> > Commit-Queue: Igor Sheludko <ishell@chromium.org> > Cr-Commit-Position: refs/heads/main@{#79994} Bug: v8:12797 Change-Id: I81792567839e72b4147d009c0845b0c0de003eb0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3590752 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Deepti Gandluri <gdeepti@chromium.org> Owners-Override: Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/main@{#80007}
-
- 14 Apr, 2022 1 commit
-
-
Igor Sheludko authored
... as a single bottleneck that encapsulates the semantics and implementation of fast per-thread W^X permission switching supported by Apple Silicon (arm64 M1). On other architectures this class is a no-op. Bug: v8:12797 Change-Id: Ica842ff9f843e20b7f61fd7e80591e7a1fd29771 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3586986Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/main@{#79994}
-
- 01 Mar, 2022 1 commit
-
-
Manos Koukoutos authored
According to the latest changes in wasm-gc, externref will be renamed to anyref, and will be assigned as the top of the reference type hierarchy. Since in the current wasm type system funcref is not a subtype of anyref, subtyping is now dependent on whether wasm-gc is enabled. Bug: v8:7748 Change-Id: I0c0ae3dd5523e624d4490ca33d1fba4c2ae59393 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3468345Reviewed-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@{#79322}
-
- 17 Feb, 2022 1 commit
-
-
Manos Koukoutos authored
Changes: - Simplify GetRefTypeName. - Simplify WasmModuleDebug::GetWasmValue. - Fix some signature issues in tests. Change-Id: I61b9a48c0fbce0bc9cc74771412bdb8977880697 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3468344Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#79137}
-
- 31 Jan, 2022 1 commit
-
-
Manos Koukoutos authored
Since inheritance depth of every type is known in the isorecursive hybrid type system, rtts with depth are removed. This enables simplification of type checks in Liftoff and Turbofan, as well as decoding of object allocation instructions. Bug: v8:7748 Change-Id: I6b52579b584191d92644de1c6e805d9f054641d3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3422626Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#78860}
-
- 27 Jan, 2022 1 commit
-
-
Manos Koukoutos authored
This CL replaces the equirecursive type system for wasm-gc with the isorecursive hybrid type system presented here: https://github.com/WebAssembly/gc/issues/257. In broad strokes, this includes the following changes: - In the module decoder, remove equirecursive types. Implement recursive type groups, subtype definitions, and function/struct/array definitions. Treat nominal modules as syntactic sugar of an isorecursive module, where all types belong in the same recursive group. - Remove rtt.sub and all related infrastructure. - Change subtyping to work with explicit supertypes only. - Add ValidSubtypeDefinition in subtyping, to check that subtype declarations are valid during decoding. - Remove the subtyping cache. - Add support for functions to have specific signature index in WasmModuleBuilder and in test-gc.cc. - Adapt tests. Current restrictions: - Recursive groups are not stored beyond decoding. - Type canonicalization is not implemented. No tests relying on types being considered identical post-canonicalization. - No cross-module subtyping is possible. Tests relying on cross-module subtyping have been commented out. Bug: v8:7748 Change-Id: I69fd04ecc5611f6230c95d5c89d1c520163fffae Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3416239Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#78816}
-