Commit Graph

69998 Commits

Author SHA1 Message Date
Maya Lekova
ac46a76c7c [fastcall] Simplify JS execution flag setting
This CL improves setting the javascript_execution_assert
on the isolate from generated code by adding a single wrapper
function around the fast call creation, along with its setup
and teardown. It's a follow-up for
https://chromium-review.googlesource.com/c/v8/v8/+/2982998/

Bug: chromium:1218898
Change-Id: I0dc45520aa2a9b60ce03076a495e3f68c05945c7
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2999086
Reviewed-by: Georg Neis <neis@chromium.org>
Commit-Queue: Maya Lekova <mslekova@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75506}
2021-07-01 13:02:47 +00:00
Mythri A
137d83b9b6 [turboprop] Handle MinimorphicPropertyAccess in ShouldUseMegamorphic
It is possible that we fallback to GenericLowering for minimorphic
property accesses. So handle MinimorphicPropertyAccess in
ShouldUseMegamorphicLoadBuiltin.

Bug: chromium:1223733
Change-Id: Ia1ba8c8786be91dda841d4138cffe81185c066b0
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2997104
Commit-Queue: Mythri Alle <mythria@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75505}
2021-07-01 12:47:58 +00:00
Jakob Gruber
d3cacbbbd5 Reland: ScopeInfo, SharedFunctionInfo never-ever serialized
This relands squashed CLs:

59b9aaf7db
8f84d0bb8f

The revert was at crrev.com/c/2996198.

Changed: Fixed a test in which bytecode flushing caused a behavioral
change between serialized- and unserialized SFI Refs. The serialized
SFI ref kept bytecode alive while unserialized SFIs allow flushing.
The test was fixed by adding a %PrepareFunctionForOptimization
annotation.

No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:7790, v8:11939
Change-Id: I170f8085bd7454a2a5f2bb03c8824e2862857827
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2999089
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Auto-Submit: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75504}
2021-07-01 12:06:38 +00:00
Michaël Zasso
0e9c483c77 Fetch googletest for Node.js
The files that Node.js checks in source control are not enough
for BUILD.gn.

Change-Id: I84f4794b9354bf8a4006965cc84d8610ea3a1a7e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2991647
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Victor Gomes <victorgomes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75503}
2021-07-01 11:01:37 +00:00
Jakob Kummerow
808fbade92 [bigint] Fastpath for small base-10 toString
This special-cases the most common situation to avoid call overhead.

Bug: chromium:1224299
Change-Id: Ic4bac2d5565f9b7a174eed845952b596adecbc8f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2997584
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75502}
2021-07-01 10:06:37 +00:00
Camillo Bruni
f2d079bc97 [tools][system-analyzer] Add local symbol server
Start a local symbol server using the local-web-sever node package:
   ws --stack system-analyzer/lws-middleware.js lws-static cors

The system-analyzer will then use it to symbolize profiles.

Note: The symbol server will execute `nm` and `objdump` locally.

Change-Id: Icff6e9f5af24f214f353c049f5cd13eedccf0f88
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2979591
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75501}
2021-07-01 09:59:17 +00:00
Jakob Kummerow
56fe020eec [wasm][arm64] Always zero-extend 32 bit offsets, for realz
We've already been zero-extending 32-bit offset registers since
https://chromium-review.googlesource.com/c/v8/v8/+/2917612,
but that patch only covered the case where offset_imm == 0.
When there is a non-zero offset, we need the same fix.

Bug: chromium:1224882,v8:11809
Change-Id: I1908f735929798f411346807fc4f3c79d8e04362
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2998582
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75500}
2021-07-01 08:59:57 +00:00
Jakob Gruber
fa58f8ef0f [compiler] Fix data race in TryGetPropertyCell
Bug: v8:7790, chromium:1225521
Change-Id: I4210ca9d3eccdc4de0b5b865bac37dc32b8e6f17
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2999085
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Auto-Submit: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75499}
2021-07-01 07:58:20 +00:00
Clemens Backes
0db35a9307 [wasm] Add timed histogram for lazy compile time
We currently only measure the compilation time of individual functions,
but that does not include other things that happen for lazy compilation,
like switching memory permissions or publishing the code.

This CL adds a dedicated counter to measure the complete lazy
compilation time.

R=jkummerow@chromium.org
CC=dlehmann@google.com

Bug: v8:11940
Change-Id: I9a87882d2adc7bea6c5258954a642da18b8337ef
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2997106
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75498}
2021-07-01 07:40:37 +00:00
Jakob Gruber
64d483a0ff [compiler] Add missing PropertyCellRef serialization
Bug: v8:7790, chromium:1225300
Change-Id: I36ae331db0abb072ebc597b4682c3983a00d8a1d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2999084
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Auto-Submit: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75497}
2021-07-01 07:23:07 +00:00
v8-ci-autoroll-builder
317db29cb3 Update V8 DEPS.
Rolling v8/build: b342bb3..969e9b2

Rolling v8/buildtools: 82a4d60..fd3f3c1

Rolling v8/buildtools/third_party/libc++/trunk: 79a2e92..8fa8794

Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/2bc697b..949bca8

Rolling v8/third_party/googletest/src: 355d57d..255323c

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

Change-Id: I75876b6b9e83f4d5866c0405bb7258f4c709b749
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2998385
Reviewed-by: 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/master@{#75496}
2021-07-01 03:53:07 +00:00
John Xu
9c904a8f19 Upstream Cobalt changes in base/ and utils/
- Updated implementation of platform-starboard
- Introducing stack_trace_starboard.cc
- Adding Starboard implementation for sys-info, random and memory
- Disabling some code in ostream.

Bug: v8:10927
Change-Id: I4548a413449fc8e43c5d4ae485b3644c60c07830
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2952864
Commit-Queue: John Xu <johnx@google.com>
Auto-Submit: John Xu <johnx@google.com>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75495}
2021-07-01 03:31:06 +00:00
Peter Kasting
ae1eee10fa Fix most instances of -Wunreachable-code-aggressive.
There are still a few cases remaining that seem more controversial;
I'll upload those separately.

Bug: chromium:1066980
Change-Id: Iabbaf23f9bbe97781857c0c589f2b3db685dfdc2
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2994804
Commit-Queue: Peter Kasting <pkasting@chromium.org>
Auto-Submit: Peter Kasting <pkasting@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75494}
2021-07-01 03:03:25 +00:00
Liu Yu
10e158862c [mips] Fix kWasmInstanceOffset and clear an unused test
Fix a offset error, this is related to
commit 38fb148730

Delete cctest/test-run-machops/StackSlotAlignment, this is
related to commit a58f812c48

Change-Id: I3ef1b96d8a3bdba530200cbac4f7a062496ace59
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2994813
Reviewed-by: Bill Budge <bbudge@chromium.org>
Reviewed-by: Zhao Jiazhong <zhaojiazhong-hf@loongson.cn>
Commit-Queue: Zhao Jiazhong <zhaojiazhong-hf@loongson.cn>
Auto-Submit: Liu yu <liuyu@loongson.cn>
Cr-Commit-Position: refs/heads/master@{#75493}
2021-07-01 01:04:26 +00:00
Manos Koukoutos
7981dc33d5 Reland "[wasm] Refactor initializer expression handling"
This is a reland of 071a1acf32

Changes compared to original:
Expect SIMD test to fail if SIMD is not supported.

Original change's description:
> [wasm] Refactor initializer expression handling
>
> Design doc: https://bit.ly/3xPxWUe
>
> This CL introduces two main changes:
> - Initializer expressions are now decoded by WasmFullDecoder. With
>   wasm-gc, initializer expressions are no longer just constants, and
>   require complex decoding (including stack tracking). This resulted in
>   extensive code duplication.
> - Initializer expressions are not stored explicitly by module-decoder as
>   an AST (WasmInitExpr), but rather as a WireBytesRef, and are decoded
>   again during module instantiation. This should reduce memory
>   consumption for globals and other module elements with initializer
>   expressions (which has been observed in the 40MB range in some
>   real-world benchmarks.
>
> Summary of changes:
> - Add a static parameter {kFunctionBody, kInitExpression} to the
>   WasmDecoder. Use it to specialize validation to function bodies/init.
>   expressions.
> - Introduce a new Interface for the WasmFullDecoder for init.
>   expressions.
> - Differentiate between constant and non-constant opcodes in
>   WasmFullDecoder.
> - Change representation of init. expressions in WasmModule to
>   WireBytesRef.
> - Reimplement EvaluateInitExpression in module-instantiate to re-decode
>   initializer expressions.
> - Remove some now-invalid module decoder tests.
>
> Pending changes:
> - Also refactor initializer expressions for element segment entries.
> - Reintroduce deleted tests.
>
> Bug: v8:11895
> Change-Id: I76512bfe1386c8338667d30fa6db93880a1e4b42
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2972910
> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#75476}

Bug: v8:11895
Change-Id: I2dface5ff28d5a2d439a65d3e5cb83135c061bb9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2997722
Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75492}
2021-06-30 21:33:46 +00:00
Deepti Gandluri
a83fcd807c Revert "[wasm-simd] Pass decode if SSSE3 flag is set"
This reverts commit 0d059e072e.

Reason for revert: Reverting as CheckHardwareSupportsSimd already contains the SSSE3 check.

Original change's description:
> [wasm-simd] Pass decode if SSSE3 flag is set
>
> Change-Id: Iafe2b5635287fea5bd3c687b4ed897edbce4b0aa
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2798978
> Reviewed-by: Zhi An Ng <zhin@chromium.org>
> Commit-Queue: Deepti Gandluri <gdeepti@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#73781}

Change-Id: Ib227af90f2f35a7e63cb64acea8bbca9ff8ddd62
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2998503
Auto-Submit: Deepti Gandluri <gdeepti@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75491}
2021-06-30 20:35:35 +00:00
Ng Zhi An
d30c730368 Add comments to undocumented functions and fix other comments
Grouping a couple of small, non-functional fixes:

- add a comment to GetStackParameterDelta
- small typo fixes to a couple of places I saw while reading related
code

Bug: v8:11879
Change-Id: I8566c9778fd6268b08ea3aefbdaa84ef894bcd35
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2997922
Reviewed-by: Georg Neis <neis@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75490}
2021-06-30 18:57:07 +00:00
Mike Stanton
4cca3ccd76 [compiler] TSAN warning in PropertyArray::get()
PropertyArray::get() and a few other functions there call
PropertyArray::length() in an assert. These need to be the acquire
load version of length() to keep TSAN happy.

Bug: chromium:1225277
Change-Id: Ic43bfc1902dea3e87f353be0efd03563c13c1e10
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2997105
Reviewed-by: Santiago Aboy Solanes <solanes@chromium.org>
Commit-Queue: Michael Stanton <mvstanton@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75489}
2021-06-30 18:36:35 +00:00
Ng Zhi An
6b2bd2eb87 Add comments to describe some builtins
Bug: v8:11879
Change-Id: Ia0047b701e77b6e766984de527e817874d95f38e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2989102
Reviewed-by: Santiago Aboy Solanes <solanes@chromium.org>
Reviewed-by: Shu-yu Guo <syg@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75488}
2021-06-30 18:05:35 +00:00
Ng Zhi An
c83501448b [tools] Fix lldb_commands jco by casting call
Currently, running jco gives us an error message like so:

(lldb) jco $pc
Failed to evaluate command _v8_internal_Print_Code((void*)($pc)) :
error: <user expression 0>:1:1: '_v8_internal_Print_Code' has unknown
return type; cast the call to its declared return type
_v8_internal_Print_Code((void*)($pc))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The fix is to cast the call to (void). I've only used and found this
issue with jco, but I think the other commands have the same issue, so
fixing those together here.

FYI I am using lldb version 11.

Bug: v8:11879
Change-Id: Id9d8e8091fd011585e6fea863de5b4d7c9d47c5a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2994764
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75487}
2021-06-30 18:00:36 +00:00
Jakob Gruber
0585ada4c0 [compiler] Remove --turbo-...-ispendingallocation flag
No longer needed now that the predicate is fixed.

Bug: v8:7790,v8:11779
Change-Id: If585c3692aed77659b53f670182129988ba93130
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2996193
Auto-Submit: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75486}
2021-06-30 17:09:45 +00:00
Victor Gomes
977a2761eb [heap] Fix DCHECK in UndoLastAllocationAt
Change-Id: I4ec51c8f1a0a9b5d9967898c2e89c9ba82ace6c5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2997107
Auto-Submit: Victor Gomes <victorgomes@chromium.org>
Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75485}
2021-06-30 17:02:07 +00:00
Clemens Backes
5756c40e47 Revert "[wasm] Refactor initializer expression handling"
This reverts commit 071a1acf32.

Reason for revert: Breaks on nosse: https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux/42795/overview

Original change's description:
> [wasm] Refactor initializer expression handling
>
> Design doc: https://bit.ly/3xPxWUe
>
> This CL introduces two main changes:
> - Initializer expressions are now decoded by WasmFullDecoder. With
>   wasm-gc, initializer expressions are no longer just constants, and
>   require complex decoding (including stack tracking). This resulted in
>   extensive code duplication.
> - Initializer expressions are not stored explicitly by module-decoder as
>   an AST (WasmInitExpr), but rather as a WireBytesRef, and are decoded
>   again during module instantiation. This should reduce memory
>   consumption for globals and other module elements with initializer
>   expressions (which has been observed in the 40MB range in some
>   real-world benchmarks.
>
> Summary of changes:
> - Add a static parameter {kFunctionBody, kInitExpression} to the
>   WasmDecoder. Use it to specialize validation to function bodies/init.
>   expressions.
> - Introduce a new Interface for the WasmFullDecoder for init.
>   expressions.
> - Differentiate between constant and non-constant opcodes in
>   WasmFullDecoder.
> - Change representation of init. expressions in WasmModule to
>   WireBytesRef.
> - Reimplement EvaluateInitExpression in module-instantiate to re-decode
>   initializer expressions.
> - Remove some now-invalid module decoder tests.
>
> Pending changes:
> - Also refactor initializer expressions for element segment entries.
> - Reintroduce deleted tests.
>
> Bug: v8:11895
> Change-Id: I76512bfe1386c8338667d30fa6db93880a1e4b42
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2972910
> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#75476}

Bug: v8:11895
Change-Id: I9fcfdedad73ef21beb9632f50305b8e678a2dff6
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2997582
Auto-Submit: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#75484}
2021-06-30 16:05:26 +00:00
Santiago Aboy Solanes
1485bfb7c9 [test] Mark kraken/audio SLOW only on TSAN
Marked as SLOW in
https://chromium-review.googlesource.com/c/v8/v8/+/2993538. We can be
more specific and not mark it for everything.

Bug: v8:7790, v8:11600, v8:11906
Change-Id: I1c238bffb9973ae80a2fcc32f4103215bd019d67
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2992719
Reviewed-by: Mythri Alle <mythria@chromium.org>
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75483}
2021-06-30 15:21:55 +00:00
Clemens Backes
d701dde2be [cleanup] Remove redundant FLAG_SCOPE macros
FLAG_SCOPE_EXTERNAL can be used outside of the v8::internal namespace,
while FLAG_SCOPE can not.
This CL refactors FLAG_SCOPE such that it can be used anywhere, and
removes the redudant FLAG_SCOPE_EXTERNAL macro.
Also, UNFLAG_SCOPE_EXTERNAL is removed in favor of FLAG_SCOPE_VAL, as
the word "flag" in the macro name is meant to refer to a flag, and not
to the verb or action of "flagging" something, hence "unflag" does not
match the terminology.

R=ahaas@chromium.org

Bug: v8:11879
Change-Id: I2d761012c3e4330abb611bf67130eb57ec5bb964
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2988920
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75482}
2021-06-30 15:05:25 +00:00
Milad Fa
ea5eac4242 PPC/S390: skip slow tests on the simulator
regress-crbug-482998 is skipped and regress-331444 is marked
as slow.

Bug: v8:11875
Change-Id: I01c14dee704c5179d62b79cca0681f833102680d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2996842
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Milad Fa <mfarazma@redhat.com>
Cr-Commit-Position: refs/heads/master@{#75481}
2021-06-30 15:00:05 +00:00
Clemens Backes
16515b162f [disassembler] Increase padding on x64
There are instructions that take 7 bytes, e.g.
4881ec10000000 REX.W subq rsp,0x10

Hence increase the padding from 12 characters to 14 characters to
restore alignment.

Drive-by: Rewrite the padding loop to make it more readable and add a
comment.

R=jkummerow@chromium.org

Change-Id: Iddd6a721574fc47b4a072fe40c2f5e90cb3d1186
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2996200
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75480}
2021-06-30 14:46:14 +00:00
Clemens Backes
ed6b07a607 [liftoff] Remove redundant code comments
The {EnterFrame} and {LeaveFrame} methods will already emit a (scoped)
code comment in the form
  [ EnterFrame
   ... instructions ...
  ]

Thus skip the additional code comment emitted by Liftoff.

R=ahaas@chromium.org

Bug: v8:11879
Change-Id: I488568022cb03b16f07a12c1a575d90613691758
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2996197
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75479}
2021-06-30 14:31:56 +00:00
Clemens Backes
dce6170a83 [wasm] Remove --experimental-liftoff-extern-ref flag
Extern ref in Liftoff is enabled since M-90
(https://crrev.com/c/2625886), hence remove the flag to simplify the
code.

R=ahaas@chromium.org

Bug: v8:11879
Change-Id: Ie72dfbc006d6f42e2e9e83d44ff78e3c53a82614
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2996195
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75478}
2021-06-30 14:21:25 +00:00
Clemens Backes
ef68870faf [liftoff] Merge i32.eqz + if
We currently merge i32 binary operations with a subsequent if or br_if,
and we merge i32.eqz with a subsequent br_if. The combination i32.eqz +
if was missing, even thought there is already support for that in the
"if" handler.

R=ahaas@chromium.org

Change-Id: Id4386d0c5d6dcf3605c72ea1146169d2088abe98
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2996196
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75477}
2021-06-30 14:16:55 +00:00
Manos Koukoutos
071a1acf32 [wasm] Refactor initializer expression handling
Design doc: https://bit.ly/3xPxWUe

This CL introduces two main changes:
- Initializer expressions are now decoded by WasmFullDecoder. With
  wasm-gc, initializer expressions are no longer just constants, and
  require complex decoding (including stack tracking). This resulted in
  extensive code duplication.
- Initializer expressions are not stored explicitly by module-decoder as
  an AST (WasmInitExpr), but rather as a WireBytesRef, and are decoded
  again during module instantiation. This should reduce memory
  consumption for globals and other module elements with initializer
  expressions (which has been observed in the 40MB range in some
  real-world benchmarks.

Summary of changes:
- Add a static parameter {kFunctionBody, kInitExpression} to the
  WasmDecoder. Use it to specialize validation to function bodies/init.
  expressions.
- Introduce a new Interface for the WasmFullDecoder for init.
  expressions.
- Differentiate between constant and non-constant opcodes in
  WasmFullDecoder.
- Change representation of init. expressions in WasmModule to
  WireBytesRef.
- Reimplement EvaluateInitExpression in module-instantiate to re-decode
  initializer expressions.
- Remove some now-invalid module decoder tests.

Pending changes:
- Also refactor initializer expressions for element segment entries.
- Reintroduce deleted tests.

Bug: v8:11895
Change-Id: I76512bfe1386c8338667d30fa6db93880a1e4b42
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2972910
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75476}
2021-06-30 14:15:45 +00:00
Victor Gomes
444fdfdef6 [heap] Adds UndoLastAllocationAt
If the object to be trimmed creates a filler object that is located just
before the current LAB, then we can immediately give back the memory.

Bug: v8:11872, v8:11883
Change-Id: I9ec37443482334003b3752a3f25fc5dcb6a476fc
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2996643
Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
Commit-Queue: Victor Gomes <victorgomes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75475}
2021-06-30 14:14:16 +00:00
Clemens Backes
0626318282 [wasm] Remove --trace-wasm-ast-* flags
Those flags are old, not commonly used, and redundant. People usually
rely on external tools to disassembly wasm functions or modules.
Also, the name is misleading as Wasm is not an AST (any more).

R=ahaas@chromium.org

Bug: v8:11879
Change-Id: I0f90d142ae4c7c6b7ee6013ea033951aad6bf133
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2996194
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75474}
2021-06-30 14:14:07 +00:00
Clemens Backes
47051ae0aa Move wasm regression test to wasm directory
This will automatically skip the test in the stress_snapshot variant,
where Wasm is not supported.

R=cbruni@chromium.org

Bug: v8:11937
Change-Id: I29078e070a7b1526470e15d8667c5256ea4d8fe1
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2996642
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75473}
2021-06-30 14:12:55 +00:00
Clemens Backes
527d62a65a [disassembler] Add back missing whitespaces
This adds back two spaces that went missing in
https://crrev.com/c/2978252, removing the space between offset and
instruction bytes.

After https://crrev.com/c/2978252:
0x21ea0e1e04a0     055             push rbp
0x21ea0e1e04a1     14889e5         REX.W movq rbp,rsp

After this CL:
0x2be7c8c604a0     0  55           push rbp
0x2be7c8c604a1     1  4889e5       REX.W movq rbp,rsp

R=delphick@chromium.org

Change-Id: I6df35aed9b5909da72965fef622b07120c226fae
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2996199
Reviewed-by: Dan Elphick <delphick@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75472}
2021-06-30 14:12:18 +00:00
Victor Gomes
4937b43c64 [bazel] Adds ICU
No-Try: true
Bug: v8:11234
Change-Id: I93bf3f096bd82faadd21abf08d61f06c0b823f7e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2996189
Auto-Submit: Victor Gomes <victorgomes@chromium.org>
Reviewed-by: Dan Elphick <delphick@chromium.org>
Commit-Queue: Dan Elphick <delphick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75471}
2021-06-30 12:54:15 +00:00
Jakob Gruber
fc668d5c37 Revert: ScopeInfo, SharedFunctionInfo never-ever serialized
This reverts:

59b9aaf7db
8f84d0bb8f

No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:7790
Change-Id: Ieaca12cad2edcab85517cb4cffb58abb1be50674
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2996198
Auto-Submit: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Sathya Gunasekaran  <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75470}
2021-06-30 12:53:35 +00:00
Victor Gomes
ccb414d22e [baseline] Do not compile large code object on heap
Bug: v8:11872
Change-Id: I8511bec7f4eaed5d154094083b46e3895ac0b1a6
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2992728
Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
Commit-Queue: Victor Gomes <victorgomes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75469}
2021-06-30 12:22:55 +00:00
Yoshisato Yanagisawa
85b196ff34 Add "V8 Linux64 - builder - reclient" to mb_config.pyl.
Bug: chromium:1222951
Change-Id: I41bf941969b5d94ec28ac728f0fe129d8acb83d8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2995611
Auto-Submit: Yoshisato Yanagisawa <yyanagisawa@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75468}
2021-06-30 12:16:15 +00:00
Jakob Gruber
76b9d98fc9 [compiler] Concurrent JSGlobalObjectRef::GetPropertyCell
.. and make JSGlobalObjectRef bg-serialized.

GetPropertyCell was implemented as:

 LookupIterator it(holder, isolate, name, LookupIterator::OWN);
 it.TryLookupCachedProperty();
 if (it.state() == LookupIterator::DATA) it.GetPropertyCell();

Due to concurrency requirements, we essentially have to reimplement
this entire path for use in a concurrent setting:

 - Reads in some cases have to use relaxed or acquire semantics.
 - The IsPendingAllocation predicate must be called on some objects
   before reading into them.
 - Repeated reads of the same field must be avoided due to the
   possibility of concurrent modifications.

This CL introduces two new methods:

ConcurrentLookupIterator::TryGetPropertyCell implements the outer
lookup logic, including the repeated lookup for accessors / cached
property names.

GlobalDictionary::TryFindPropertyCellForConcurrentLookupIterator is a
slightly modified HashTable::FindEntry which follows the above rules.

Bug: v8:7790
Change-Id: Ic9a52da766afdfedce8efcbda92876845a17eed9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2959616
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75467}
2021-06-30 11:27:17 +00:00
Jakob Gruber
8f84d0bb8f [compiler] Make ScopeInfo never-ever serialized
Bug: v8:7790
Change-Id: Ie46c575a9f438f25e7db7c1758beaf7bf0e8b39f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2992885
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75466}
2021-06-30 11:17:55 +00:00
Victor Gomes
bd82f40a47 [baseline] Fallback to off-the-gc-heap when growing buffer
Bug: v8:11872
Change-Id: I16c6c0027b905215a789f8d47b19824b1c1f2491
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2992725
Commit-Queue: Victor Gomes <victorgomes@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75465}
2021-06-30 11:16:36 +00:00
Jakob Gruber
59b9aaf7db [compiler] Make SharedFunctionInfo never-ever serialized
Bug: v8:7790
Change-Id: I54eea2deaaa4823b13f8f66e13a1851f951c63c0
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2991241
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75464}
2021-06-30 11:13:35 +00:00
Jakob Gruber
c3bdc07623 [compiler] Make (Native)Context never-ever serialized
Bug: v8:7790
Change-Id: If558b6db7feed50bd0325a814bcab9e98ebd9493
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2991239
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75463}
2021-06-30 11:05:35 +00:00
Santiago Aboy Solanes
55b66b727b Revert "[compiler] Remove unused CodeDataContainerRef/Data classes"
This reverts commit 5fefa9702b.

Reason for revert: They are used via CodeT https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux64%20-%20external%20code%20space%20-%20debug%20-%20builder/124/overview

Original change's description:
> [compiler] Remove unused CodeDataContainerRef/Data classes
>
> Bug: v8:7790
> Change-Id: I072823ea40b0bd64aaf4a14882603cef29edcf22
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2992722
> Reviewed-by: Jakob Gruber <jgruber@chromium.org>
> Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#75456}

Bug: v8:7790
Change-Id: I2c7f65c8a772de9967ce5b3aa78d1f46c9c99866
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2996188
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75462}
2021-06-30 10:45:26 +00:00
Ross McIlroy
4ae31df132 [Turboprop] Enable support for dynamic map checks for inlining.
Adds support for a seperate dynamic map checks trampoline that takes the
feedback vector as an argument rather than reading it from the stack
frame, to enable it to work for inlined functions.  Plumbs the logic
through the compiler to select between these trampolines based on the
framestate.

BUG=v8:9684,chromium:1224367

Change-Id: Ibc7facdc78930aedec4a102693a926f64f6de7e2
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2992724
Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Mythri Alle <mythria@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75461}
2021-06-30 10:30:05 +00:00
Santiago Aboy Solanes
48c5d677a8 [compiler] Add Ref name to the "Ref creation failure" error message
When failing to construct a Ref, it helps debugging knowing which class
is the one we failed to create.

Bug: v8:7790
Change-Id: I22388920633fe2155c7b4fa712c5dead25a2f2d6
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2992726
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75460}
2021-06-30 09:44:15 +00:00
Clemens Backes
9ca10d840c [wasm] Make --wasm-trap-handler a d8-only flag
This flag only controls whether d8 installs the signal handler for wasm
traps. Hence it should be a d8-only flag, to avoid confusion if used in
other embeddings.
We just introduced --wasm-enforce-bounds-checks to do what you might
think --no-wasm-trap-handler would do.

R=ahaas@chromium.org

Bug: v8:11926
Change-Id: Ic1f33af36236a2981cf060f450bbfd02e51d9793
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2989130
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75459}
2021-06-30 09:32:55 +00:00
Milad Fa
51dd4ac133 [sparkplug] Include SharedFunctionInfo on all platforms
`SharedFunctionInfo` is defined under the added header and
not having it included causes this compilation error:

variable has incomplete type 'v8::internal::SharedFunctionInfo'

Change-Id: Ieb0e8f89043f91decdc93f8b3e3c5ed29c0043c6
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2989133
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75458}
2021-06-30 09:28:45 +00:00
Jakob Gruber
036e578314 [compiler] Make JSDataViewRef and JSBoundFunctionRef bg-serialized
... but keep/make subclass-specific methods do direct reads.

Bug: v8:7790
Change-Id: Ia4b9d207ce75cf28f6f0f33027ab05e27db49ce9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2959621
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75457}
2021-06-30 08:55:05 +00:00