- 01 Jun, 2022 1 commit
-
-
Shu-yu Guo authored
This is a reland of commit ea9a1f1c Changes since revert: - Make the state field uintptr-aligned since arm64 faults on atomic accesses to non-naturally aligned addresses. Original change's description: > [shared-struct] Add Atomics.Mutex > > This CL adds a moving GC-safe, JS-exposed mutex behind the > --harmony-struct flag. It uses a ParkingLot-inspired algorithm and > each mutex manages its own waiter queue. > > For more details, please see the design doc: https://docs.google.com/document/d/1QHkmiTF770GKxtoP-VQ1eKF42MpedLUeqiQPfCqus0Y/edit?usp=sharing > > Bug: v8:12547 > Change-Id: Ic58f8750d2e14ecd573173d17d5235a136bedef9 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3595460 > Commit-Queue: Shu-yu Guo <syg@chromium.org> > Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> > Reviewed-by: Adam Klein <adamk@chromium.org> > Reviewed-by: Michael Lippautz <mlippautz@chromium.org> > Cr-Commit-Position: refs/heads/main@{#80789} Bug: v8:12547 Change-Id: I776cbf6ea860dcc6cb0ac51694a9b584b53d255c Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_rel_ng Cq-Include-Trybots: luci.v8.try:v8_mac_arm64_rel_ng Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3673354Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Reviewed-by:
Adam Klein <adamk@chromium.org> Commit-Queue: Shu-yu Guo <syg@chromium.org> Cr-Commit-Position: refs/heads/main@{#80875}
-
- 30 May, 2022 1 commit
-
-
Igor Sheludko authored
... when external code space is enabled. Since we are using near jump/call instruction only for [tail]calling builtins, we can increase the code range as long as we can guarantee that the remapped builtins are always reachable. We can do that by remapping embedded builtins into the middle of the code range. Bug: v8:11880, v8:12689 Change-Id: I69901634586df3c35618ea7bd5311102e4675f6c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3669107Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/main@{#80810}
-
- 28 May, 2022 2 commits
-
-
Shu-yu Guo authored
This reverts commit ea9a1f1c. Reason for revert: arm64 pointer alignment issue https://logs.chromium.org/logs/v8/buildbucket/cr-buildbucket/8812962856609920785/+/u/Check/mutex-workers Original change's description: > [shared-struct] Add Atomics.Mutex > > This CL adds a moving GC-safe, JS-exposed mutex behind the > --harmony-struct flag. It uses a ParkingLot-inspired algorithm and > each mutex manages its own waiter queue. > > For more details, please see the design doc: https://docs.google.com/document/d/1QHkmiTF770GKxtoP-VQ1eKF42MpedLUeqiQPfCqus0Y/edit?usp=sharing > > Bug: v8:12547 > Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_rel_ng > Change-Id: Ic58f8750d2e14ecd573173d17d5235a136bedef9 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3595460 > Commit-Queue: Shu-yu Guo <syg@chromium.org> > Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> > Reviewed-by: Adam Klein <adamk@chromium.org> > Reviewed-by: Michael Lippautz <mlippautz@chromium.org> > Cr-Commit-Position: refs/heads/main@{#80789} Bug: v8:12547 Change-Id: I226e16b743dc4b157fac33a9cbabab4d72cf290b Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_rel_ng No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3673353 Owners-Override: Shu-yu Guo <syg@chromium.org> Auto-Submit: Shu-yu Guo <syg@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Shu-yu Guo <syg@chromium.org> Cr-Commit-Position: refs/heads/main@{#80790}
-
Shu-yu Guo authored
This CL adds a moving GC-safe, JS-exposed mutex behind the --harmony-struct flag. It uses a ParkingLot-inspired algorithm and each mutex manages its own waiter queue. For more details, please see the design doc: https://docs.google.com/document/d/1QHkmiTF770GKxtoP-VQ1eKF42MpedLUeqiQPfCqus0Y/edit?usp=sharing Bug: v8:12547 Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_rel_ng Change-Id: Ic58f8750d2e14ecd573173d17d5235a136bedef9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3595460 Commit-Queue: Shu-yu Guo <syg@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Reviewed-by:
Adam Klein <adamk@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#80789}
-
- 25 May, 2022 1 commit
-
-
Andy Wingo authored
Bug: v8:12868 Also adds the equivalent of Utf8Decoder, but for WTF-8. Change-Id: I1548a44b0aea912cdd429eb85be4dfc606355cad Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3660257Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Andy Wingo <wingo@igalia.com> Cr-Commit-Position: refs/heads/main@{#80750}
-
- 20 May, 2022 1 commit
-
-
Igor Sheludko authored
This is a reland of commit e8cac377 The proxy resolver issue is fixed in a separate CL. Original change's description: > [rwx][mac] Enable fast W^X on Apple Silicon (M1) > > Bug: v8:12797 > Change-Id: I53bb803dd77db5bdd42b1a1b4b568e63857adf31 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3598861 > Reviewed-by: Toon Verwaest <verwaest@chromium.org> > Commit-Queue: Igor Sheludko <ishell@chromium.org> > Cr-Commit-Position: refs/heads/main@{#80396} Bug: v8:12797 Change-Id: Icd897d3f3ff1f1bcfdb9e874e13f6a654c985fc8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3650925 Commit-Queue: Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/main@{#80662}
-
- 19 May, 2022 2 commits
-
-
Igor Sheludko authored
... when com.apple.security.cs.allow-jit entitlement is not enabled. Bug: v8:12797, chromium:1324829 Change-Id: I660008e1f8abbac3436dd78ea90937971599b5d0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3644960Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#80646}
-
Issack John authored
Part of the improve error messages initiative. Based on a resource of JSON.parse() errors found at https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/JSON_bad_parse added support for: - 'Bad control character in string literal' - 'Bad Unicode escape' Previously JSON.parse('"a\bz"') would output: SyntaxError: Unexpected token in JSON at position 2 Now the output is: SyntaxError: Bad control character in string literal in JSON at position 2 Previously JSON.parse("[\"\\t\\u") would output: SyntaxError: Unexpected end of JSON input Now the output is: SyntaxError: Bad Unicode escape in JSON at position 6 Bug: v8:6551 Change-Id: I3ba5450c41b8a388643a15bc58e4e3fc75855d13 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3652254Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Issack John <issackjohn@microsoft.com> Cr-Commit-Position: refs/heads/main@{#80642}
-
- 17 May, 2022 1 commit
-
-
Igor Sheludko authored
... when external code space is enabled. Bug: v8:11880, v8:12689 Change-Id: I0efa09a27d636df3d36d2da13ac26c7f2fedb94c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3650744Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Auto-Submit: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/main@{#80594}
-
- 16 May, 2022 1 commit
-
-
Issack John authored
Part of the improve error messages initiative. Based on a resource of JSON.parse() errors found at https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/JSON_bad_parse Previously JSON.parse(NaN) would output: SyntaxError: Unexpected token N in JSON at position 0 Now the output is: SyntaxError: "NaN" is not valid JSON Previously JSON.parse("{a:1}") would output: SyntaxError: Unexpected token a in JSON at position 1 Now the output is: SyntaxError: Expected property name or '}' in JSON at position 1 Bug: v8:6551 Change-Id: Ic9fad1fdbd295e1302805b81e6603fc526121960 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3513684Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Issack John <issackjohn@microsoft.com> Cr-Commit-Position: refs/heads/main@{#80567}
-
- 13 May, 2022 1 commit
-
-
Clemens Backes authored
Now that we require C++17 support, we can just use the standard static_assert without message, instead of our STATIC_ASSERT macro. R=leszeks@chromium.org Bug: v8:12425 Change-Id: I1d4e39c310b533bcd3a4af33d027827e6c083afe Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3647353Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Hannes Payer <hpayer@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/main@{#80524}
-
- 12 May, 2022 1 commit
-
-
Igor Sheludko authored
This reverts commit 411a0157. Reason for revert: crbug.com/1324829 (Canary crashes) Original change's description: > Reland "[rwx][mac] Enable fast W^X on Apple Silicon (M1)" > > This is a reland of commit e8cac377 > Broken jitless mode is fixed in a separate CL. > > Original change's description: > > [rwx][mac] Enable fast W^X on Apple Silicon (M1) > > > > Bug: v8:12797 > > Change-Id: I53bb803dd77db5bdd42b1a1b4b568e63857adf31 > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3598861 > > Reviewed-by: Toon Verwaest <verwaest@chromium.org> > > Commit-Queue: Igor Sheludko <ishell@chromium.org> > > Cr-Commit-Position: refs/heads/main@{#80396} > > Bug: v8:12797 > Change-Id: I5436ceced5d4673f3b80d9cacdb3d6e84012c6e7 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3635720 > Reviewed-by: Toon Verwaest <verwaest@chromium.org> > Commit-Queue: Igor Sheludko <ishell@chromium.org> > Cr-Commit-Position: refs/heads/main@{#80450} Bug: v8:12797 Change-Id: If776ccb6ce9f41a84b94409ec5cae91c0915f129 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3644620 Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Cr-Commit-Position: refs/heads/main@{#80496}
-
- 10 May, 2022 1 commit
-
-
Igor Sheludko authored
This is a reland of commit e8cac377 Broken jitless mode is fixed in a separate CL. Original change's description: > [rwx][mac] Enable fast W^X on Apple Silicon (M1) > > Bug: v8:12797 > Change-Id: I53bb803dd77db5bdd42b1a1b4b568e63857adf31 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3598861 > Reviewed-by: Toon Verwaest <verwaest@chromium.org> > Commit-Queue: Igor Sheludko <ishell@chromium.org> > Cr-Commit-Position: refs/heads/main@{#80396} Bug: v8:12797 Change-Id: I5436ceced5d4673f3b80d9cacdb3d6e84012c6e7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3635720Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/main@{#80450}
-
- 06 May, 2022 2 commits
-
-
Igor Sheludko authored
This reverts commit e8cac377. Reason for revert: breaking Mac arm64 bots Original change's description: > [rwx][mac] Enable fast W^X on Apple Silicon (M1) > > Bug: v8:12797 > Change-Id: I53bb803dd77db5bdd42b1a1b4b568e63857adf31 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3598861 > Reviewed-by: Toon Verwaest <verwaest@chromium.org> > Commit-Queue: Igor Sheludko <ishell@chromium.org> > Cr-Commit-Position: refs/heads/main@{#80396} Bug: v8:12797 Change-Id: Ieb31d44d40a3b7c4e0b8f3914fcb89346ee3e2f8 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3630083 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Igor Sheludko <ishell@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Cr-Commit-Position: refs/heads/main@{#80398}
-
Igor Sheludko authored
Bug: v8:12797 Change-Id: I53bb803dd77db5bdd42b1a1b4b568e63857adf31 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3598861Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/main@{#80396}
-
- 05 May, 2022 2 commits
-
-
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}
-
jiepan authored
WASM only supports simd128, but modern CPUs support up to 256 bit vector register or more, we will add an experimental feature to do 256 bit re-vectorization in Turbofan pipeline, this patch add simd256 machine representation. Bug: v8:12716 Change-Id: I1e6a3f2afa0a457fca2c261216f4113d0ed5b818 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3534456Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Jie Pan <jie.pan@intel.com> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/main@{#80361}
-
- 29 Apr, 2022 1 commit
-
-
George Wort authored
Introduce get_hints.py and combine_hints.py in order to make the interpretation of basic block counts into hints more configurable and explicit, as well as allowing more accurate and consistent methods of combining multiple profiles. get_hints.py allows for the minimum count and threshold ratio values to be easily altered for different profiles, while combine_hints.py allows the hints produced from different benchmarks and threshold values to be easily and sensibly combined. Simply summing together basic block counts from different benchmarks could previously lead to a longer running benchmark overshadowing multiple shorter benchmarks with conflicting hints. Allowing alteration of the current threshold values gives a doubling of performance, while the new method of combining distinct profiles can double the performance improvement of the secondary benchmark while losing as little as 4% of the improvement gained in the primary benchmark. Design doc: https://docs.google.com/document/d/1OhwZnIZom47IX0lyceyt-S9i8AApDB0UqJdvQD6NuKQ/edit?usp=sharing Bug: v8:10470 Change-Id: I1c09d1eabfdda5ed6794592e2c13ff8b461be361 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3545181Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: George Wort <george.wort@arm.com> Cr-Commit-Position: refs/heads/main@{#80282}
-
- 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 4 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}
-
Frank Tang authored
Bug: v8:7834 Change-Id: Iedd97d665df91ccbdceaaeb68d936b210c31b662 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3611662Reviewed-by:
Shu-yu Guo <syg@chromium.org> Commit-Queue: Frank Tang <ftang@chromium.org> Cr-Commit-Position: refs/heads/main@{#80233}
-
yufeng.freeman authored
This CL includes count value to InvalidCountValue error message to make it easier to dignoise RangeError of String.prototype.repeat. When InvalidCountValue error throw, we could not know it's caused by which count value if count value is not included. Bug: none Change-Id: I16e6693da0fc3b181241cb90daca27957f59c77c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3593574Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/main@{#80198}
-
- 26 Apr, 2022 1 commit
-
-
Frank Tang authored
PR85 https://github.com/tc39/proposal-intl-numberformat-v3/pull/85 Throw RangeError while roundingIncrement is not 1 and minimumFractionDigits != maximumFractionDigits Test by new test cases in intl/number-format/rounding-increment-v3.js Add more unit test to check the resolved options of roundingIncrement, minimumFractionDigits, and maximumFractionDigits. PR91 https://github.com/tc39/proposal-intl-numberformat-v3/pull/91 Throw TypeError instead of RangeError while roundingIncrement is not 1 and RoundingType is not fractionDigits Test by intl402/NumberFormat/constructor-roundingIncrement-invalid.js in test262 Bug: v8:10776 Change-Id: I071bfe8b3e844c5999144d74bb5f79ea9811e37b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3603059Reviewed-by:
Shu-yu Guo <syg@chromium.org> Commit-Queue: Frank Tang <ftang@chromium.org> Cr-Commit-Position: refs/heads/main@{#80196}
-
- 22 Apr, 2022 1 commit
-
-
legendecas authored
As per https://tc39.es/ecma262/#sec-hostimportmoduledynamically defined, referencingScriptOrModule in HostImportModuleDynamically can be a Script Record, a Module Record, or null. So to https://tc39.es/proposal-shadowrealm/#sec-shadowrealmimportvalue, the HostImportModuleDynamicallyCallback is been invoked with a `null` resource_name. This may not be considered a breaking change as the parameter resource_name is defined as Local<Value>. Updates d8's DoHostImportModuleDynamically to handle null resource_name, and resolve the dynamically imported specifier relative to the executing script's origin. In this way, we have to set ModuleEmbedderData.origin even if the JavaScript source to be evaluated is Script. Also, a ModuleEmbedderData is created for each ShadowRealm to separate their module maps from the initiator context's. Bug: v8:11989 Change-Id: If70fb140657da4f2dd92eedfcc4515211602aa46 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3522883Reviewed-by:
Shu-yu Guo <syg@chromium.org> Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Chengzhong Wu <legendecas@gmail.com> Cr-Commit-Position: refs/heads/main@{#80118}
-
- 20 Apr, 2022 1 commit
-
-
Liu Yu authored
Besides, enable float support on simulator. Port commit 098f31f4 Port commit a6da8161 As defined in https://loongson.github.io/LoongArch-Documentation/LoongArch-ELF-ABI-EN.html#_procedure_calling_convention Loongarch calling convention uses GP to pass floating-point arguments when no FP is available. Bug: v8:12614, chromium:1052746 Change-Id: I33d4115674604604b2b7e9178a306efb6000222b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3448195Reviewed-by:
Maya Lekova <mslekova@chromium.org> Reviewed-by:
Thibaud Michaud <thibaudm@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Yu Liu <liuyu@loongson.cn> Auto-Submit: Yu Liu <liuyu@loongson.cn> Cr-Commit-Position: refs/heads/main@{#80062}
-
- 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}
-
- 07 Apr, 2022 1 commit
-
-
Nico Hartmann authored
This CL adds the requirements to port object definitions back to C++. A @cppObjectDefinition is introduced to annotate classes for which Torque shall merely generate asserts to check that offsets match between Torque and C++. As a first object, this CL ports Oddball back to C++. Bug: v8:12710 Change-Id: I1304d8980f6318ffccbc2ef7284cb9d46ff579e8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3523046Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Nico Hartmann <nicohartmann@chromium.org> Cr-Commit-Position: refs/heads/main@{#79856}
-
- 04 Apr, 2022 1 commit
-
-
Jakob Gruber authored
.. since they are the same as eager deopts (% an unused counter). Fixed: v8:12765 Change-Id: I2be6210e476ead4ac6629a49259f28321e965867 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3565717Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Jakob Linke <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#79729}
-
- 30 Mar, 2022 1 commit
-
-
Jakob Gruber authored
.. with readability and simplicity in mind. - Rename OptimizationMarker to the (shorter) TieringState. 'Tiering' also matches 'TieringManager' terminology. - Rename the values: kNone -> kNone kInOptimizationQueue -> kInProgress kCompileFoo_NotConcurrent -> kRequestFoo_Synchronous kCompileFoo_Concurrent -> kRequestFoo_Concurrent - Likewise rename ConcurrencyMode::kNotConcurrent to kSynchronous. - Add predicates to test enum values. - Consistent lower case names for accessors on JSFunction and FeedbackVector. - Instead of having to call HasOptimizationMarker() before using any other accessor, simply have optimization_marker() return kNone if no feedback vector exists. - Drive-by: Enable the Unreachable() in MaybeOptimizeCode() unconditionally - this should never happen, there's no reason not to protect against this in release builds as well. Bug: v8:12161 Change-Id: I67c03e2b7bd0a6b86d0c64f504ad8cb47e9e26ae Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3555774Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Jakob Linke <jgruber@chromium.org> Auto-Submit: Jakob Linke <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#79669}
-
- 28 Mar, 2022 1 commit
-
-
Dominik Inführ authored
Define ctors for BasicMemoryChunk, ReadOnlyPage, MemoryChunk, Page and LargePage. We can use those with placement-new to initialize pages. We now initialize chunks at once either for ReadOnlyPage, Page or LargePage. Previously initialization happened in multiple locations starting with BasicMemoryChunk::Initialize. Adding ctors to these classes should improve debugging, since debug info for classes without ctors was removed with the compiler flag `-fuse-ctor-homing`. Change-Id: Ib842bb9b1e93a6576cad8299b7c5dbfe299baa33 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3545092Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/main@{#79638}
-
- 25 Mar, 2022 1 commit
-
-
legendecas authored
Implement WrappedFunction properties name/length. Bug: v8:11989 Change-Id: I050af5814537552ef6c2077802ffc726f2e08fa3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3507201Reviewed-by:
Shu-yu Guo <syg@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Commit-Queue: Chengzhong Wu <legendecas@gmail.com> Cr-Commit-Position: refs/heads/main@{#79628}
-
- 24 Mar, 2022 1 commit
-
-
Milad Fa authored
P10 comes with prefixed instruction (2 x 4-byte instructions) which allow for using larger immediate values. `paddi` has been added in this CL which uses a 34-bit immediate. Prefixed instructions cannot cross 64-byte boundaries, i.e we cannot have the first 4-bytes on one side and the second 4-bytes emitted on the other side of the boundary. Therefore we need to align generated code to 64 bytes and emit a nop whenever the boundary is being crossed midway (check emit_prefix). Change-Id: I90e9953089214e15eeef0d70147ea5943fe05f45 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3528993Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Junliang Yan <junyan@redhat.com> Commit-Queue: Milad Farazmand <mfarazma@redhat.com> Cr-Commit-Position: refs/heads/main@{#79612}
-
- 21 Mar, 2022 2 commits
-
-
jameslahm authored
Originally, 'Promise()' without 'new' will throw "undefined is not a promise". Now it will throw "Promise constructor cannot be invoked without 'new'". Bug: v8:10817 Change-Id: Ic8b72a902ed395e44dbb32ccf96a2130a4a9422f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3459924Reviewed-by:
Nikolaos Papaspyrou <nikolaos@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/main@{#79547}
-
Jakob Gruber authored
This CL removes: - Dynamic map checks aka minimorphic property loads (TF support, builtins). - "Bailout" deopts (= drop to the interpreter once, but don't throw out optimized code). - "EagerWithResume" deopts (= part of dynamic map check functionality, we call a builtin for the deopt check and deopt or resume based on the result). Fixed: v8:12552 Change-Id: I492cf1667e0f54586690b2f72a65ea804224b840 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3401585 Auto-Submit: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Sathya Gunasekaran <gsathya@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/main@{#79544}
-
- 14 Mar, 2022 2 commits
-
-
Victor Gomes authored
The CL implements binary operations bytecodes as generic nodes that call the correspondent runtime builtin. Bug: v8:7700 Change-Id: I82c5e20e4103d4ef367184af1242bae7f7f93fe0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3509392Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Victor Gomes <victorgomes@chromium.org> Commit-Queue: Victor Gomes <victorgomes@chromium.org> Cr-Commit-Position: refs/heads/main@{#79462}
-
Leszek Swirski authored
Modernise the RegList interface to be a proper class, rather than a typedef to an integer, and add proper methods onto it rather than ad-hoc bit manipulation. In particular, this makes RegList typesafe, adding a DoubleRegList for DoubleRegisters. The Arm64 CPURegList isn't updated to use (or extend) the new RegList interface, because of its weird type-erasing semantics (it can store Registers and VRegisters). Maybe in the future we'll want to get rid of CPURegList entirely and use RegList/DoubleRegList directly. Change-Id: I3cb2a4d386cb92a4dcd2edbdd3fba9ef71f354d6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3516747 Commit-Queue: Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/main@{#79460}
-
- 10 Mar, 2022 1 commit
-
-
Shu-yu Guo authored
Atomics.load and Atomics.store now accept string field names as the 2nd argument when the 1st argument is a shared struct. Currently these are implemented in C++ and not yet in CSA. Bug: v8:12547 Change-Id: Ideeafc13fb6a925540edf3dc17428c8e50bcee79 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3510837 Commit-Queue: Shu-yu Guo <syg@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/main@{#79431}
-