Commit Graph

80189 Commits

Author SHA1 Message Date
Ilya Rezvov
fa73edeb1e Revert "[gc][static-roots] Fix one remaining access to r/o markbits"
This reverts commit 229f91a339.

Reason for revert: Initial CL(https://chromium-review.googlesource.com/c/v8/v8/+/4212397) with InReadOnlySpace() was reverted.

Original change's description:
> [gc][static-roots] Fix one remaining access to r/o markbits
>
> Yet another access to the markbits on the r/o pages that was overlooked
> in https://chromium-review.googlesource.com/c/v8/v8/+/4212397.
>
> No-Tree-Checks: true
> No-Try: true
> Bug: v8:13717
> Change-Id: I682a2604512dfda00b3f69d0e1f60edd66391687
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4221702
> Commit-Queue: Olivier Flückiger <olivf@chromium.org>
> Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
> Auto-Submit: Olivier Flückiger <olivf@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#85672}

Bug: v8:13717
Change-Id: I72a629d335c1ec90d080dbc4a3e79ab54da7a8b0
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4226003
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Ilya Rezvov <irezvov@chromium.org>
Owners-Override: Ilya Rezvov <irezvov@chromium.org>
Commit-Queue: Ilya Rezvov <irezvov@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85697}
2023-02-06 21:27:01 +00:00
Ilya Rezvov
e6353fe071 Revert "[gc][static-roots] Fix more accesses to r/o markbits"
This reverts commit c5ff664bc8.

Reason for revert: Initial CL(https://chromium-review.googlesource.com/c/v8/v8/+/4212397) with InReadOnlySpace() was reverted.

Original change's description:
> [gc][static-roots] Fix more accesses to r/o markbits
>
> Two overlooked ones in marking barrier and cppgc.
>
> Fixes blink tests.
>
> Bug: v8:13717
> Change-Id: I2c8beb0db1bcc38ae37a058f02da448dae9c7207
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4224152
> Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
> Auto-Submit: Olivier Flückiger <olivf@chromium.org>
> Commit-Queue: Olivier Flückiger <olivf@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#85692}

Bug: v8:13717
Change-Id: I2e6c45251c28d5de2580833a0cdcfe8630046803
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4226004
Commit-Queue: Ilya Rezvov <irezvov@chromium.org>
Owners-Override: Ilya Rezvov <irezvov@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Ilya Rezvov <irezvov@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85696}
2023-02-06 21:25:56 +00:00
Ilya Rezvov
a37302d8f7 Revert "[gc][static-roots] Don't access markbits on R/O pages"
This reverts commit a2f63f1886.

Reason for revert: It breaks chromium integration tests https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Blink%20Linux/22574/overview

Original change's description:
> [gc][static-roots] Don't access markbits on R/O pages
>
> Markbits on read only pages are initialized BLACK and never change. For
> any practical purposes they are unused.
>
> This CL prevents any access to the markbits of these pages. This is a
> precursor to removing them entirely from the page to make room for
> static roots.
>
> Bug: v8:13466
> Change-Id: I61d3f6d9bbca750d0f34475859b34ff44f7fec1e
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4212397
> Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
> Auto-Submit: Olivier Flückiger <olivf@chromium.org>
> Commit-Queue: Olivier Flückiger <olivf@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#85665}

Bug: v8:13466
Change-Id: Icda4be38da984fdefd40301238c361a86f912141
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4225673
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Ilya Rezvov <irezvov@chromium.org>
Owners-Override: Ilya Rezvov <irezvov@chromium.org>
Commit-Queue: Ilya Rezvov <irezvov@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85695}
2023-02-06 18:34:39 +00:00
Michael Lippautz
908fc3c89c [heap] MinorMC: Split up PageMarkingItem further
PageMarkingItem is used to process OLD_TO_NEW regular and typed slots
sets. These slot sets are disjoint and do not share state that needs to
be modified, i.e., can be processed in parallel.

Rework PageMarkingItem to allows for parallel processing of slot sets on
a single page. Remove the lock as it should not be necessary.

The CL does not change the cost function for computing tasks.

Drive-by: Optimize marking a single object on filtering.

Bug: v8:12612
Change-Id: I6595d857d6df23d9d427bcdf5ecb3c9ea1c3c9ad
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4224451
Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85694}
2023-02-06 18:33:35 +00:00
Michael Lippautz
2262ba881c [heap] Refactor invoking of first pass callbacks
Avoid generating a tracing scope when there's no such callbacks.

Drive-by: Avoid a return value in the GC call by using a getter in the
single place that is actually interested in whether external callbacks
have been executed for global handles.

Change-Id: I07082b4a2a68c37ccc90a5aae936d484bacd3717
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4224132
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85693}
2023-02-06 18:12:48 +00:00
Olivier Flückiger
c5ff664bc8 [gc][static-roots] Fix more accesses to r/o markbits
Two overlooked ones in marking barrier and cppgc.

Fixes blink tests.

Bug: v8:13717
Change-Id: I2c8beb0db1bcc38ae37a058f02da448dae9c7207
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4224152
Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
Auto-Submit: Olivier Flückiger <olivf@chromium.org>
Commit-Queue: Olivier Flückiger <olivf@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85692}
2023-02-06 17:27:46 +00:00
pthier
31da231deb [regexp] Fix gcc link error for RegExpClassSetExpression::Empty
Fix gcc link error by adding missing include.

Change-Id: I95fcd09ad6c89d1b3d38c3f31a2cfad8ff464701
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4224459
Commit-Queue: Patrick Thier <pthier@chromium.org>
Auto-Submit: Patrick Thier <pthier@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85691}
2023-02-06 17:11:44 +00:00
Leszek Swirski
32e94af866 [maglev] Use Sub instead of sub
Because the Immediate might not fit in an immediate.

Bug: v8:7700
Change-Id: Ie5efca4af40cc4b10766144a295046f99cb5f25c
Fixed: chromium:1412730
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4224462
Auto-Submit: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Commit-Queue: Victor Gomes <victorgomes@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85690}
2023-02-06 16:50:07 +00:00
Victor Gomes
11c99c33fe Reland "[maglev] Set --maglev-inlining as experimental"
This is a reland of commit 2be76fca4b

Original change's description:
> [maglev] Set --maglev-inlining as experimental
>
> Bug: v8:7700
> Change-Id: Ida08a24e91149cbc895eb7328774a1154a2e15db
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4218741
> Reviewed-by: Leszek Swirski <leszeks@chromium.org>
> Auto-Submit: Victor Gomes <victorgomes@chromium.org>
> Commit-Queue: Victor Gomes <victorgomes@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#85678}

Bug: v8:7700
Change-Id: Icead7dfd218a66fb963218d31e1e09e202af8e3b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4224455
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Victor Gomes <victorgomes@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85689}
2023-02-06 16:39:25 +00:00
Victor Gomes
59c3f11e1d [maglev][arm64] Use consistently macro instructions
We should use consistently macro instructions in arm64
(instruction starting with a capital letter). To avoid
issues like https://crrev.com/c/4224931

Bug: v8:7700
Change-Id: I8f64c1b305ee14332ac85e8be71357a2f99c6442
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4224460
Commit-Queue: Victor Gomes <victorgomes@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85688}
2023-02-06 16:29:14 +00:00
Nico Hartmann
6d2bd5afdc [turboshaft] Fix typing of NaN ** 0
Bug: v8:12783, chromium:1412629
Change-Id: If00a7467443df50cd2c79b3bb09f9dd92dd0548b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4221773
Auto-Submit: Nico Hartmann <nicohartmann@chromium.org>
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85687}
2023-02-06 15:59:56 +00:00
Leszek Swirski
8a6b841721 [maglev] Use B instead of b on arm64
`MacroAssembler::B` registers its labels with the veneer pool, while
`Assembler::b` doesn't. This meant that our JumpIf (used in particular
for deopts) could run out of jump distance.

As a drive by, also limit the maximum number of deopts according to the
limit set by the deoptimizer. This turned out to not be the issue, but
we should also do it.

Bug: v8:7700
Change-Id: Ic5a8dd3b69c995375d7caab008f31ae91d9c732d
Fixed: chromium:1410080
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4224931
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Auto-Submit: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85686}
2023-02-06 15:49:14 +00:00
Jakob Kummerow
5472313c96 [wasm-gc] Update ref.cast_nop to behave like ref.cast
This updates the (experimental, unsafe, non-standard) ref.cast_nop
to take the same immediate as the new ref.cast.
This is being done in order to align with Binaryen, per discussion
in https://github.com/WebAssembly/binaryen/pull/5473.

Bug: v8:7748
Change-Id: Ifcd2bab95a1601406370939301a5c6dfd854347c
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4224632
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Auto-Submit: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Matthias Liedtke <mliedtke@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85685}
2023-02-06 15:22:23 +00:00
Samuel Groß
e0d7681e31 Remove negative flag implication for --experimental
The conflict with --future causes tests that enable experimental
features to fail if the test configuration enables --future, and the
conflict with --fuzzing makes it impossible to reproduce issues in
Clusterfuzz as it always adds --fuzzing to the commandline.

Change-Id: I7d952fc5c09967386e06d992b4dbd6129ea404c0
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4224454
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Samuel Groß <saelo@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85684}
2023-02-06 15:20:06 +00:00
Leszek Swirski
58076e4263 [maglev] Elide hasOwnProperty on fast for-in
WIP

Bug: v8:7700
Change-Id: I48feba3e38967ba38873efdef6827d2218fbc426
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4184202
Commit-Queue: Victor Gomes <victorgomes@chromium.org>
Auto-Submit: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85683}
2023-02-06 15:18:50 +00:00
Leszek Swirski
d12417f875 Revert "[maglev] Set --maglev-inlining as experimental"
This reverts commit 2be76fca4b.

Reason for revert: Breaking flag implications: https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux64%20TSAN%20-%20no-concurrent-marking/13134/overview

Original change's description:
> [maglev] Set --maglev-inlining as experimental
>
> Bug: v8:7700
> Change-Id: Ida08a24e91149cbc895eb7328774a1154a2e15db
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4218741
> Reviewed-by: Leszek Swirski <leszeks@chromium.org>
> Auto-Submit: Victor Gomes <victorgomes@chromium.org>
> Commit-Queue: Victor Gomes <victorgomes@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#85678}

Bug: v8:7700
Change-Id: I4c88530a76cc73109bc921152d786f3db031790d
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4224452
Auto-Submit: Leszek Swirski <leszeks@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@{#85682}
2023-02-06 14:16:10 +00:00
Dominik Inführ
95b7d03067 [heap] Move ActiveSystemPages out of page header
ActiveSystemPages uses std::bitset internally for convenience. Our
MemoryChunk fields implicitly assume that all fields only require
system pointer alignment.

However MSVC on 32-bit uses uint64_t internally to implement
std::bitset. Because of this ActiveSystemPages needs 8-bytes alignment
on 32-bit architectures. We can solve this by moving
ActiveSystemPages out of the page header and storing it in the
malloc()'ed heap.

Bug: v8:13716
Change-Id: Iecb17372d065c612bbdbca7d854c76d3256bc01d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4223005
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Auto-Submit: Dominik Inführ <dinfuehr@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85681}
2023-02-06 14:01:51 +00:00
pthier
ee93bc8035 [regexp] Handle empty nested classes correctly
With the recent introduction of unicode sets (v-flag), nested character
classes are allowed in regular expressions.
We always expect a nested class to be of type
`RegExpClassSetExpression`, but the empty nested class was not handled
correctly.

Bug: v8:11935, chromium:1412942
Change-Id: I3b644c8627d8fc6b320a419216372810e8003983
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4224311
Reviewed-by: Jakob Linke <jgruber@chromium.org>
Commit-Queue: Patrick Thier <pthier@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85680}
2023-02-06 13:53:12 +00:00
Al Muthanna Athamina
8c4779241a Add tests directory to watchlist
No-Try: true
Change-Id: I6e8f1130ed0fe89d4f5ca8e9ff01ff68f13cbbdf
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4221699
Commit-Queue: Almothana Athamneh <almuthanna@chromium.org>
Auto-Submit: Almothana Athamneh <almuthanna@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85679}
2023-02-06 13:41:05 +00:00
Victor Gomes
2be76fca4b [maglev] Set --maglev-inlining as experimental
Bug: v8:7700
Change-Id: Ida08a24e91149cbc895eb7328774a1154a2e15db
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4218741
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Auto-Submit: Victor Gomes <victorgomes@chromium.org>
Commit-Queue: Victor Gomes <victorgomes@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85678}
2023-02-06 13:37:28 +00:00
Dominik Inführ
f707a4d8f0 [heap] Do not shortcut strings when shared marking is active
We DCHECK in the scavenger that evacuated objects are not allocated
on evacuation candidates. This DCHECK fails however when
shortcutting ThinStrings to the actual string object when
incremental marking is enabled in the shared heap.

We fix this by disabling shortcutting of strings when shared
incremental marking is enabled. We already do this for incremental
marking in the local isolate.

Bug: v8:13267, chromium:1412643
Change-Id: I2a61028ae5377c7621b917ed332e15d6b25b80ff
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4219781
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Auto-Submit: Dominik Inführ <dinfuehr@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85677}
2023-02-06 13:35:26 +00:00
Olivier Flückiger
088c2c560a [static-roots] Common owners for static-roots.h
Since this is a generated file everyone should be able to update it.

Bug: v8:13466
Change-Id: Ia769bc82d6d5fdd6638763ef5330fe6aefbaf8c9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4221698
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85676}
2023-02-06 13:16:39 +00:00
JianxiaoLuIntel
422090017f [x64][codegen] Remove redundant cmp in BinarySearchSwitch
Before:
1b6  cmpl r15,0xb
1ba  jl 0x7f69801dd7d5  <+0x1d5>
1bc  cmpl r15,0xb
1c0  jz 0x7f69801dd842  B200,201,202,203,204,205 <+0x242>

1b6  cmpl r15,0xb
1ba  jl 0x7fa6a00a8591  <+0x1d1>
1bc  jz 0x7fa6a00a85fa  B200,201,202,203,204,205 <+0x23a>

After: 
Change-Id: I820c9291638f27750cb77a0dcd5f1108c4ab8115
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4219940
Commit-Queue: Jianxiao Lu <jianxiao.lu@intel.com>
Reviewed-by: Nico Hartmann <nicohartmann@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85675}
2023-02-06 12:31:23 +00:00
Michael Lippautz
7e43e0bee3 [heap] MinorMC: Rework global handles processing
Global handles processing could not actually restart marking anymore.
Weak handles are either reset or already point to live objects. This is
different from the scavenger that actually needs to update the
forwarding pointer for live objects. Move the phase to clearing of
references instead.

Bug: v8:12612
Change-Id: I21f1ba468f257990d23a129f24d5496c38c4eb04
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4224151
Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85674}
2023-02-06 12:29:24 +00:00
Michael Lippautz
d032734c12 [heap] MinorMC: marking refactoring
- Move CppHeap code into scopes
- Move class declarations out of inline header
- Add TODO for working global handles processing

Bug: v8:12612
Change-Id: I97737d4f5ded940f0145ba093963f45338d44d57
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4221701
Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85673}
2023-02-06 12:09:29 +00:00
Olivier Flückiger
229f91a339 [gc][static-roots] Fix one remaining access to r/o markbits
Yet another access to the markbits on the r/o pages that was overlooked
in https://chromium-review.googlesource.com/c/v8/v8/+/4212397.

No-Tree-Checks: true
No-Try: true
Bug: v8:13717
Change-Id: I682a2604512dfda00b3f69d0e1f60edd66391687
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4221702
Commit-Queue: Olivier Flückiger <olivf@chromium.org>
Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
Auto-Submit: Olivier Flückiger <olivf@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85672}
2023-02-06 11:49:17 +00:00
Matthias Liedtke
65a0aaab04 [wasm] Fix loop unrolling being skipped
As part of https://crrev.com/c/4200642 loop peeling was enabled for
loops containing a getCodeUnit instruction.
As a side effect this also affected loop unrolling now only happening
if getCodeUnit was used in the loop body which is fixed by this
change.

Bug: chromium:1412781
Change-Id: I60e3a524340cfbdb907ae2ee5b46cbb6f514775c
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4219103
Auto-Submit: Matthias Liedtke <mliedtke@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Reviewed-by: Manos Koukoutos <manoskouk@chromium.org>
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85671}
2023-02-06 11:30:52 +00:00
Victor Gomes
81857203e9 [maglev] Get converted receiver if needed in inlined functions
Bug: v8:7700
Change-Id: I8039368d898a9884def7245efefc498af44bcc3a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4218742
Auto-Submit: Victor Gomes <victorgomes@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85670}
2023-02-06 10:56:05 +00:00
pthier
8ce9714936 [heap] Sweep shared LO space
Shared Large Object Space was added with the introduction of shared
space, but it was never swept.
Besides leaking memory, this led to issues as mark bits were never
cleared and object bodies not re-visited. If the map of an object changed, we would miss visiting potentially newly introduced pointer fields (e.g. SeqString -> ExternalString), freeing EPT entries that were still in use.

Bug: v8:13267, chromium:1407167
Change-Id: Id7bea2ebfbc5a4d935af4b97b7474d64d609a95d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4221578
Commit-Queue: Patrick Thier <pthier@chromium.org>
Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85669}
2023-02-06 10:39:49 +00:00
Nikolaos Papaspyrou
7649ef2220 [heap][test] Disable weakref tests for stress concurrent allocation
These tests are unsuitable for "stress concurrent allocation" mode,
because it triggers GCs that interfere with the execution of
FinalizationRegistry cleanup tasks or with the clearing of WeakRefs.

Bug: v8:13257
Bug: v8:13713
Change-Id: Id43d95b53d3f68f1f70ad6ee9ff8e08e70007d13
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4221575
Commit-Queue: Nikolaos Papaspyrou <nikolaos@chromium.org>
Reviewed-by: Shu-yu Guo <syg@chromium.org>
Reviewed-by: Marja Hölttä <marja@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85668}
2023-02-06 10:24:59 +00:00
Olivier Flückiger
2bcd96f3fa [static-roots][x64] Load tagged root as quad word
Experiment to see if this resolves a particular regression.

Bug: chromium:1407581
Bug: v8:13466
Change-Id: I45d68a14fab43775fae65dbe710d24db504f5486
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4218393
Reviewed-by: Jakob Linke <jgruber@chromium.org>
Commit-Queue: Jakob Linke <jgruber@chromium.org>
Auto-Submit: Olivier Flückiger <olivf@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85667}
2023-02-06 10:10:50 +00:00
Samuel Groß
4ae2bea49f [d8] Print --experimental message earlier in d8.cc
Previously, we printed the message in RunShell, which meant that it was
only visible if d8 was running in interactive mode. Now we print it
earlier so that the message is also printed when d8 executes a .js file.

Change-Id: Icdadbe5eee7400aaa843b747e3374bda41e360b8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4224014
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Samuel Groß <saelo@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85666}
2023-02-06 09:49:36 +00:00
Olivier Flückiger
a2f63f1886 [gc][static-roots] Don't access markbits on R/O pages
Markbits on read only pages are initialized BLACK and never change. For
any practical purposes they are unused.

This CL prevents any access to the markbits of these pages. This is a
precursor to removing them entirely from the page to make room for
static roots.

Bug: v8:13466
Change-Id: I61d3f6d9bbca750d0f34475859b34ff44f7fec1e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4212397
Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
Auto-Submit: Olivier Flückiger <olivf@chromium.org>
Commit-Queue: Olivier Flückiger <olivf@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85665}
2023-02-06 09:36:57 +00:00
Samuel Groß
7edcd83d1b [watchlist] Add saelo to flag-definitions.h watchlist
Change-Id: Id3c3feb2ffe4b03cd2a33816fccda0cd50c5f092
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4224013
Commit-Queue: Samuel Groß <saelo@chromium.org>
Reviewed-by: Emanuel Ziegler <ecmziegler@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85664}
2023-02-06 09:28:58 +00:00
Victor Gomes
21c9163eeb [maglev] Missing ReduceResult::Fail()
Missing nullptr -> ReduceResult::Fail in refactor:
https://chromium-review.googlesource.com/c/v8/v8/+/4218731

Fixed: chromium:1413052
Bug: v8:7700
Change-Id: I93d24916b20d42a650545a11c81a369d53bd5764
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4224031
Commit-Queue: Victor Gomes <victorgomes@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Auto-Submit: Victor Gomes <victorgomes@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85663}
2023-02-06 09:07:19 +00:00
Victor Gomes
64af278b30 [maglev][inline] Refactor inner graph building to BuildInlined
Bug: v8:7700
Change-Id: Ie17aff5cff54f4640dd94f822e95e92bfd373890
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4218732
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Auto-Submit: Victor Gomes <victorgomes@chromium.org>
Commit-Queue: Victor Gomes <victorgomes@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85662}
2023-02-06 08:55:24 +00:00
v8-ci-autoroll-builder
1cf95e3e49 Update V8 DEPS (trusted)
Rolling v8/buildtools: a706ef8..5408fe0

Rolling v8/buildtools/third_party/libc++/trunk: c8da880..549781a

Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/123a98b..d0d703e

Rolling v8/third_party/fuchsia-sdk/sdk: version:11.20230204.1.1..version:11.20230202.3.1

Change-Id: Iff001e57ead073d8ea4d292ebd8e3b3b41c7297c
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4223514
Commit-Queue: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com>
Bot-Commit: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#85661}
2023-02-06 04:01:53 +00:00
v8-ci-autoroll-builder
6c19077e86 Update V8 DEPS (trusted)
Rolling v8/buildtools: cf6f58c..a706ef8

Rolling v8/buildtools/third_party/libc++/trunk: 7a7a3a7..c8da880

Rolling v8/third_party/fuchsia-sdk/sdk: version:11.20230202.3.1..version:11.20230204.1.1

Change-Id: Ib9537912d77169308e0bb64a9e502196ff5f548e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4222419
Commit-Queue: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com>
Bot-Commit: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#85660}
2023-02-05 04:07:43 +00:00
Jakob Kummerow
702fdc02a2 Revert "[liftoff] Combine "InitMerge" with the actual merge"
This reverts commit 656c74218f.

Reason for revert: crbug.com/v8/13715

Original change's description:
> [liftoff] Combine "InitMerge" with the actual merge
>
> "InitMerge" did compute the state at the merge point, and a following
> "MergeStackWith" or "MergeFullStackWith" would then generate the code to
> merge the current state into the computed state.
> As every "InitMerge" is followed by an actual merge, we can combine the
> two and save one iteration over the two states.
>
> The only change in generated code is that we initialize the merge state
> after a one-armed if from the if-state instead of the else-state. This
> could potentially make the if-branch slightly cheaper and the
> else-branch slightly slower, but will not negatively impact overall code
> size.
>
> This CL should save roughly 2% of Liftoff compilation time.
>
> R=​dlehmann@chromium.org
>
> Bug: v8:13565, v8:13673
> Change-Id: Id323a15e7fd765727f46830509fbaf7f5498c229
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4203380
> Reviewed-by: Daniel Lehmann <dlehmann@chromium.org>
> Commit-Queue: Clemens Backes <clemensb@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#85616}

Bug: v8:13565, v8:13673, v8:13715
Change-Id: I5342833aaa9c8665a514b3702eaf783d512dfa5f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4222633
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#85659}
2023-02-04 21:42:37 +00:00
Milad Fa
5275c1a407 s390: [ptrcomp] Remove the distinction of TaggedAny and TaggedPointer
Port 81aa89592b

Original Commit Message:

    Known-pointer decompression used to be distinct from any-tagged-value
    decompression, since the latter used to detect Smis and decompress them
    with sign extension. However, we got rid of this distinction when we
    introduced Smi-corrupting loads (allowing the top 32-bits of
    uncompressed Smis to be undefined), which means that the TaggedPointer
    and TaggedAny decompression is now identical.

    We can remove a bunch of duplicate code by removing this distinction.

R=leszeks@chromium.org, joransiu@ca.ibm.com, junyan@redhat.com, midawson@redhat.com
BUG=
LOG=N

Change-Id: Ib741905e09c929806cf3f584c356a4a5187df270
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4221514
Commit-Queue: Milad Farazmand <mfarazma@redhat.com>
Reviewed-by: Junliang Yan <junyan@redhat.com>
Cr-Commit-Position: refs/heads/main@{#85658}
2023-02-04 16:39:29 +00:00
v8-ci-autoroll-builder
e652f5a34a Update ICU (trusted)
Rolling v8/third_party/icu: 2c51e5c..266a469

On iOS do not use minimal ICU data when use_blink is set (Dave Tapuska)
https://chromium.googlesource.com/chromium/deps/icu/+/266a469

Revert "[config] Declare the args conditionally" (Filip Filmar)
https://chromium.googlesource.com/chromium/deps/icu/+/2cce76f

Revert "[fuchsia] Limit the visibility of ICU targets" (Filip Filmar)
https://chromium.googlesource.com/chromium/deps/icu/+/d8b44f9

Change-Id: If14dee279645be30fc9fa65d420af6379b3b187a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4219570
Commit-Queue: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com>
Bot-Commit: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#85657}
2023-02-04 04:25:17 +00:00
v8-ci-autoroll-builder
e940b92707 Update V8 DEPS (trusted)
Rolling v8/build: f7baf4b..d0fad16

Rolling v8/buildtools: 9ad5f9f..cf6f58c

Rolling v8/buildtools/third_party/libc++/trunk: bd44075..7a7a3a7

Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/7b05da8..123a98b

Rolling v8/third_party/depot_tools: 79499cf..ef2d011

Change-Id: I52157d8daeaa7f2517a01456ed280c3cbdc7ef9a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4219568
Commit-Queue: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com>
Bot-Commit: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#85656}
2023-02-04 04:17:03 +00:00
Shu-yu Guo
d14d17300b [test262] Roll test262
f00d4118d..e7364ea7d

Bug: v8:7834
Change-Id: Ie10ed625cea9f11167f1a8808404339eb0e3d5cf
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4219942
Commit-Queue: Shu-yu Guo <syg@chromium.org>
Reviewed-by: Adam Klein <adamk@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85655}
2023-02-03 20:31:41 +00:00
Choongwoo Han
d5784303a1 [v8windbg] Fix curisolate() again
The last CL miscalculated the address of Isolate object. We should find the thread_local base address using `_tls_index_`. And, instead of calculating the address manually, all the location information is already available in `Location`. So, we can simply use the Location object to create a typed object.

Also, adding a testcase for `curisolate()` function.

Bug: v8:13394
Change-Id: I1da55bdf43a3b6100d141917eb97a1793939dca8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4220104
Reviewed-by: Seth Brenith <seth.brenith@microsoft.com>
Commit-Queue: Choongwoo Han <choongwoo.han@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#85654}
2023-02-03 20:04:07 +00:00
Omer Katz
f18065a3ca [heap] Fix bug in external strings table cleaning
After a MinorMC we iterate over the set of young external strings,
finalize the unmarked ones, and clear their slots.
Since MinorMC no longer updates the young string set (to avoid iterating
over the set during evacuation) it may now contain an old string.
If after promoting an external string from young to old,  we get another
MinorMC cycle before we get a full GC (that will "reset" the young and
old string sets), the next MinorMC cycle may treat the promoted string
as unreachable. This is because the string is in old space are is
therefore left unmarked.

Bug: chromium:1412669, v8:12612
Change-Id: I1cacc25b74d9d3dd221c0cc1f0d8b4c4eb83a04d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4219106
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Auto-Submit: Omer Katz <omerkatz@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85653}
2023-02-03 18:21:44 +00:00
Dave Tapuska
0253c3a979 [ios] Fix an additional build failure on iOS.
- Adjust an is_mac to is_apple

Bug: chromium:1411704
Change-Id: I2456f8b4f793b37f4b64782e8403dd4fc84b0807
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4221871
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Dave Tapuska <dtapuska@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85652}
2023-02-03 17:55:42 +00:00
Victor Gomes
8263a03f12 [maglev][inline] Fix always deopting inlined functions
Also creates a Result wrapper,

Bug: v8:7700
Change-Id: I6a78e9ae5ee2af60dae2e62ca0a876701890de78
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4218731
Commit-Queue: Victor Gomes <victorgomes@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85651}
2023-02-03 17:34:25 +00:00
Mikhail Khokhlov
051df31aec Reland "Reduce build size when building with Perfetto SDK"
This is a reland of commit 0d4200055b

gn complained about headers that are only included behind the
v8_use_perfetto build flag. Added "nogncheck" to suppress this
warning.

Original change's description:
> Reduce build size when building with Perfetto SDK
>
> Building Chromium with full Perfetto SDK included increases build time
> significantly. We can reduce this overhead by including only those
> parts that are required. See b/266913150 for context.
>
> Change-Id: I0cde5cb7df7b6151ec686e993488d8467c416fac
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4212390
> Reviewed-by: Toon Verwaest <verwaest@chromium.org>
> Commit-Queue: Mikhail Khokhlov <khokhlov@google.com>
> Cr-Commit-Position: refs/heads/main@{#85603}

Change-Id: Ifdcc9983230b5e7bab5f66a37f193d2cee698400
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4221573
Commit-Queue: Mikhail Khokhlov <khokhlov@google.com>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85650}
2023-02-03 17:03:11 +00:00
Nico Hartmann
79efc8f090 Revert "[wasm-gc] Introduce wasm null object"
This reverts commit 2e357c4814.

Reason for revert: Speculative revert for https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Clusterfuzz%20Linux%20MSAN%20no%20origins/33231/overview

Original change's description:
> [wasm-gc] Introduce wasm null object
>
> We introduce a wasm null object, separate from JS null. Its purpose is
> to support trapping null accesses for wasm objects.
> This will be achieved by allocating a large payload for it (larger than
> any wasm struct) and memory-protecting it (see linked CL). The two null
> objects get mapped to each other at the wasm-JS boundary.
> Since externref objects live on the JS side of the boundary,
> null-related instructions in wasm now need an additional type argument
> to handle the correct null object.
>
> Bug: v8:7748
> Change-Id: I06da00fcd279cc5376e69ab7858e3782f5b5081e
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4200639
> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
> Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#85648}

Bug: v8:7748
Change-Id: Ie53febf49b946217e0057959c757d811a97ca1eb
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4219105
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Owners-Override: Nico Hartmann <nicohartmann@chromium.org>
Auto-Submit: Nico Hartmann <nicohartmann@chromium.org>
Commit-Queue: Nico Hartmann <nicohartmann@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85649}
2023-02-03 16:57:44 +00:00
Manos Koukoutos
2e357c4814 [wasm-gc] Introduce wasm null object
We introduce a wasm null object, separate from JS null. Its purpose is
to support trapping null accesses for wasm objects.
This will be achieved by allocating a large payload for it (larger than
any wasm struct) and memory-protecting it (see linked CL). The two null
objects get mapped to each other at the wasm-JS boundary.
Since externref objects live on the JS side of the boundary,
null-related instructions in wasm now need an additional type argument
to handle the correct null object.

Bug: v8:7748
Change-Id: I06da00fcd279cc5376e69ab7858e3782f5b5081e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4200639
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85648}
2023-02-03 16:06:12 +00:00