Commit Graph

80110 Commits

Author SHA1 Message Date
Matthias Liedtke
8fef57d52a [wasm-stringrefs] Add string.new_utf8_array_try
The built-in wasm function behaves similar to
string.new_utf8_array but in case of invalid characters
returns `null` instead of throwing an exception.

There has been a similar change for string.new_utf8_try
at https://crrev.com/c/4177105 / 5628a2be90.

Bug: v8:12868
Change-Id: I4bcc5ed3b1b22beafd4910d317f363eb3762165e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4191781
Auto-Submit: Matthias Liedtke <mliedtke@chromium.org>
Commit-Queue: Matthias Liedtke <mliedtke@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85468}
2023-01-25 11:09:41 +00:00
Jakob Linke
ce9b5600b5 Fix DCHECK in CodeCreateEvent
CodeCreateEvent expects one of a) bytecode, b) builtins, c) baseline
code.

The invalid DCHECK was introduced in crrev.com/c/4178821.

Bug: v8:13654
Fixed: chromium:1409785
Change-Id: Ib12ca6e6ec722dcaaf02f3dc57a4bf24e2830a91
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4194188
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Auto-Submit: Jakob Linke <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85467}
2023-01-25 10:30:40 +00:00
Matthias Liedtke
aeda84ad57 [wasm-stringrefs] Add string.compare operation
The wasm instruction string.compare performs a three-way
comparison and returns -1, 0 or 1 if the compared strings are
lessThan, equal or greaterThan.
It traps if either of the input values is null.

Bug: v8:12868
Change-Id: I4082f22d38e46447eb841c71955521297128237d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4191772
Commit-Queue: Matthias Liedtke <mliedtke@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85466}
2023-01-25 09:35:06 +00:00
Dominik Inführ
031204bcd5 [heap] unchecked_cast in concurrent marking for FixedDoubleArray
In the concurrent marker during visitor dispatch a FixedDoubleArray
might be left-trimmed right between loading the visitor_id and the
downcast of the HeapObject to FixedDoubleArray with FixedDoubleArray::cast. This forces us to use the unchecked_cast
method like we already do for FixedArray or some string types.

Bug: chromium:1409000
Change-Id: Ia8c1f68fd19e07529d5820e121f142c1ed16b21a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4191776
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85465}
2023-01-25 07:11:06 +00:00
v8-ci-autoroll-builder
4c782a0508 Update V8 DEPS (trusted)
Rolling v8/build: d2dda6b..3ed59a9

Rolling v8/buildtools: 37cb03b..0cc02fb

Rolling v8/buildtools/third_party/libc++/trunk: 885d5d1..1dfd002

Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/7bfa128..45986b0

Rolling v8/third_party/depot_tools: b88a434..00be3f0

Rolling v8/third_party/fuchsia-sdk/sdk: version:11.20230122.2.1..version:11.20230124.2.1

Change-Id: I3a980206a31a50d6c2dff98a4a91fe85de3ae031
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4193349
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@{#85464}
2023-01-25 04:03:53 +00:00
Omer Katz
b130461c22 [heap] Remove redundant migration observer for MinorMC
Bug: v8:12612
Change-Id: I92bac70930c3687bfb735cee907d0e7eaafbd61b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4191768
Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
Auto-Submit: Omer Katz <omerkatz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85463}
2023-01-24 17:22:25 +00:00
Clemens Backes
55e15ede43 [wasm] Use preserve_most for more error methods
Annotate more methods that are called on errors as V8_PRESERVE_MOST, to
make the caller code slimmer and faster.

R=dlehmann@chromium.org

Bug: v8:13565, v8:13673
Change-Id: I9d6db2ba0c02fa134aa22960b31bd35734362ba5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4188384
Reviewed-by: Daniel Lehmann <dlehmann@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85462}
2023-01-24 16:15:29 +00:00
Marja Hölttä
0ea9064e39 [compile hints] Collect compile hints data in v8
This adds the APIs for the embedder to
1) request compile hints collection for a script
2) retrieve the compile hint data

Bug: chromium:1406506
Change-Id: Ic23430d3cff9fe71faa71f4c7be6635467e14268
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4154427
Commit-Queue: Marja Hölttä <marja@chromium.org>
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85461}
2023-01-24 16:14:23 +00:00
Shu-yu Guo
9637266ea5 [shared-struct] Disallow adding private fields to shared objects
Drive-by change a InSharedWritableHeap check to use the
AlwaysSharedSpaceJSObject instance type.

Bug: chromium:1409210, v8:12547
Change-Id: I7e0cec4dd6fc9c408eca390fd787248b5a653e8f
Fixed: chromium:1409210
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4190516
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Commit-Queue: Shu-yu Guo <syg@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85460}
2023-01-24 15:54:04 +00:00
Daniel Lehmann
ad448e6007 [wasm] Mark LEB128 decoding fastpath as likely
Right now, only the condition that we did not overrun the input buffer
is marked as likely. But if this is actually a fastpath, then the
condition that the continuation bit is not set should be likely as well.

I confirmed that his moves the slowpath at the end of, e.g., the Liftoff
DecodeI32Const handler, which should lightly improve instruction cache
utilization since it keeps hot code together (not measured) and does
not regress code size (total size of the release d8 binary is exactly
equal before and after).

Bug: v8:13673

R=clemensb@chromium.org

Change-Id: I65f81efe6cc6fe97d37a7218fb293e2b16ccad70
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4191770
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Daniel Lehmann <dlehmann@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85459}
2023-01-24 15:38:18 +00:00
Camillo Bruni
b7aafbc87c Flags: Rename --enable-mega-dom-ic to --mega-dom-ic
Change-Id: I1875935b65fac18e53959ca2682e0f4bd81c50c2
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4188388
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85458}
2023-01-24 15:25:28 +00:00
Clemens Backes
7aac4791c0 [wasm-spec-tests] Document failed memory64 tests
We currently skip a few memory64 spec tests; some for missing rebase,
some for unknown reasons.
It turns out that all of the failures are due to missing rebase on bulk
memory or reference types.
This CL documents that in the comment and removes a TODO.

R=jkummerow@chromium.org
CC=sbc@chromium.org

Bug: v8:13692
Change-Id: I0ddf2bee0dcc36af5bc39251ed7b6b83d8de9aeb
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4191771
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85457}
2023-01-24 15:16:19 +00:00
Daniel Lehmann
f71d232a67 [wasm] Eliminate vector bounds checks with assume
Add V8_ASSUME statements such that the compiler can statically exploit
information in Liftoff and TurboFan code that was checked to be true
during validation beforehand. In particular, this removes bounds checks
for std::vector accesses that the compiler could not elide.

The main benefit of this change is not so much the removed branches,
but rather reduced code size and fewer clobbered registers.
In case of a failed bounds check, there were about 50 bytes of x64
instructions just for reporting the error via __libcpp_verbose_abort.
For that call alone, rdi, rsi, rcx, r8, edx, and eax were clobbered.

In total, this change reduces the d8 release code size by about 4KB.

R=clemensb@chromium.org

Bug: v8:13673
Change-Id: Iaccef478b75ba086941f70a8f39fa612f1a7e50d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4191764
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Daniel Lehmann <dlehmann@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85456}
2023-01-24 14:09:26 +00:00
Matthias Liedtke
6825359018 [wasm-gc] Liftoff: Fix stringview operations not popping its arguments from the value stack
Bug: v8:12868
Change-Id: Ibf0c7dbfa45237140fbab9664e1893c30c7e86b8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4191766
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Matthias Liedtke <mliedtke@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85455}
2023-01-24 13:42:29 +00:00
Nikolaos Papaspyrou
de50db2101 [heap] Re-introduce stack markers
This CL introduces a mechanism for setting a stack marker, to be used
for scanning only the part of stack between its start and the marker
(instead of the current stack top). Without this, the marking verifier
may encounter objects that have not been marked, because of false
positives during conservative stack scanning. The marker is introduced
in the Stack object, replacing and generalizing the one that existed
in the CppHeap.

Bug: v8:13257
Change-Id: I59cfb01e90912f9e54828bf05a3bdcfddb23e7bc
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4187221
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@{#85454}
2023-01-24 13:32:55 +00:00
Clemens Backes
ce371f6bb8 [wasm] Remove redundant PeekArgs implementation
We have a PeekArgs version that operates on a signature, and another
version that operates on a vector of value types. We can easily get the
latter from the former and remove one of the two identical
implementations.

R=jkummerow@chromium.org

Bug: v8:13636
Change-Id: Ib60d323c810305e4604eff1d1c95079b7b176676
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4188394
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85453}
2023-01-24 13:31:52 +00:00
Marja Hölttä
0863bcdf71 [rab/gsab] Ship --harmony-rab-gsab
This CL ships --harmony-rab-gsab but not --harmony-rab-gsab-transfer.

The flag is already turned on on the Blink side, this CL just changes
the V8 default value for the flag.

LGTMs: https://groups.google.com/a/chromium.org/g/blink-dev/c/UKnQgsR0kgY/m/MURj20LRAgAJ?utm_medium=email&utm_source=footer

Bug: v8:11111
Change-Id: Id9edcdc792b1b680238809d8c81fac279a51c7ae
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3991493
Commit-Queue: Marja Hölttä <marja@chromium.org>
Reviewed-by: Shu-yu Guo <syg@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85452}
2023-01-24 12:02:39 +00:00
Omer Katz
0ab7ac8ab7 [heap] Fix race in JSFunction::ShouldFlushBaselineCode
See race details in
https://logs.chromium.org/logs/v8/buildbucket/cr-buildbucket/8791110428300958801/+/u/Check_-_extra__flakes_/gc-buffer

Bug: v8:13665
Change-Id: I9b457b42055498e47001e8fd6c200288c9ae0a0e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4188390
Auto-Submit: Omer Katz <omerkatz@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Omer Katz <omerkatz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85451}
2023-01-24 11:56:56 +00:00
Al Muthanna Athamina
0a2b140fb0 Skip failing tests on Android
Bug: v8:13686
Change-Id: Id450358a888cef4b1dbd8d57803ed1a29782646c
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4188393
Auto-Submit: Almothana Athamneh <almuthanna@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85450}
2023-01-24 11:30:01 +00:00
Danil Somsikov
f89be8847b Fix error dispatch in the v8 inspector session.
Bug: chromium:1337747
Change-Id: I920f3c6370ac9f9bc351eff34e46b1e8d520fe3e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4184203
Auto-Submit: Danil Somsikov <dsv@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85449}
2023-01-24 07:12:12 +00:00
Jaroslav Sevcik
0eae0380ff [inspector] Fix handling of whitespace in breakpoint hinting
The patch fixes two bugs in hinting:
- trimmed whitespace in hints was not taken into account.
- range check for out-of-bound hints did not include the offset.

Bug: chromium:1409286
Change-Id: I5838cd6b697ed13a19c30f158963c0d9fac2f045
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4187224
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85448}
2023-01-24 06:09:19 +00:00
v8-ci-autoroll-builder
1a574b9727 Update V8 DEPS (trusted)
Rolling v8/build: 6b5cc8f..d2dda6b

Rolling v8/buildtools: d843e69..37cb03b

Rolling v8/buildtools/third_party/libc++/trunk: cf80323..885d5d1

Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/c4e9d16..7bfa128

Rolling v8/third_party/depot_tools: e852391..b88a434

Rolling v8/tools/clang: bae2f66..41fd15a

Change-Id: I143a6122238dfd0197a610f90de189c6078736c2
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4190299
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@{#85447}
2023-01-24 03:56:28 +00:00
Milad Fa
be42eb7139 PPC/s390: Remove the AbstractCode == InstructionStream case
Port 11c4c8e3d2

Original Commit Message:

    .. and only keep BytecodeArray || Code. This is part of the effort to
    reduce the number of InstructionStream references.

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

Change-Id: Ie8606c96c62b2b36f76d16ebcdc35faf7d541a54
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4188897
Reviewed-by: Junliang Yan <junyan@redhat.com>
Commit-Queue: Milad Farazmand <mfarazma@redhat.com>
Reviewed-by: Joran Siu <joransiu@ca.ibm.com>
Cr-Commit-Position: refs/heads/main@{#85446}
2023-01-23 22:27:01 +00:00
Nikolaos Papaspyrou
1e4b71d99f [heap] Move the Stack object from ThreadLocalTop to Isolate
Stack information is thread-specific and, until now, it was stored in a
field in ThreadLocalTop. This CL moves stack information to the isolate
and makes sure to update the stack start whenever a main thread enters
the isolate. At the same time, the Stack object is refactored and
simplified.

As a side effect, after removing the Stack object, ThreadLocalTop
satisfies the std::standard_layout trait; this fixes some issues
observed with different C++ compilers.

Bug: v8:13630
Bug: v8:13257
Change-Id: I026a35af3bc6999a09b21f277756d4454c086343
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4152476
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Omer Katz <omerkatz@chromium.org>
Commit-Queue: Nikolaos Papaspyrou <nikolaos@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85445}
2023-01-23 22:04:33 +00:00
Huáng Jùnliàng
14de33a440 [class] set function name for computed fields
- Introduce a new SetFunctionName runtime
- Call SetFunctionName in DefineKeyedOwnIC to handle function name for initializers of computed class fields
- Ensure that we don't set function name twice in the case '({ ['c']: class { static x = this.name; static name = 'd' } })', which would incorrectly reconfigure the defined own property `name`

Bug: v8:13451
Change-Id: I10dcb858a65c6e59cba6bae94b8e63a78e44778b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4035497
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Reviewed-by: Shu-yu Guo <syg@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Shu-yu Guo <syg@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85444}
2023-01-23 20:10:44 +00:00
Olivier Flückiger
53ec5ecf5b [static-roots] Verify static roots as early as possible
When setting up the read only heap in mksnapshot with static roots
enabled we should ensure as early as possible that the roots are
unchanged. This prevents us from running any further code with an
incorrect roots table leading to hard to debug crashes.

Bug: v8:13466
Change-Id: I4ed9efadc79a2bf6f04c2365dabe9bf0116852d5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4188380
Auto-Submit: Olivier Flückiger <olivf@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85443}
2023-01-23 17:24:47 +00:00
Milad Fa
3123e9537e PPC/S390: cleanup owner files
... from inactive users.

Change-Id: Ibaf30311cb74402a71a51995f05479295899f87c
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4184557
Commit-Queue: Milad Farazmand <mfarazma@redhat.com>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85442}
2023-01-23 17:07:21 +00:00
Clemens Backes
0488582da8 [wasm] Add DCHECK that we do not validate unexpectedly
After several fixes (https://crrev.com/c/4152483,
https://crrev.com/c/4152489, https://crrev.com/c/4152950,
https://crrev.com/c/4168411, https://crrev.com/c/4168412), we can
finally add the DCHECK that we do not have to validate functions under
normal circumstances (if no non-default flags are enabled).

This should protect us against future bugs that lead to
double-validation and hence unnecessary overhead.

R=ahaas@chromium.org

Change-Id: I519b221b96c43f921677e0ab8e519ede249ef12e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4178823
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85441}
2023-01-23 16:48:27 +00:00
Milad Fa
a41eb50499 S390[liftoff]: refactor simd relaxed ops
Cleanup the emitters by using non-relaxed simd ops.

Change-Id: I079d999ee5bb194c538ad7c4b0192ac552b1b601
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4184556
Commit-Queue: Milad Farazmand <mfarazma@redhat.com>
Reviewed-by: Junliang Yan <junyan@redhat.com>
Cr-Commit-Position: refs/heads/main@{#85440}
2023-01-23 16:38:12 +00:00
Seth Brenith
78addf2f16 Improve encoding of common translation instructions
This change reduces the size of translation arrays by adding two more
translation opcodes to reduce the number of operands that must be
written. In particular:

- The last two operands for INTERPRETED_FRAME are usually zero, so we
  can add a separate opcode with two fewer operands where those values
  are implicitly zero.
- The update_feedback operand for BEGIN is always either zero or one, so
  we can split BEGIN into _WITH_FEEDBACK and _WITHOUT_FEEDBACK variants.

This change saves about 13% of the total generated TranslationArray
bytes in an Octane run, a reduction from around 1.4 MB to 1.2 MB. I
don't see any difference in the time taken by V8.TFCodeGeneration with
this change.

Bug: v8:11354
Change-Id: Ic049d0b636693cd3278514e5e5e975b80a78d8e9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4178895
Reviewed-by: Jakob Linke <jgruber@chromium.org>
Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85439}
2023-01-23 16:26:23 +00:00
Omer Katz
29d54b0408 Fix data race when writing to Profiler::overflow_
This CL resolves the races in
https://logs.chromium.org/logs/v8/buildbucket/cr-buildbucket/8791194392783872945/+/u/Check/LogAllTest.LogAll

Bug: v8:13665
Change-Id: Ic40fe995eb9a335cdb0477106009a4d455273cb6
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4187215
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Commit-Queue: Omer Katz <omerkatz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85438}
2023-01-23 16:19:43 +00:00
Tobias Tebbi
b691cca3de [runtime] add protector for String/Number prototype @@replace lookup
This improves performance of `String.prototype.replace` by avoiding
a runtime call in the case of strings.

Change-Id: Id2339defa660b28ffde3d2e116c0a666ad1bfb1a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4173577
Reviewed-by: Jakob Linke <jgruber@chromium.org>
Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85437}
2023-01-23 15:55:52 +00:00
Omer Katz
7731b0781b Skip tests for tsan debug bot
Bug: v8:13665
Change-Id: Ib5530deab091542ef86e511ff0cabbfc44fe9263
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4188377
Reviewed-by: Almothana Athamneh <almuthanna@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Almothana Athamneh <almuthanna@chromium.org>
Auto-Submit: Omer Katz <omerkatz@chromium.org>
Commit-Queue: Omer Katz <omerkatz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85436}
2023-01-23 15:21:39 +00:00
Jakob Kummerow
4724f988ae [profiler] Support WasmGC objects in heap snapshots
Since the heap snapshot generator is based on generic objects-visiting
infrastructure, it already reported all objects, but it showed WasmGC
objects as generic "system" objects. This patch adds proper categorization,
including support for named types and fields.

Bug: v8:7748
Change-Id: I1b0997059c9cf0290fe5d6c5402412ba09ecf143
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4181031
Auto-Submit: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85435}
2023-01-23 14:21:36 +00:00
Matthias Liedtke
186068ad3f String.p.toLocaleLowerCase: Perform locale validation also on empty string
The fast path implementation for toLocaleLowercase (added in
333db24b55, https://crrev.com/c/3952317)
skipped the locale validation if the string to be converted is the empty
string.
This CL addresses it by delaying the early return for empty string to be
performed after the locale validation.

Bug: chromium:1409058
Change-Id: I2f2839dc836d8de662d308c86099707bf9ddfd9e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4184199
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Auto-Submit: Matthias Liedtke <mliedtke@chromium.org>
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85434}
2023-01-23 13:55:09 +00:00
Jakob Kummerow
b4ae834223 [bigint] Implement NoSideEffectsToString
When our various debugging and error reporting facilities want to
perform a side effect free conversion of a value (which could be
a BigInt) to a String, then the usual BigInt::ToString is not a
great fit because it reacts to termination requests.
This patch adds a method BigInt::NoSideEffectsToString, which uses
a low upper bound instead of termination requests.

Fixed: chromium:1406774
Change-Id: Ibc5d37027823e4a03c470f1dd0a63c16c552850c
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4177099
Auto-Submit: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85433}
2023-01-23 13:47:15 +00:00
Jakob Linke
11c4c8e3d2 Remove the AbstractCode == InstructionStream case
.. and only keep BytecodeArray || Code. This is part of the effort to
reduce the number of InstructionStream references.

Drive-by: Fix a few outdated InstructionStream uses.

Bug: v8:13654
Change-Id: If70fd6a0cb3c8d7e677495d133db64f5c5a26101
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4178821
Commit-Queue: Jakob Linke <jgruber@chromium.org>
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85432}
2023-01-23 13:39:18 +00:00
Matthias Liedtke
3e64021c7e [wasm-gc] Add cache lookup to wrapper compilation
Bug: v8:7748
Change-Id: I3599be973b8f20d6fe3a9a7a25f18c06e1bc2a87
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4177096
Reviewed-by: Manos Koukoutos <manoskouk@chromium.org>
Commit-Queue: Matthias Liedtke <mliedtke@chromium.org>
Auto-Submit: Matthias Liedtke <mliedtke@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85431}
2023-01-23 12:05:51 +00:00
Omer Katz
21ab8287a6 Mark slow tests for tsan debug bot
Bug: v8:13665
Change-Id: I228e847de411d2b18b1529b6c25208ae2d7f8ce0
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4187217
Commit-Queue: Omer Katz <omerkatz@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85430}
2023-01-23 10:17:58 +00:00
Michael Achenbach
29b3bd3826 [test] Include shard info in test records
This will allow on the infra side to easier link to the respective
shard on a test failure. Without that it's a hassle to find out on
which shard the failing test ran.

This also simplifies how the global test_config stores information.
Some information was duplicated, but is now rather shared through
properties if the owning object is already present.

Bug: v8:13681
Change-Id: I52f01a4fac74627575d80f25923faba99eb6a1fb
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4181030
Reviewed-by: Liviu Rau <liviurau@google.com>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85429}
2023-01-23 09:50:01 +00:00
Jakob Linke
7a3a6e88bd Revert "[turbofan] Optimize access to the length property of functions"
This reverts commit 7eb8937bca.

Reason for revert: crbug.com/1408957

Original change's description:
> [turbofan] Optimize access to the length property of functions
>
> When compiling to JavaScript a language that supports curryfication, it
> is convenient to be able to efficiently get the arity of a function to
> check for partial application.
>
> Change-Id: I6611b523b2c3795f1f8fb123f63f5b6d604d793d
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4111447
> Reviewed-by: Jakob Linke <jgruber@chromium.org>
> Commit-Queue: Jakob Linke <jgruber@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#85409}

Fixed: chromium:1408957
Change-Id: I5200392af7532a864afd73fb0e88be9a2153a312
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4187075
Commit-Queue: Jakob Linke <jgruber@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#85428}
2023-01-23 08:58:42 +00:00
Jakob Linke
05a3ad7c72 Revert "[maglev] Load SFI::length as int16"
This reverts commit d236b0ebb7.

Reason for revert: Reverting the CL that introduced the bug, see crbug.com/1408957

Original change's description:
> [maglev] Load SFI::length as int16
>
> Bug: v8:7700
> Change-Id: I853ef2c81d180a98a0c97322832f4b35789baeb2
> Fixed: chromium:1408956
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4183487
> Auto-Submit: Leszek Swirski <leszeks@chromium.org>
> Reviewed-by: Victor Gomes <victorgomes@chromium.org>
> Commit-Queue: Victor Gomes <victorgomes@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#85418}

Bug: v8:7700
Bug: chromium:1408957
Change-Id: I2f5b163505e437232121c8a142cd03d16f228381
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4187095
Commit-Queue: Jakob Linke <jgruber@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#85427}
2023-01-23 08:27:00 +00:00
Dominik Inführ
d31e52879b [heap] Introduce getters for MemoryReducer::State
This CL hides the ctor of the MemoryReducer::State class and only
provides factory methods for creating states. This simplifies creation
of states and makes it impossible to misuse the API.

Direct field accesses are also replaced with invocations of their
corresponding getter methods. The getter method will check whether
the current state is allowed to access that field.

Bug: v8:13653
Change-Id: I252a6d75d0ddb4813b16a706061ad1951cfa35ea
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4181026
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85426}
2023-01-23 07:54:44 +00:00
v8-ci-autoroll-builder
417ce7ef46 Update V8 DEPS (trusted)
Rolling v8/build: e58773a..6b5cc8f

Rolling v8/third_party/android_sdk/public: oWlET2yQhaPKQ66tYNuSPaueU78Z9VlxpyxOoUjwRuIC..3Yn5Sn7BMObm8gsoZCF0loJMKg9_PpgU07G9DObCLdQC

Rolling v8/third_party/fuchsia-sdk/sdk: version:11.20230121.2.1..version:11.20230122.2.1

Change-Id: I2c6af834b1e12c22917bb4f7b3c8c68df8bd4052
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4186875
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@{#85425}
2023-01-23 03:59:21 +00:00
v8-ci-autoroll-builder
f2587421d4 Update V8 DEPS (trusted)
Rolling v8/build: 372a5a7..e58773a

Rolling v8/third_party/depot_tools: 18de1f6..e852391

Rolling v8/third_party/fuchsia-sdk/sdk: version:11.20230118.2.1..version:11.20230121.2.1

Change-Id: Id0e728455c851d754111efae8aa1f39a50fb2f51
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4184920
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@{#85424}
2023-01-22 04:04:12 +00:00
v8-ci-autoroll-builder
de3ef68ca0 Update V8 DEPS (trusted)
Rolling v8/build: dac013f..372a5a7

Rolling v8/buildtools/third_party/libc++abi/trunk: dc82f30..d520d58

Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/e1ae723..c4e9d16

Rolling v8/third_party/depot_tools: aec39c3..18de1f6

Rolling v8/tools/clang: 16bb37b..bae2f66

Change-Id: I32f90bfb82a03202e01b3787a719ecbd790b47c2
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4184565
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@{#85423}
2023-01-21 03:55:09 +00:00
Joyee Cheung
3f3b10b6ac [ic] store the slow handler for proxies in DefineKeyedOwnIC
Previously we stored kProxy in this case, which resulted in
set semantics for proxies.

Bug: chromium:1408310
Change-Id: Id9f215b4c3c08416b6d6c5f4605839668a5df340
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4178811
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Joyee Cheung <joyee@igalia.com>
Cr-Commit-Position: refs/heads/main@{#85422}
2023-01-20 22:30:24 +00:00
Joyee Cheung
4d0d31f41b [class] support out-of-scope private member access in debug-evaluate
Previously in the DevTools console, users could inspect a preview of all private class members on an instance, but if they wanted to evaluate or inspect a  specific private class member out of a long list, they had to be debugging and in a scope that has access to those private names.

This patch adds support for extraordinary access of out-of-scope private member access in debug-evaluate, specifically for Debugger.evaluateOnCallframe() (for console calls invoked during debugging) and Runtime.evaluate() (for console calls invoked when the user is not debugging). This kind of access is not otherwise allowed in normal execution, but in the DevTools console it makes sense to relax the rules a bit for a better developer experience.

To support this kind of extraordinary access, if the parsing_while_debugging or is_repl_mode flag is set, when we encounter a private name reference that's in a top-level scope or an eval scope under a top-level scope, instead of throwing immediately, we bind the reference to a dynamic lookup variable, and emit bytecode that calls to %GetPrivateName() or %SetPrivateName() in the runtime to perform lookup of the private name as well as the load/store operations accordingly.

If there are more than on private name on the receiver matching the description (for example, an object with two `#field` private names from different classes), we throw an error for the ambiguity (we can consider supporting selection among the conflicting private names later, for the initial support we just throw for simplicity).

If there are no matching private names, or if the found private class member does not support the desired operation (e.g. attempting to write to a read-only private accessor), we throw an error as well.

If there is exactly one matching private name, and the found private class member support the desired operation, we dispatch to the proper behavior in the runtime calls.

Doc: https://docs.google.com/document/d/1Va89BKHjCDs9RccDWhuZBb6LyRMAd6BXM3-p25oHd8I/edit

Bug: chromium:1381806
Change-Id: I7d1db709470246050d2e4c2a85b2292e63c01fe9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4020267
Commit-Queue: Joyee Cheung <joyee@igalia.com>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85421}
2023-01-20 22:26:44 +00:00
Leszek Swirski
d2ff82cbc9 [maglev] Add BranchIfTypeOf
Add a shortcutting branch for TestTypeOf, similar to the compare
branches.

To do this, move the TestTypeOf implementation into MaglevAssembler. We
want to support label distances and fallthroughs correctly, so
additionally implement a generic Branch for labels with distances and
support for fallthroughs.

Bug: v8:7700
Change-Id: Ib8c6b0eeeec0a7f3429d3692081853d25278fba4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4181034
Auto-Submit: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85420}
2023-01-20 16:10:43 +00:00
Milad Fa
da27bc1719 PPC[liftoff]: Implement simd relaxed ops
Change-Id: Ieb8d8838df7e27a70734dc667460cfb5e6317961
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4157699
Commit-Queue: Milad Farazmand <mfarazma@redhat.com>
Reviewed-by: Junliang Yan <junyan@redhat.com>
Cr-Commit-Position: refs/heads/main@{#85419}
2023-01-20 14:48:02 +00:00