Commit Graph

79672 Commits

Author SHA1 Message Date
Jakob Linke
ebd933037e [flags,testrunner] Consider readonly flags for conflict detection
Flag conflict detection 1) bails out on incompatible flag values (e.g.
--jitless and --turbofan) and 2) handles such bailouts transparently in
the test runner by marking affected tests as OUTCOMES_FAIL.

This CL adds full support for readonly flags to this system, together
with required additional annotations in variants.py.

Drive-by: assert proper use of v8_enable_slow_dchecks, and add
support when dcheck_always_on is set.
Drive-by: introduce has_maglev build variable detection based on
v8_enable_maglev and use that for .status file annotations.
Drive-by: protect against unintended overwrites of build variables
in statusfile.py.

Cq-Include-Trybots: luci.v8.try:v8_linux64_fyi_rel
Bug: v8:13629,v8:10577
Change-Id: I04de399139a0490806df8bfee7e75e2ec767b4b5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4135879
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Commit-Queue: Jakob Linke <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85130}
2023-01-09 07:09:34 +00:00
v8-ci-autoroll-builder
e6902daebf Update V8 DEPS (trusted)
Rolling v8/build: 705c30a..7ab406c

Rolling v8/third_party/fuchsia-sdk/sdk: version:11.20230107.0.1..version:11.20230108.3.1

Change-Id: Id52793459a5ae65df95837c5f66ef36c5fafe3f5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4143951
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@{#85129}
2023-01-09 04:01:07 +00:00
Clemens Backes
aa5f2e5c43 Revert "[x64] Add support for "cold calls" in hot paths"
This reverts commit 31ccfed461.

Reason for revert: Fails compilation on: https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux64%20-%20cfi%20-%20builder/6527/overview

Original change's description:
> [x64] Add support for "cold calls" in hot paths
>
> This makes (specially annotated) calls to "cold functions" in hot paths
> more efficient by hiding the fact that we are actually calling a
> function here. Clang would otherwise unconditionally spill and reload
> registers that might be clobbered by the call. This would slow down the
> fast path.
>
> This CL allows to reverse priorities here: The fast path can stay fast
> (no spills and loads), but the slow path gets even slower. The inline
> assembly that implements the cold call spills and reloads *all*
> registers, because we do not know which registers are in use in the
> scope where the cold call is being emitted.
>
> I.e. this behaves like a custom calling convention with no caller-saved
> registers.
>
> The `preserve_all` attribute (experimental in clang, and incomplete for
> C++) would also solve this, but it is not production-ready yet (leads to
> crashes of clang and crashes of the generated code).
>
> R=​leszeks@chromium.org
> CC=​​dlehmann@chromium.org
>
> Bug: v8:13565, v8:13570
> Change-Id: I2b54a480da1c689113a67c601c29d73239b0ff2b
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4116584
> Commit-Queue: Clemens Backes <clemensb@chromium.org>
> Reviewed-by: Anton Bikineev <bikineev@chromium.org>
> Reviewed-by: Leszek Swirski <leszeks@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#85127}

Bug: v8:13565, v8:13570
Change-Id: I2f5b3343eb372fea13d2c4ab6354f2bc52e2c338
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4145819
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#85128}
2023-01-08 21:03:06 +00:00
Clemens Backes
31ccfed461 [x64] Add support for "cold calls" in hot paths
This makes (specially annotated) calls to "cold functions" in hot paths
more efficient by hiding the fact that we are actually calling a
function here. Clang would otherwise unconditionally spill and reload
registers that might be clobbered by the call. This would slow down the
fast path.

This CL allows to reverse priorities here: The fast path can stay fast
(no spills and loads), but the slow path gets even slower. The inline
assembly that implements the cold call spills and reloads *all*
registers, because we do not know which registers are in use in the
scope where the cold call is being emitted.

I.e. this behaves like a custom calling convention with no caller-saved
registers.

The `preserve_all` attribute (experimental in clang, and incomplete for
C++) would also solve this, but it is not production-ready yet (leads to
crashes of clang and crashes of the generated code).

R=leszeks@chromium.org
CC=​dlehmann@chromium.org

Bug: v8:13565, v8:13570
Change-Id: I2b54a480da1c689113a67c601c29d73239b0ff2b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4116584
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Anton Bikineev <bikineev@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85127}
2023-01-08 18:44:18 +00:00
v8-ci-autoroll-builder
922fa2f9ee Update V8 DEPS (trusted)
Rolling v8/build: dac6050..705c30a

Rolling v8/third_party/fuchsia-sdk/sdk: version:11.20230106.2.1..version:11.20230107.0.1

Change-Id: Ib856262f50acce14f20a07b0c1227b73ff749e3f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4143948
Bot-Commit: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#85126}
2023-01-08 04:03:53 +00:00
Frank Tang
d269492175 [test262] Roll test262
e6c6460a5b..f00d4118d

Bug: v8:7834
Change-Id: I02cecbc0d74ee2904d3d5d9d9f94f182a88b0cf6
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4126701
Reviewed-by: Shu-yu Guo <syg@chromium.org>
Commit-Queue: Frank Tang <ftang@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85125}
2023-01-07 09:01:20 +00:00
v8-ci-autoroll-builder
3c79a84283 Update V8 DEPS (trusted)
Rolling v8/build: c2ac4bf..dac6050

Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/e5bf2c4..163b421

Rolling v8/third_party/depot_tools: 50985d5..6f90547

Rolling v8/third_party/fuchsia-sdk/sdk: version:11.20230105.2.1..version:11.20230106.2.1

Rolling v8/tools/clang: 5c711ec..e8c31f9

Change-Id: I96f80a73c7886aa6beba8250309f417deb648dc8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4143946
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@{#85124}
2023-01-07 03:55:43 +00:00
v8-ci-autoroll-builder
4d716b2ffb Update V8 DEPS (trusted)
Rolling v8/build: 33bb56b..c2ac4bf

Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/038b25e..e5bf2c4

Rolling v8/third_party/depot_tools: 58a343c..50985d5

Rolling v8/third_party/fuchsia-sdk/sdk: version:11.20230104.1.1..version:11.20230105.2.1

Rolling v8/tools/clang: 3b54a13..5c711ec

Change-Id: I6538f8982f85f23fb540217d52aee55f142895f8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4141158
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@{#85123}
2023-01-06 04:28:47 +00:00
Choongwoo Han
362e792ee4 [wasm] Do not build loop exits for non-innermost loops
Loops can be unrolled only for innermost loops. But, the wasm graph
builder builds loop exits regardless of the condition. This CL detects
if the loop can be innermost using AnalyzeLoopAssignment, and do not
allocate unnecessary nodes if it can't be.

This reduces memory usage for the reported wasm binary from 1.3GB to
300MB.

Bug: v8:13543
Change-Id: I693800071f7eee4a9991e094830f23d27a96b13f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4134466
Reviewed-by: Manos Koukoutos <manoskouk@chromium.org>
Commit-Queue: Choongwoo Han <choongwoo.han@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#85122}
2023-01-05 20:04:09 +00:00
Victor Gomes
5c613b9887 [maglev][arm64] Fix push/pop register list order
Maglev assumes a fixed register order (from low to high) when
iterating the frame, since it identifies tagged values using
a bitmap.

Bug: v8:7700
Change-Id: I2231b111b30068eeff408e8ceea896cb17e4b864
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4135892
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Auto-Submit: Victor Gomes <victorgomes@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85121}
2023-01-05 15:13:53 +00:00
Andreas Haas
4c46613505 Reland "[wasm][capi] Optimize all functions before serialization"
This CL is exactly the same as the original CL, without changes. The
issue was a missing Isolate::Scope, and it existed already before this
CL. I fixed the issue separately in https://crrev.com/c/4136720.

Original message:

Original change's description:
> [wasm][capi] Optimize all functions before serialization
>
> The existing implementation of `serialize` in the C-API is to produce
> a snapshot of the current state of the `NativeModule`. However, so
> far all users of `serialize` did not care about the runtime of
> `serialize`, but cared about `deserialize` starting up fast.
>
> With this CL all functions of a module get tiered up to TurboFan
> before serializing the module.

R=clemensb@chromium.org

Change-Id: Ib8ed33c63c137e167fb50ccf721184b2b16cf4d4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4131635
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85120}
2023-01-05 14:41:00 +00:00
Manos Koukoutos
1ef0a093e8 [wasm-gc] Apply isorecursive canonicalization to tag signatures
We add a {canonical_type_index} field to tag objects and use it to
check for canonical subtyping between tags when needed.

Bug: v8:7748
Change-Id: I60723d8f72a9487af03f223c8f8a33ef8fa56461
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4135885
Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
Reviewed-by: Thibaud Michaud <thibaudm@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85119}
2023-01-05 14:17:32 +00:00
Leszek Swirski
a0ba7818cd [string] Fix ConsStringIterator offset use
ConsStringIterator::Next has an `offset` out parameter with non-obvious
semantics -- namely, that the `offset` is the offset within the
currently returned string matching the offset passed into the
ConsStringIterator constructor. Notably, this will always be zero after
the first iteration. Added a comment to explain this.

This was being misused in string equality comparison, and in fact we can
remove its use there entirely, as the only way to have a slice offset in
string equality is to have a sliced string, which cannot point to a cons
string.

Change-Id: Idf9abc537220564ead0b056e9aff644d5c91426f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4138255
Auto-Submit: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Jakob Linke <jgruber@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85118}
2023-01-05 14:11:09 +00:00
Andreas Haas
167efb5974 [mjsunit] Avoid creating v8.prof file in regression test
R=jgruber@chromium.org

Bug: v8:12926
Change-Id: I565455068a385c708dce9406120de9ec3f893341
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4138257
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Reviewed-by: Jakob Linke <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85117}
2023-01-05 14:03:22 +00:00
Andreas Haas
912a05d7b0 [wasm][capi] Add missing Isolate::Scopes
Missing Isolate::Scopes can cause the GC to fail.

R=clemensb@chromium.org

Bug: v8:12926
Change-Id: Iddfe73b4974d187261488189e55f0a6684ceb9ee
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4136720
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85116}
2023-01-05 14:00:26 +00:00
Darius M
8e84e825ed [maglev] Adapt CheckJSTypedArrayBounds for Float64Array
Fixed: chromium:1405150, v8:13638
Bug: v8:7700
Change-Id: I0b53d6bbd43ff7e068d8d82edfe2d956bb398223
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4136729
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Commit-Queue: Darius Mercadier <dmercadier@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85115}
2023-01-05 12:53:29 +00:00
Clemens Backes
68047ec37f [wasm][streaming] Avoid UAF after context disposal
After a call to {StreamingDecoder::NotifyCompilationEnded}, no method on
the {StreamingProcessor} should be called any more. We were still
calling the {OnAbort} method later.

To make the semantics a bit more clear, we rename
{NotifyCompilationEnded} to {NotifyCompilationDiscarded}.

We also remove the {stream_finished_} field and reset the processor
instead, which will result in a nullptr access if we try to illegally
call any further methods.

R=ahaas@chromium.org

Bug: chromium:1403531, chromium:1399790, chromium:1400066
Change-Id: I4caef3801dfe9d653125efbd7bc9b5d13ce30dc7
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4132966
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85114}
2023-01-05 12:36:04 +00:00
Victor Gomes
59136c6045 [log] Remove is_listening_to_code_events cache
V8FileLogger has a dynamic behaviour when listening to
code events, i.e., it can stop listening without removing
itself from the Logger, which invalidates the field
is_listening_to_code_events_. This field is only updated
when adding/removing an event listener.

This cache was recently introduced in a refactoring
https://crrev.com/c/3582125

Bug: chromium:1400809
Change-Id: If93c88a6a64f5bf2c10265ac1db455ea498733a0
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4136726
Auto-Submit: Victor Gomes <victorgomes@chromium.org>
Commit-Queue: Patrick Thier <pthier@chromium.org>
Reviewed-by: Patrick Thier <pthier@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85113}
2023-01-05 11:40:49 +00:00
Michael Achenbach
73aaf18f36 [gcmole] Remove legacy gcmole steps
This was running side-by-side in production now for >1 month. Now
we remove the sequential gcmole step and only keep running the
parallel version. We keep the sequential test run to ensure it keeps
working for developers who still use this locally.

Bug: v8:12660
Change-Id: If92516948d0cc3c03c9a4a18bd216ce63c18dfc3
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4136727
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Auto-Submit: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85112}
2023-01-05 11:14:47 +00:00
Michael Achenbach
43fd63554e [gcmole] Add regression test with multiple safepoints
Bug: v8:13536
Change-Id: I1cac6a34b6948f7e5365c5454ad6d3f928d906d4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4134164
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85111}
2023-01-05 09:47:58 +00:00
Vladimir Nechaev
ca3a939da8 [inspector] Provide more details about destroyed context
Runtime.executionContextCreated provides many details in
ExecutionContextDescription structure while
Runtime.executionContextDestroyed provides only executionContextId. This
information is insufficient for the clients that use uniqueContextId.

Bug: v8:12896
Change-Id: I31df0ed618dc1c8b55c7eba8f96eeaef2d4de6c8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3657439
Commit-Queue: Simon Zünd <szuend@chromium.org>
Auto-Submit: Vladimir Nechaev <nechaev@chromium.org>
Reviewed-by: Simon Zünd <szuend@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85110}
2023-01-05 09:27:47 +00:00
Lu Yahan
d333e5b5aa [riscv] Fix disasm unittest error
Change-Id: I5e342abad192189fc88aae185901ba776643c0dc
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4134473
Reviewed-by: ji qiu <qiuji@iscas.ac.cn>
Auto-Submit: Yahan Lu <yahan@iscas.ac.cn>
Commit-Queue: ji qiu <qiuji@iscas.ac.cn>
Cr-Commit-Position: refs/heads/main@{#85109}
2023-01-05 09:10:11 +00:00
Yahan Lu
fcae4c1383 Revert "[riscv] Remove unnecessary unbound label count"
This reverts commit a6c2b39080.

Reason for revert: Failed tests

Original change's description:
> [riscv] Remove unnecessary unbound label count
>
> The bind_to function doesn't link branch long to trampoline, so it doesn't need to add  unbound_labels_count_.
>
> Change-Id: I2e3861a38eb65c285f19accb12bccb9f4c9fcfb1
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4133426
> 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@{#85103}

Change-Id: I651762d71a8e86bbe76a10224a63433cdacfadfe
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4136999
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Yahan Lu <yahan@iscas.ac.cn>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#85108}
2023-01-05 07:37:08 +00:00
Simon Zünd
3094c4002b [debug] Fix stepping through single statement loops
The debugger utilizes the source position while single stepping
("Step-in") through the source to go from statement to statement and
skipping some expressions along the way. The debugger remembers the
"statement position" of the last stepping action.

This works well in general but falls flat for loops that only have
a single statement in them. Every step lands on the same statement,
just one loop iteration later.

We detect this case by checking if we are in the same frame and have
the exact same bytecode offset as the last step action.

Note that this also fixes "frame restarting" should we have restarted
a function while paused at the beginning of that function.

R=jarin@chromium.org

Bug: chromium:1401674
Change-Id: Id0a5753ed7cc9f23f22d869368d88e1c4b48566d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4135881
Commit-Queue: Simon Zünd <szuend@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85107}
2023-01-05 07:18:16 +00:00
Simon Zünd
5b8d62d830 [debug] Only 'step-in' on function entry for scheduled pauses
This CL fixes a bug where we wouldn't pause (or even crash) when trying
to interrupt an infinite loop.

When we pause via stack check (i.e. a scheduled break) we currently do
one additional step-in. We do so to enter functions properly in case
we are paused in the middle of setting up the stack frame.

Loops also do a stack check, to support pausing infinite loops. In
that case we can skip the additional step-in as we are already
in a valid pause position (as implemented by this CL).

This CL also removes two bogus DCHECKs. We assumed that
a scheduled break never happens after a step. This is wrong, e.g.
a user can click the pause button after stepping over a long running
function.

Note that we duplicate the various loop interruption cctests to
also interrupt the loops with the "scheduled" break reason. Without
the changes in debug.cc, those won't pass.

The CL https://crrev.com/c/4136058 adds a regression test on the
blink side.

R=jarin@chromium.org

Fixed: chromium:1401674
Change-Id: I42b44744b17d24351f01b83c0446908c24e6c5fd
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4134246
Commit-Queue: Simon Zünd <szuend@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85106}
2023-01-05 06:19:47 +00:00
v8-ci-autoroll-builder
70253ba04e Update V8 DEPS (trusted)
Rolling v8/build: 44b5138..33bb56b

Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/a404e6d..038b25e

Rolling v8/third_party/depot_tools: 252b198..58a343c

Rolling v8/third_party/fuchsia-sdk/sdk: version:11.20230103.1.1..version:11.20230104.1.1

Rolling v8/third_party/zlib: 18d27fa..fa5dc47

Change-Id: I49c9e11b32c782a4f0cb29b1559f708549d6e8bb
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4133999
Bot-Commit: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#85105}
2023-01-05 04:05:20 +00:00
Lu Yahan
2bb36a2275 [riscv] Fix disasm error about fcvt.s.d
Change-Id: I1046f5d7147a032b6f7c830c4ae3235bc9f55088
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4134468
Commit-Queue: ji qiu <qiuji@iscas.ac.cn>
Auto-Submit: Yahan Lu <yahan@iscas.ac.cn>
Reviewed-by: ji qiu <qiuji@iscas.ac.cn>
Cr-Commit-Position: refs/heads/main@{#85104}
2023-01-05 03:19:51 +00:00
Lu Yahan
a6c2b39080 [riscv] Remove unnecessary unbound label count
The bind_to function doesn't link branch long to trampoline, so it doesn't need to add  unbound_labels_count_.

Change-Id: I2e3861a38eb65c285f19accb12bccb9f4c9fcfb1
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4133426
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@{#85103}
2023-01-05 03:11:14 +00:00
Shu-yu Guo
071de173dc [string] Rename String::GetChars -> String::GetDirectStringChars
GetChars may give the misimpression that it's usable with all flat
strings, while it is only usable with direct strings.

Change-Id: I1fd1ae93f75aca4079a2f65b5440a693dc2eb5c8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4133547
Commit-Queue: Shu-yu Guo <syg@chromium.org>
Reviewed-by: Adam Klein <adamk@chromium.org>
Auto-Submit: Shu-yu Guo <syg@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85102}
2023-01-04 20:07:52 +00:00
Darius M
3f75b580eb [maglev] Fix bug because of output-input aliasing
Bug: v8:7700
Change-Id: Ide3704bd44b8f531720ba38127e98c00e59a7d57
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4136712
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Commit-Queue: Darius Mercadier <dmercadier@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85101}
2023-01-04 17:15:57 +00:00
Michael Lippautz
6eb0a668c2 [heap] Move wrappable extraction logic out of LocalEmbedderHeapTracer
Bug: v8:13207
Change-Id: I5d96454c7335e698ff79572706cf0c16640fdd53
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4136711
Reviewed-by: Anton Bikineev <bikineev@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85100}
2023-01-04 17:04:15 +00:00
Darius M
5d3e12941e [maglev] Support in-heap TypedArrays
Drive-by: fix a bug with TypedArray loads: because we used the output
register as a temporary, if it was actually aliasing with one of the
input registers, the generated code was incorrect.

Bug: v8:7700
Change-Id: Id297f728ca2de13ebc5993cea675900fbfdd7886
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4135884
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Commit-Queue: Darius Mercadier <dmercadier@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85099}
2023-01-04 16:14:50 +00:00
Clemens Backes
05a76791c4 [liftoff][fuzzer] Do not throw before frame setup
Delay the "max steps" check until the frame is fully set up. This means
that the work is already done at the point where we check the maximum
number of steps, but the additional work is limited by the maximum
number of locals and parameters.

R=thibaudm@chromium.org

Bug: chromium:1404619
Change-Id: I4919c837feea92af84f99182a571edf96e4728ac
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4135890
Auto-Submit: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Thibaud Michaud <thibaudm@chromium.org>
Reviewed-by: Thibaud Michaud <thibaudm@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85098}
2023-01-04 15:54:18 +00:00
Leszek Swirski
6adfc3856f [git blame] Add a few old refactors to .git-blame-ignore-revs
Namely:
  1. objects.h splitting into objects/*.h (crbug.com/v8/5402)
  2. src/ splitting into subfolders for OWNERS (crbug.com/v8/9247)
  3. splitting include/v8.h (crbug.com/v8/11965)

This is best used with:
  # Use the .git-blame-ignore-revs file for git blames
  git config --global blame.ignorerevsfile .git-blame-ignore-revs

  # Track code movement with git blame using -C
  git blame -C <file>

Change-Id: Ia5a641be077a9befe008857beee3b6808bbd6107
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4135882
Reviewed-by: Alexander Schulze <alexschulze@chromium.org>
Commit-Queue: Alexander Schulze <alexschulze@chromium.org>
Auto-Submit: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85097}
2023-01-04 15:43:38 +00:00
Victor Gomes
203d9c8cb6 [maglev][arm64] Fix InterruptBudget IRs
Use a temporary for feedback cell, since if the `amount` is big enough,
the macro instructions Add/Sub might need a temporary register
as well.

Bug: v8:7700
Change-Id: I2930f525ab3bf7d92fc1a47d9c483577c6186400
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4135889
Reviewed-by: Darius Mercadier <dmercadier@chromium.org>
Commit-Queue: Darius Mercadier <dmercadier@chromium.org>
Auto-Submit: Victor Gomes <victorgomes@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85096}
2023-01-04 15:42:36 +00:00
Junliang Yan
d201f32e50 ppc: [ptr-cage] Add ppc support
Change-Id: I09da99e525c2c0ad992c70f5f6a715e36e6ede30
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4135888
Commit-Queue: Junliang Yan <junyan@redhat.com>
Reviewed-by: Milad Farazmand <mfarazma@redhat.com>
Cr-Commit-Position: refs/heads/main@{#85095}
2023-01-04 15:41:28 +00:00
Qifan Pan
63134966fd [turbofan] Fix a bug of SignedBigInt64 in representation changer
The expected behavior of the optimized code is deoptimizing when using a BigInt
as an index and throwing an error (from CheckedTaggedToInt64).
The representation changer tries to insert conversions for this case where

- The output node is represented in Word64 (SignedBigInt64)
- The use info is CheckedSigned64AsWord64

The representation changer first rematerializes the output node to
TaggedPointer because the type check is not BigInt. Then it falls wrongly to
the branch where the output representation is TaggedPointer, the output type is
SignedBigInt64 in GetWord64RepresentationFor.

Bug: v8:9407, chromium:1403574, chromium:1404607
Change-Id: I9d7ef4c94c1dc0aa3b4f49871ec35ef0877efc24
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4135876
Reviewed-by: Nico Hartmann <nicohartmann@chromium.org>
Commit-Queue: Qifan Pan <panq@google.com>
Cr-Commit-Position: refs/heads/main@{#85094}
2023-01-04 15:30:31 +00:00
yangwenming
22ef44b655 [cppgc] check on a valid shared_ptr.
This CL fixes calling CHECK_NULL on a moved shared_ptr.

Bug: v8:13589
Change-Id: I52ab261df7e995f4a9fcfd7a2a3c2c0012a4c94f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4135701
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85093}
2023-01-04 15:17:20 +00:00
Milad Fa
bc4bac3877 PPC[liftoff]: Implement Simd128 Construct
Change-Id: Iad47ca2c3d4918957aea3896d500d4aaa4ffa13d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4133305
Reviewed-by: Junliang Yan <junyan@redhat.com>
Commit-Queue: Milad Farazmand <mfarazma@redhat.com>
Cr-Commit-Position: refs/heads/main@{#85092}
2023-01-04 14:34:12 +00:00
Samuel Groß
f0254afaab [sandbox] Initialize EPT evacuation entries atomically
Currently, evacuation entries are initialized non-atomically as they
will only be accessed during sweeping. However, it can happen that
another thread attempts (but fails) to allocate the same table entry,
causing a memory read from the same entry. If that happens, TSan will
complain about a data race. Using an atomic store avoids this.

Bug: chromium:1370743
Change-Id: Idaa5548494d4b1660ee5a798966dd09bf4b3d55c
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4135880
Commit-Queue: Samuel Groß <saelo@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85091}
2023-01-04 13:55:18 +00:00
Jakob Linke
c7450a8f3d [testrunner] Allow rules with negated build variables in variants.py
.. since many of these rules are actually relevant when some build
variable is *not* set. Instead of defining an artificial "no_foo"
variable in addition to "foo", allow definition of rules on a negative
build variable condition, e.g.:

 "!is_debug": [...]

This new syntax will be used extensively in a followup CL.

Bug: v8:13629,v8:10577
Change-Id: I5ad432e71249b50d15047930e3f9143e872716d8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4134247
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Auto-Submit: Jakob Linke <jgruber@chromium.org>
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85090}
2023-01-04 13:47:46 +00:00
Michael Lippautz
5b1929a8f0 [heap] Fix accounting of used bytes in CppHeap
Bug: chromium:1404804, v8:13207
Change-Id: I352c3be0125c4344b613474757a900eb0114ff5f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4135878
Auto-Submit: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Anton Bikineev <bikineev@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Anton Bikineev <bikineev@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85089}
2023-01-04 12:07:27 +00:00
Nico Hartmann
da8ef354e8 [turboshaft] Implement typing of remaining FloatBinop operations
Bug: v8:12783
Change-Id: I7a5bed4e349c8ced519469602716b132fe702aa0
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4061357
Reviewed-by: Darius Mercadier <dmercadier@chromium.org>
Commit-Queue: Nico Hartmann <nicohartmann@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85088}
2023-01-04 11:53:49 +00:00
gengjiawen
166fd2f38f [cppgc]: Fix build on msvc
Fixes compilation with msvc 2019 toolchain.

See: nodejs/node#37330 (comment)

Bug: v8:12661
Change-Id: I7cfd87a3dd531a2e4913d82b743fb8ecdfdb5ed8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3533019
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85087}
2023-01-04 10:12:56 +00:00
v8-ci-autoroll-builder
419a1c716c Update V8 DEPS (trusted)
Rolling v8/base/trace_event/common: 521ac34..68e6038

Rolling v8/build: 5129278..44b5138

Rolling v8/third_party/depot_tools: 5b0c934..252b198

Rolling v8/third_party/fuchsia-sdk/sdk: version:11.20230102.2.1..version:11.20230103.1.1

Change-Id: I01351584aeabfa611ab7e2c2b161b49bae753348
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4133310
Bot-Commit: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#85086}
2023-01-04 03:54:57 +00:00
Liu Yu
dba5c526af [loong64][mips64][wasm] Fix printing of wasm-to-js frames
Port commit e17eee4894

Change-Id: I7a4f68706f9691647f2dc47e8534e3cb356dd945
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4128274
Commit-Queue: Zhao Jiazhong <zhaojiazhong-hf@loongson.cn>
Auto-Submit: Liu Yu <liuyu@loongson.cn>
Reviewed-by: Zhao Jiazhong <zhaojiazhong-hf@loongson.cn>
Cr-Commit-Position: refs/heads/main@{#85085}
2023-01-04 01:45:09 +00:00
JianxiaoLuIntel
bf19099f3a Reland "[turbofan] Simplifying (x+k1)==k2 into x==(k2-k1)"
This is a reland of commit e9333ebd3c

Fix UB int overflow

Original change's description:
> [turbofan] Simplifying (x+k1)==k2 into x==(k2-k1)
>
>
> Change-Id: I234da79e1f53fa0fc15494fe6d31742d4e6eea97
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4055393
> Commit-Queue: Jianxiao Lu <jianxiao.lu@intel.com>
> Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#84947}

Change-Id: Ib79fd496147f5c7f33846168908c36ebb5229208
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4119767
Commit-Queue: Jianxiao Lu <jianxiao.lu@intel.com>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85084}
2023-01-04 01:41:39 +00:00
Shu-yu Guo
a934b72483 [string-iswellformed] Fix isWellFormed for indirect strings
Bug: chromium:1403546, v8:13557
Change-Id: Ifb96207022eef451f10cdba92519e97e452d884e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4131800
Reviewed-by: Adam Klein <adamk@chromium.org>
Commit-Queue: Shu-yu Guo <syg@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85083}
2023-01-03 19:31:31 +00:00
Victor Gomes
f0989ad168 [maglev][arm64] Use Cmp instead of cmp
Cmp can deal with large immediates (in particular Smi::kMaxValue).

Bug: v8:7700
Change-Id: I4dedb6c52f263f626f924c0465acbd5a250b7fd5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4127227
Auto-Submit: Victor Gomes <victorgomes@chromium.org>
Commit-Queue: Darius Mercadier <dmercadier@chromium.org>
Reviewed-by: Darius Mercadier <dmercadier@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85082}
2023-01-03 19:29:00 +00:00
pthier
8d54971115 [test] Fix cctest/test-strings/Regress1402187 for non sandbox builds
Increase length of strings in the test to ensure they are cachable
external strings even when the sandbox is disabled.

Change-Id: I1228e1abb1d88c0bb70edaeb718e1bf2f4cdd53d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4127228
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Auto-Submit: Patrick Thier <pthier@chromium.org>
Commit-Queue: Patrick Thier <pthier@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85081}
2023-01-03 17:14:13 +00:00