Commit Graph

74299 Commits

Author SHA1 Message Date
Harshal Nandigramwar
54603f2ab0 [turbolizer] Improve edge drawing in graph view
* When the source node is above the target node we draw curved (cubic bezier) lines.
* Else, we fallback to rectangular lines.

Change-Id: Ic80245c7b449942e4477f0056e63618cfbeaaaf7
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3565715
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Auto-Submit: Harshal Nandigramwar <pro.bbcom18@gmail.com>
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79807}
2022-04-06 09:14:15 +00:00
Nikolaos Papaspyrou
1614f62c33 heap: Migrate remaining incremental mark/sweep metrics
Report per-cycle incremental mark/sweep statistics to the Recorder API.
These will be used by Blink to populate UMA histograms such as
V8.GC.Cycle.MainThread.Full.Incremental.(Mark|Sweep).
Also, report time spent in starting incremental marking, used by Blink
to populate V8.GC.Event.MainThread.Full.Incremental.Mark.Start.

Bug: chromium:1154636
Change-Id: Iad205471f3b20843b7e439f47c0d681e840c9043
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3568480
Reviewed-by: Omer Katz <omerkatz@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Nikolaos Papaspyrou <nikolaos@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79806}
2022-04-06 09:09:13 +00:00
yangwenming
d961501d4f [wasm] Place spilled params as WasmCallDescriptor expects.
With this CL, spilled parameters with ref type in a call to wasm
function, will be placed at a consecutive area in the generic
JSToWasmWrapper frame as WasmCallDescriptor expected.

Bug: v8:12722
Change-Id: I8b82f35b712a32b87abf5100ec46ee499a8178bc
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3563445
Reviewed-by: Thibaud Michaud <thibaudm@chromium.org>
Commit-Queue: Thibaud Michaud <thibaudm@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79805}
2022-04-06 08:59:53 +00:00
Clemens Backes
bfe12807c1 [wasm] Enable dynamic tiering by default
This enabled dynamic tiering by default in V8. Chromium overwrites the
default, so this CL by itself has no effect on Chrome users, but a
similar CL will land in the chromium repo.

R=mslekova@chromium.org

Bug: v8:12281
Change-Id: Iaa6d77dc80063f3c4e1d005c371573fc70c698aa
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3568449
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79804}
2022-04-06 08:52:03 +00:00
Clemens Backes
4c99c0115e [base] Remove base::conjunction
Use C++17's std::conjunction instead.

R=leszeks@chromium.org

Bug: v8:12425
Change-Id: I004a1bb4fe1b09f441f8822075a72fd20fc90fec
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3570429
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79803}
2022-04-06 08:43:13 +00:00
Jakob Gruber
30ba798cdc [osr] Remove the --function-context-specialization flag
This flag was a leftover from very early Turbofan days and serves no
purpose. Non-OSR TF code automatically uses function context
specialization (FCS) when appropriate without looking at the flag
value. OSR TF code should never use FCS since it is cached by the
SharedFunctionInfo (not by the JSFunction).

Bug: v8:12161
Change-Id: Ifb5a10918dbdf34a7164f7e665a230698b793e9e
Fixed: chromium:1313419
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3571895
Auto-Submit: Jakob Linke <jgruber@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Jakob Linke <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79802}
2022-04-06 08:14:53 +00:00
Patrick Thier
8ba60b7a8e [string] Non-transitioning shared strings
Instead of transitioning shared strings to ThinString on
internalization, use a forwarding table to the internalized string and
store the index into the forwarding table in the string's hash field.

This way we don't need to handle concurrent string transitions that
modify the underlying string data.

During stop-the-world GC, live strings in the forwarding table are
migrated to regular ThinStrings.

Bug: v8:12007
Change-Id: I6c6f3d41c6f644e0aaeafbf25ecec5ce0aa0d2d8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3536647
Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
Reviewed-by: Jakob Linke <jgruber@chromium.org>
Reviewed-by: Shu-yu Guo <syg@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Patrick Thier <pthier@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79801}
2022-04-06 07:59:33 +00:00
Anton Bikineev
4602aee58a cppgc: young-gen: Run minor GC only from task.
Oilpan minor GC currently doesn't support running with the stack. The CL
changes minor GCs to run only when running from task.

Bug: chromium:1029379
Change-Id: I96552772e9c3b653a137f48bbaae44278db8f014
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3571891
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Anton Bikineev <bikineev@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79800}
2022-04-06 07:25:13 +00:00
Hannes Payer
e220866e61 [heap] Separate GC phases flag.
This CL introduces the --separate-gc-phases flag, which prevents that young and old generation GCs can happen at the same time. When incremental marking is in progress and a young generation GC triggers, marking is forced to finish and the full collection takes care of the young generation.

Bug: v8:12503
Change-Id: Ia3e4814f46bff0fdc404b0ac618dfd48fe7cf20c
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3351973
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Hannes Payer <hpayer@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79799}
2022-04-06 07:23:39 +00:00
Dominik Inführ
c2852992fc [heap] Sweeper only needs to remove old-to-old-slots during GC
Only remove old-to-old slots during a GC, but DCHECK that the
old-to-old-slot set is empty after a full GC.

Previously we simply removed from the remembered set during and outside
the full GC. We now have a flag to DCHECK this more precisely.

Bug: v8:12760
Change-Id: Ie6adc3f47a700497aaa818da0e83d6cb94e3c75d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3562981
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79798}
2022-04-06 07:22:34 +00:00
Liu Yu
0056f4ff33 [loong64][mips][deoptimizer] Remove soft deopts
Port commit 1ff685d8b1

Fixed: v8:12765
Change-Id: Ia5ac9f06a70a11c3d7a9d97f6772f8f37db0df6f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3573114
Auto-Submit: Yu Liu <liuyu@loongson.cn>
Reviewed-by: Zhao Jiazhong <zhaojiazhong-hf@loongson.cn>
Commit-Queue: Zhao Jiazhong <zhaojiazhong-hf@loongson.cn>
Cr-Commit-Position: refs/heads/main@{#79797}
2022-04-06 06:54:54 +00:00
Bryant Chandler
badd055aa3 Revert "[fuchsia] Use SDK provided gn templates for v8_unittests"
This reverts commit 8d51d561d5.

Reason for revert: This has runtime failures because including
cmx fragments isn't working ocrrectly. Still investigating why
this wasn't discovered by CQ.

Original change's description:
> [fuchsia] Use SDK provided gn templates for v8_unittests
>
> cr_fuchsia_package is deprecated in favor of using the Fuchsia
> SDK provided rules directly.
>
> Bug: chromium:1092804
> Change-Id: I86a59b6a717cb0aa8c3473e8410bdd98f0ffd042
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3537883
> Reviewed-by: Victor Gomes <victorgomes@chromium.org>
> Reviewed-by: Wez <wez@chromium.org>
> Reviewed-by: Camillo Bruni <cbruni@chromium.org>
> Commit-Queue: Bryant Chandler <bryantchandler@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#79763}

Bug: chromium:1092804
Change-Id: I33e8a6f07c99d7040cffa579a95508e79904889e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3572005
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79796}
2022-04-06 06:13:13 +00:00
Frank Tang
519267b325 [Temporal] Add Calendar.prototype.mergeFields
Add AO: DefaultMergeFields
Spec Text:
https://tc39.es/proposal-temporal/#sec-temporal.calendar.prototype.mergefields
https://tc39.es/proposal-temporal/#sec-temporal-defaultmergefields


Bug: v8:11544
Change-Id: I270f8bffb79e57ef50736ae7ce87cfa53f9cafb1
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3388428
Reviewed-by: Adam Klein <adamk@chromium.org>
Commit-Queue: Frank Tang <ftang@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79795}
2022-04-06 05:30:23 +00:00
v8-ci-autoroll-builder
95dfb560d6 Update V8 DEPS.
Rolling v8/build: 1356876..e5b74ea

Rolling v8/buildtools/linux64: git_revision:859dde4a7f34a4383179522f8e1061dcffac8691..git_revision:5eb3845ec2d8296b4f41da4eca85302eb111fe69

Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/c4e6210..ec5b008

Rolling v8/third_party/depot_tools: c4b1b77..b8a4c0b

Rolling v8/tools/clang: fbe0742..bd06a4f

R=v8-waterfall-sheriff@grotations.appspotmail.com,mtv-sf-v8-sheriff@grotations.appspotmail.com

Change-Id: Ifb08780b273b3abd5321040de125f18b0d3edf73
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3572947
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@{#79794}
2022-04-06 04:55:23 +00:00
Frank Tang
dda56765dc [Temporal] Add Calendar.prototype.dateFromFields
Also add AO: RegulateISODate, ResolveISOMonth, ISODateFromFields

Spec Text:
https://tc39.es/proposal-temporal/#sec-temporal.calendar.prototype.datefromfields
https://tc39.es/proposal-temporal/#sec-temporal-regulateisodate
https://tc39.es/proposal-temporal/#sec-temporal-resolveisomonth
https://tc39.es/proposal-temporal/#sec-temporal-isodatefromfields

Note:
This is only the non-intl version. The intl version in
https://tc39.es/proposal-temporal/#sup-temporal.calendar.prototype.datefromfields
will be implemented in later cl.

Bug: v8:11544
Change-Id: I493dc60694421e9908eb5d785fdb8b07fc968699
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3408462
Reviewed-by: Adam Klein <adamk@chromium.org>
Commit-Queue: Frank Tang <ftang@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79793}
2022-04-06 02:59:03 +00:00
Shu-yu Guo
908e7ac767 [typedarray] Remove per-iteration detach check in TypedArray.prototype.set
Bug: v8:12750, v8:11111
Change-Id: I3e9947ec8e2883364178b497a49299a3a96332e4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3569879
Reviewed-by: Marja Hölttä <marja@chromium.org>
Commit-Queue: Shu-yu Guo <syg@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79792}
2022-04-06 02:28:33 +00:00
Lu Yahan
636d281824 [riscv64] [deoptimizer] Remove soft deopts
Port 1ff685d8b1

Change-Id: Ie60f3b9258114564d3e6a20a0049552694003d52
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3573783
Auto-Submit: Yahan Lu <yahan@iscas.ac.cn>
Reviewed-by: ji qiu <qiuji@iscas.ac.cn>
Commit-Queue: ji qiu <qiuji@iscas.ac.cn>
Cr-Commit-Position: refs/heads/main@{#79791}
2022-04-06 02:06:23 +00:00
jiepan
e57a6b5f27 [wasm][turbofan] Use non-empty function name only
If the name of a wasm function is empty, use wasm-function#id instead.

Change-Id: Ifdfb969a4d0ba5329fea0325397938e8274cf3db
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3566229
Reviewed-by: Manos Koukoutos <manoskouk@chromium.org>
Commit-Queue: Jie Pan <jie.pan@intel.com>
Cr-Commit-Position: refs/heads/main@{#79790}
2022-04-06 01:36:53 +00:00
Shu-yu Guo
f3dfbe59ed [typedarray] Remove per-comparator call detach check in TypedArray.prototype.sort
For the normative change, see https://github.com/tc39/ecma262/pull/2723

Bug: v8:12750, v8:11111
Change-Id: I8e8a2e9b443622b20bb5a4c2d453f782dfbd2ed6
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3570865
Commit-Queue: Shu-yu Guo <syg@chromium.org>
Reviewed-by: Marja Hölttä <marja@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79789}
2022-04-06 00:56:03 +00:00
Shu-yu Guo
a464158091 Roll Test262
4c7c24646a..d7c0a2076c

Bug: v8:7834, v8:10776, v8:11544, v8:12744, v8:12750
Change-Id: I782a347833af3418ff5c15562ae24f213375b539
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3573067
Commit-Queue: Shu-yu Guo <syg@chromium.org>
Auto-Submit: Shu-yu Guo <syg@chromium.org>
Reviewed-by: Adam Klein <adamk@chromium.org>
Commit-Queue: Adam Klein <adamk@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79788}
2022-04-05 23:12:03 +00:00
Shu-yu Guo
9f7277413f [builtins] Fix Array#groupBy fast path assumptions
The FastArray path for Array#groupBy and Array#groupByToMap does not
recheck the input array's length each iteration. This is incorrect since
the grouping callback can truncate the length, and we should deopt to the
generic path when this happens.

Bug: chromium:1312838, v8:12499
Change-Id: Id3a4973e9960500a2f29ed63281ea721777d4dd3
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3570342
Reviewed-by: Marja Hölttä <marja@chromium.org>
Auto-Submit: Shu-yu Guo <syg@chromium.org>
Commit-Queue: Shu-yu Guo <syg@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79787}
2022-04-05 19:46:42 +00:00
Camillo Bruni
c39e47aaa0 [tools][system-analyzer] Improve selection support
- Double click on the current timeline selection to focus and zoom in
- Make timeline-tracks focusable by setting a tabindex
- Add back arrow-key navigation for the map panel (only when focused)
- Prepare code for adding keyboard-based horizontal scrolling
- Use --code-font CSS variable

Bug: v8:10644
Change-Id: Ic473695c9fcdc795d173cd064b4660e100ae8b24
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3568475
Reviewed-by: Patrick Thier <pthier@chromium.org>
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79786}
2022-04-05 18:42:03 +00:00
Anton Bikineev
91bfde4287 cppgc: young-gen: Return DCHECKs to AddMainThreadEvent
The DCHECKs check that the metrics from previous cycles are extracted
for both young and full GCs.

Bug: chromium:1029379
Change-Id: I8390d474abc8bd698e7f02896383b6fe013d792e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3570430
Reviewed-by: Omer Katz <omerkatz@chromium.org>
Commit-Queue: Anton Bikineev <bikineev@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79785}
2022-04-05 18:24:04 +00:00
Michael Lippautz
fd7c100a9c [heap] Avoid re-scanning roots during incremental finalization step
Incremental finalization previously used to rescan roots to avoid any
new work showing up in the atomic pause.

With concurrent marking we should be way faster in finalizing, so that
we can save ourselves this work. In particular, if we finalize in the
same JS execution we would be doubling work as the atomic pause
anyways needs to rescan all roots.

Bug: v8:12775
Change-Id: I58a5a931da72c8d5c8aee4cd5dad4512954668b4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3570427
Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79784}
2022-04-05 17:41:42 +00:00
Clemens Backes
d73ed7bbf5 [base] Remove base::void_t
Use C++17's std::void_t instead.

R=leszeks@chromium.org

Bug: v8:12425
Change-Id: I1367af170505ed97a725e22f6b60cce056f72cb1
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3568476
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79783}
2022-04-05 16:56:13 +00:00
Thibaud Michaud
c93098f272 [wasm] Simplify context-passing for stack-switching
Pass the context as an argument of the runtime function, instead
of using the stack frame iterator to find it.

R=jkummerow@chromium.org

Bug: v8:12191
Change-Id: I43c0cf74b1b83b9c1c63df99c3816bd3f3e94ebf
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3562984
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Thibaud Michaud <thibaudm@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79782}
2022-04-05 15:38:27 +00:00
Leszek Swirski
f2579aac91 Revert "[wasm] --liftoff-only should disable --wasm-dynamic-tiering"
This reverts commit 54e360d141.

Reason for revert: Waterfall failures https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux%20-%20debug/38922/overview

Original change's description:
> [wasm] --liftoff-only should disable --wasm-dynamic-tiering
>
> A Liftoff only configuration should never tier up to TurboFan, hence add
> a proper implication to disable dynamic tiering if --liftoff-only is
> set.
> Also, add a DCHECK to ensure we never accidentally compile with TurboFan
> if --liftoff-only is set.
>
> R=​jkummerow@chromium.org
>
> Bug: v8:12281
> Change-Id: Ia9b81add503cc939f59fde3f4d3bb67252facf2c
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3569741
> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
> Commit-Queue: Clemens Backes <clemensb@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#79779}

Bug: v8:12281
Change-Id: Ie1551a9c7b4491cf02995acd0b72a276c2f68eab
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3572042
Auto-Submit: Leszek Swirski <leszeks@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79781}
2022-04-05 15:23:22 +00:00
Anton Bikineev
59d1b820ce cppgc: young-gen: Unmark the heap on terminate()
When the heap is gracefully terminated, all the destructors are called.
CrossThreadPersistents must clear the back references (references from
CrossThreadPersistentRegion) so that further GCs on other threads will
not access freed CTPs.

To force destruction with young-gen enabled, the CL unmarks the heap on
termination.

Bug: chromium:1029379
Change-Id: I7f4a34a914ca20b50fe6d2ad493d56e0ba525ecc
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3568473
Reviewed-by: Omer Katz <omerkatz@chromium.org>
Commit-Queue: Anton Bikineev <bikineev@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79780}
2022-04-05 15:13:22 +00:00
Clemens Backes
54e360d141 [wasm] --liftoff-only should disable --wasm-dynamic-tiering
A Liftoff only configuration should never tier up to TurboFan, hence add
a proper implication to disable dynamic tiering if --liftoff-only is
set.
Also, add a DCHECK to ensure we never accidentally compile with TurboFan
if --liftoff-only is set.

R=jkummerow@chromium.org

Bug: v8:12281
Change-Id: Ia9b81add503cc939f59fde3f4d3bb67252facf2c
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3569741
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79779}
2022-04-05 14:19:02 +00:00
Leszek Swirski
64e8935031 Revert "cppgc-js: Concurrently process v8::TracedReference"
This reverts commit 1f0d7d2072.

Reason for revert: Speculative revert for roll failures in https://chromium-review.googlesource.com/c/chromium/src/+/3569445

Original change's description:
> cppgc-js: Concurrently process v8::TracedReference
>
> Adds concurrent marking for reaching through v8::TracedReference.
> Before this CL, a v8::TracedReference would always be processed on the
> main thread by pushing a callback for each encountered reference.
>
> This CL now wires up concurrent handling for such references. In particular:
> - Global handles are already marked as well and not repurposed during
>   the same GC cycle.
> - Since global handles are not repurposed, it is enough to
>   double-deref to the V8 object, checking for possible null pointers.
> - The bitmap for global handle flags is mostly non-atomic, with the
>   markbit being the exception.
> - Finally, all state is wired up in CppHeap. Concurrent markers keep
>   their own local worklist while the mutator marker directly pushes to
>   the worklist owned by V8.
>
> Bug: v8:12600
> Change-Id: Ia67dbd18a57dbcccf4dfb9ccfdb9ee438d27fe71
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3516255
> Reviewed-by: Omer Katz <omerkatz@chromium.org>
> Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
> Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#79736}

Bug: v8:12600
Change-Id: I8a91dcd6880580207bf8d315b264edbe42a794e5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3568474
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Owners-Override: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Omer Katz <omerkatz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79778}
2022-04-05 13:57:53 +00:00
Thibaud Michaud
543d8fc09d [wasm] Exclude receiver from param count in WasmResume builtin
R=jkummerow@chromium.org
CC=fgm@chromium.org

Change-Id: I57c1860ef35919cdc7752e1dcc1beccfb4282b90
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3555770
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Thibaud Michaud <thibaudm@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79777}
2022-04-05 13:24:02 +00:00
Dominik Inführ
1b17e087a8 [heap] Fix disabling of map space with --no-use-map-space flag
HeapAllocator didn't fall back to old space allocation when the
heap had no map space.

Bug: v8:12578, chromium:1313119
Change-Id: Ic02334f42f9fb80a8a9dcf99a94a7ac16da24053
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3570423
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79776}
2022-04-05 13:14:53 +00:00
Victor Gomes
3eeea13cf7 [maglev] Addition Smi nodes
If we have a smi operation in the feedback vector, we emit SmiTag
Int32AddWithOverflow and SmiUntag nodes, instead of a generic
operation binary node.


Change-Id: Idb9ce2b60289fbe492bf269793660b32de23e2b3
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3560641
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@{#79775}
2022-04-05 12:34:42 +00:00
jameslahm
8502508962 [snapshot] Fix mksnapshot fails
... when enable V8_COMPRESS_POINTERS_IN_ISOLATE_CAGE.
When enable V8_COMPRESS_POINTERS_IN_ISOLATE_CAGE and
V8_EXTERNAL_CODE_SPACE, because of the external code space,
we could not get the isolate using RoundDown directly, which
may cause wrong isolate address. We should use memory chunk
like in V8_COMPRESS_POINTERS_IN_SHARED_CAGE instead.

Bug: v8:12664, v8:12715
Change-Id: Ib78770fdb66fa509d6d8acc836803ec9d6804ef1
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3532599
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: 王澳 <wangao.james@bytedance.com>
Cr-Commit-Position: refs/heads/main@{#79774}
2022-04-05 11:22:32 +00:00
Clemens Backes
43232bf024 [wasm] Fix interrupt of empty loop
This includes two fixes:
1. For dynamic tiering, the budget must always be reduced when jumping
   backwards, otherwise we might never trigger tier up, which makes the
   loop non-interruptible (because the tier-up check replaces the stack
   check).
2. The d8 worker implementation also needs to terminate the isolate via
   an interrupt, in addition to scheduling a task, because the worker
   might never return to the event queue.

This CL also fixes one of the failure modes of the inspector fuzzer
(see https://crbug.com/1180018).

R=jkummerow@chromium.org, marja@chromium.org

Bug: v8:12767, chromium:1180018

Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_rel_ng
Change-Id: Ia01d1725fc14931d2ea54c4769c4ee93f866ed63
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3568470
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Marja Hölttä <marja@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79773}
2022-04-05 10:55:04 +00:00
Leszek Swirski
49c507dc99 [test] Make cctest run one test, with maybe custom platform
Remove cctest's ability to run multiple tests (which has long been
deprecated and mostly broken). We can then make platform & V8
initialisation be part of running the test's Run method.

In particular, this allows us to inject custom logic into the platform
initialisation, like setting up a platform wrapper. Add a
TEST_WITH_PLATFORM which exercises this by registering a platform
factory on the test, and wrapping the default platform using this
factory. This allows these tests to guarantee that the lifetime of the
platform is longer than the lifetime of the isolate.

As a result of this, we can also remove the complexity around draining
platform state in the TestPlatform (since it will now have a longer
lifetime than the Isolate using it), and as a drive-by clean up the
TestPlaform to use a CcTest-global "default platform" instead of trying
to scope over the "current" platform.

As another drive-by, change the linked-list of CcTests and the linear
search through it into an std::map of tests.

Change-Id: I610f6312fe042f29f45cc4dfba311e4184bc7759
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3569223
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79772}
2022-04-05 09:39:18 +00:00
Camillo Bruni
899f0af72a [serializer] Dehandlify more De-/Serializer code
Bug: v8:11263
Change-Id: I6f9f43125e5a1b27d8f8595bbbebdff2665968da
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3471635
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79771}
2022-04-05 09:38:16 +00:00
Shu-yu Guo
cfa49d2621 [d8] Configure the shared Isolate with the same memory constraints as other Isolates
Bug: v8:12007, v8:12584
Change-Id: Ic78eb0e7145c7d6127d23e46a6ddccfbd31fffd4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3419796
Auto-Submit: Shu-yu Guo <syg@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Marja Hölttä <marja@chromium.org>
Commit-Queue: Marja Hölttä <marja@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79770}
2022-04-05 08:22:29 +00:00
Alexander Schulze
9dd0d7147b [py3] Bump tools/unittests/*
Bug: v8:12581
Change-Id: Iea05e0171ad6edbda569c443c0db97e5c0bfc9ad
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3569222
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Alexander Schulze <alexschulze@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79769}
2022-04-05 08:12:20 +00:00
v8-ci-autoroll-builder
0432334bfe Update V8 DEPS.
Rolling v8/build: d162691..1356876

Rolling v8/buildtools/third_party/libc++abi/trunk: e9c9bdf..1850510

Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/a9d86a4..c4e6210

Rolling v8/third_party/depot_tools: a9c548e..c4b1b77

Rolling v8/third_party/zlib: d1aa7af..3b1df9d

Rolling v8/tools/clang: c8e9f23..fbe0742

R=v8-waterfall-sheriff@grotations.appspotmail.com,mtv-sf-v8-sheriff@grotations.appspotmail.com

Change-Id: Ia2bed4e4a7ea13cd708471339269c7e4262abb9b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3571201
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@{#79768}
2022-04-05 03:55:30 +00:00
Junliang Yan
55d9eb4238 ppc64: Fix compilation error
Change-Id: Iadf5d379e105232c0992e3588ecd9a1c5f3500d2
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3570422
Reviewed-by: Milad Farazmand <mfarazma@redhat.com>
Commit-Queue: Junliang Yan <junyan@redhat.com>
Cr-Commit-Position: refs/heads/main@{#79767}
2022-04-04 22:03:09 +00:00
Anton Bikineev
7dd391cb6c cppgc: young-gen: Extract and report metrics for young GC cycles
The CL makes sure to extract and copy Oilpan young GC metrics to
v8::metrics::GarbageCollectionYoungCycle. In addition, it makes sure
that metrics are not reported twice by bailing out from
GCTracer::NotifyCppGCCompleted() for young GC cycles (the metrics are
reported later in Heap::CollectGarbage() by calling
GCTracer::StopCycle()).

Bug: chromium:1029379
Change-Id: I07bf51e85a76a7cdbeeb8d87c9072edf2634158b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3545168
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Anton Bikineev <bikineev@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79766}
2022-04-04 18:33:08 +00:00
Junliang Yan
1d56246b78 ppc64: [baseline] port OnStackReplacement
Change-Id: I0b69c8042f1b88efc14d2923c595b14f45b9557e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3568471
Reviewed-by: Milad Farazmand <mfarazma@redhat.com>
Commit-Queue: Junliang Yan <junyan@redhat.com>
Cr-Commit-Position: refs/heads/main@{#79765}
2022-04-04 18:21:16 +00:00
Junliang Yan
2be73ed6be ppc64: [baseline] port JSConstructStubGeneric
Change-Id: I698fbf3d49ed7e88a6004ead38427e4ca3a02663
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3569681
Reviewed-by: Milad Farazmand <mfarazma@redhat.com>
Commit-Queue: Junliang Yan <junyan@redhat.com>
Cr-Commit-Position: refs/heads/main@{#79764}
2022-04-04 16:37:48 +00:00
Bryant Chandler
8d51d561d5 [fuchsia] Use SDK provided gn templates for v8_unittests
cr_fuchsia_package is deprecated in favor of using the Fuchsia
SDK provided rules directly.

Bug: chromium:1092804
Change-Id: I86a59b6a717cb0aa8c3473e8410bdd98f0ffd042
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3537883
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Reviewed-by: Wez <wez@chromium.org>
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Commit-Queue: Bryant Chandler <bryantchandler@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79763}
2022-04-04 16:29:58 +00:00
Jakob Gruber
5f3ed078b6 [compiler] Remove ContinuationForConcurrentOptimization
.. to simplify logic within compiler.cc. GetOrCompileOptimized now only
returns Code object if the requested optimized Code object is available.

This change also required updating CompileLazy to install the
appropriate Code object before potentially calling CompileOptimized_*
runtime functions in order to satisfy the is_compiled precondition.

Bug: v8:12161
Change-Id: I991dbcc0ba8f3d635aa1e1f06e4cffd89e08a47b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3562978
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Jakob Linke <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79762}
2022-04-04 16:16:17 +00:00
Jakob Gruber
3f5a3df63b [osr] Fall back to synchronous OSR on cache mismatches
If we've already cached OSR'd code for the current function but with a
different osr offset, fall back to synchronous compilation. This avoids
degenerate cases where we repeatedly spawn OSR jobs but then fail to
install them.

Drive-by: More consistent --trace-osr output.
Drive-by: Rename kCompileForOnStackReplacement to kCompileOptimizeOSR
for name consistency.
Drive-by: Add JSFunction::DebugNameCStr() for more convenient PrintF's.

Bug: v8:12161
Change-Id: I2b4a65bc9e082d85d7048a3e92ef86b07d396687
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3560431
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Jakob Linke <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79761}
2022-04-04 16:14:28 +00:00
Bryant Chandler
3111db91f8 [fuchsia] Use SDK provided gn templates for d8
cr_fuchsia_package is deprecated in favor of using the Fuchsia
SDK provided rules directly.

This CL adds a cmx file specifically for v8_unittests. CMX
files define fuchsia components, see
https://chromium-review.googlesource.com/c/chromium/src/+/3529652
for more info.

Bug: chromium:1092804
Change-Id: Ibf1d866ec6b94a0e1a7a7c7c443a6ee80e3b1042
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3537885
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Reviewed-by: Wez <wez@chromium.org>
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Commit-Queue: Bryant Chandler <bryantchandler@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79760}
2022-04-04 15:53:47 +00:00
Jakob Gruber
e35d7e6167 Reland "Refactor OSROptimizedCodeCache"
Tweak a few names, remove a few GetIsolate calls, other minor
usability refactors.

It may be worth taking a closer look at the impl in the future,
currently the design choices don't seem ideal (see the added TODO
on top of the class).

The reland is unchanged from the original CL.

Bug: v8:12161
Change-Id: I9971f7f2fb08b7a1ec2d57b2a0e4accdc11191ca
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3568444
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Jakob Linke <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79759}
2022-04-04 15:21:47 +00:00
Clemens Backes
575babc496 [codegen][x64] Emit shorter code for a 32-bit and
If the immediate is a 32-bit value, we can just write the lower half of
the target register, the upper half will automatically be zero-extended.

R=tebbi@chromium.org

Bug: v8:10005
Change-Id: Ib3c54c9f6ac2434c7345c507529298233d6b7d6f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3563565
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79758}
2022-04-04 15:13:54 +00:00