Commit Graph

66663 Commits

Author SHA1 Message Date
Zhi An Ng
d5ba8283a2 [wasm-simd][ia32] Implement saturating rounding multiply high
Implementation is the same as x64.

Disassembly support for the new instruction, pmulhrsw, is already
supported due to the macro list.

Bug: v8:10971
Change-Id: I099c4f8c3da521006ef5e2b151626f25a5df1ed9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2620898
Reviewed-by: Bill Budge <bbudge@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72021}
2021-01-12 01:44:25 +00:00
Milad Fa
c5fc192efb PPC: [wasm-simd] Prototype extended pairwise addition
Bug: v8:11086
Change-Id: Ib896020b0865c0f87cabbde254bc8af36ce705d3
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2623007
Reviewed-by: Junliang Yan <junyan@redhat.com>
Commit-Queue: Milad Fa <mfarazma@redhat.com>
Cr-Commit-Position: refs/heads/master@{#72020}
2021-01-11 21:43:15 +00:00
Andrew Comminos
fbdcef31d4 [cpu-profiler] Optimize CodeMap implementation
Currently, the CodeMap utilizes double indirection into a deque for
entries in its map. Since we don't reuse CodeEntry objects, this doesn't
confer any benefits really -- avoid this step and save memory by
maintaining only a single mapping.

Bug: v8:11054
Change-Id: I2cbc188ff64dd2faa9c4c03d9892b4c8e5e68794
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2617746
Reviewed-by: Peter Marshall <petermarshall@chromium.org>
Commit-Queue: Andrew Comminos <acomminos@fb.com>
Cr-Commit-Position: refs/heads/master@{#72019}
2021-01-11 20:09:55 +00:00
Andreas Haas
48ead1a858 [wasm][liftoff] Delay use counter decrement of PeekToRegister
This CL fixes a bug in the code generation for I32AtomicCompareExchange
in Liftoff on ia32. The problem is the inconsistency that
LiftoffAssembler::PeekToRegister(...) introduces to the cache state.
PeekToRegister loads the value from the value stack into a register, but
does not pop the value off the stack. When the value was already stored
in a register, the use counter of that register gets decreased, even
though the value is still on the stack.

The problem arises when this register later gets reused, which is
necessary unfortunately on ia32. When SpillRegister is called for this
register, all stack values that are stored in this register get written
to memory. SpillRegister uses the use counter of the register to detect
when the register was spilled to all stack slots that were cached by
this register. However, as described above, the value stack and the use
counter are inconsistent at that moment, so SpillRegister finishes
early and does not spill the register to all stack values, and this
causes the bug later.

With this CL the decrement of the use counter gets delayed until when
the value actually gets popped off the stack.

R=clemensb@chromium.org

Bug: chromium:1145135
Change-Id: I07cb256a7e5135dbce41b246c120650635ad2758
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2602464
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72018}
2021-01-11 19:59:34 +00:00
Junliang Yan
d395b16d51 s390x: remove PrepareStackFrame support
Change-Id: Id077f3c85d0610d5da192a954c942208594f0377
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2622867
Reviewed-by: Milad Fa <mfarazma@redhat.com>
Commit-Queue: Junliang Yan <junyan@redhat.com>
Cr-Commit-Position: refs/heads/master@{#72017}
2021-01-11 19:29:44 +00:00
Clemens Backes
e8d8956be2 [wasm][memory64][turbofan] Fix bounds checks on 32-bit systems
In memory64, the index is a 64-bit value even on 32 bit. Thus the bounds
check needs to check explicitly that the high word is zero. The (pointer
sized) low word is then checked against the actual memory size.

R=manoskouk@chromium.org

Bug: v8:10949
Change-Id: I311664ccadaec44a6c88777a60b1a3b45b6c0642
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2617088
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Manos Koukoutos <manoskouk@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72016}
2021-01-11 18:45:12 +00:00
Caleb Raitto
9cc240fecd Add a watchlist for ieee754.(cc|h) changes.
We're making a copy of ieee754.(cc|h) in Chromium in
crrev.com/c/2582607. To ensure this copy stays in sync, we're adding a
watchlist for changes on the original ieee754.(cc|h).

Also, watch for changes in dependency of ieee754.(cc|h)
overflowing-math.h, and for changes in the licenses (LICENSE.fdlibm).

Bug: chromium:1145192
Change-Id: I5a967266c8b5c5c973afc48d9b453915f228a268
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2593649
Reviewed-by: Hannes Payer <hpayer@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Caleb Raitto <caraitto@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72015}
2021-01-11 18:10:19 +00:00
Clemens Backes
e48b5c6d59 [wasm][memory64] Fix Liftoff on 32-bit and add cctest
This adds a first execution test for memory64 in the form of a cctest.
Several things are still not working correctly, hence this test only
checks TurboFan on 64-bit systems, and Liftoff.

Bounds checks in Liftoff are fixed to work correctly on 32-bit.
Follow-up CLs will extend the test to also test TurboFan on 32-bit, the
interpreter, and traps. All of those features still have issues.

R=manoskouk@chromium.org

Bug: v8:10949
Change-Id: Ic7edcf3783421634fe2ec99eac6f257c557a29b5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2610968
Reviewed-by: Thibaud Michaud <thibaudm@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72014}
2021-01-11 16:41:59 +00:00
Camillo Bruni
d5d45c611a [tools] Migrate more tools to ES6 classes
For simplicity this CL includes a first crude conversion of
tickprocessor.mjs. Later CLs will introduce more ES6 syntax and clean
up more code.

Bug: v8:10667
Change-Id: Ief2ca623f5562114fb976a95d156e2ab3f961114
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2611252
Reviewed-by: Sathya Gunasekaran  <gsathya@chromium.org>
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72013}
2021-01-11 16:40:39 +00:00
Santiago Aboy Solanes
73875e9585 [compiler] Mark Name as kNeverSerialized
Bug: v8:7790
Change-Id: I44469e08131ad6a5f95a465cf2d461da0785221e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2616218
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72012}
2021-01-11 16:07:52 +00:00
Michael Achenbach
79c0db8feb [build] Remove obsolete gn flag
Bug: chromium:1164276
Change-Id: I5c257d407ed8c14037555cfcfd1550923bb79af2
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2621079
Auto-Submit: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Liviu Rau <liviurau@chromium.org>
Reviewed-by: Liviu Rau <liviurau@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72011}
2021-01-11 15:50:59 +00:00
Santiago Aboy Solanes
16e5dca30d [compiler] Mark String as kNeverSerialized
Bug: v8:7790
Change-Id: I2deb462c3467f7239d55b0f295feed1de5ca1c2f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2616198
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72010}
2021-01-11 15:24:49 +00:00
Benedikt Meurer
85fdbd910f [inspector][wasm] Unify locals, stack, and globals objects.
This change unifies the locals, stack, and globals objects exposed for
WebAssembly frames via the Scope view and via DebugEvaluate to use the
same underlying objects (implemented via interceptors). This also
means that for locals and globals we now consistently expose names
prefixed by a dollar symbol everywhere.

Drive-by-fix: Move the debug::ScopeIterator implementation for WasmFrame
into debug-wasm-support.cc, so WebAssembly scope details are all found
in one place instead of scattered around the code.

Drive-by-cleanup: Rename GetJSDebugProxy to GetWasmDebugProxy for
consistency. GetJSDebugProxy is a bit misleading, since the debug proxy
is not about JavaScript, but just exposed to JavaScript.

Doc: http://bit.ly/devtools-wasm-entities
Bug: chromium:1159307, chromium:1127914, chromium:1162229
Change-Id: If932bd06bbce72542823f63dac1bd976ab33937a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2615348
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Auto-Submit: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72009}
2021-01-11 14:50:40 +00:00
Camillo Bruni
0316b4fc12 [d8] Fix leak detection for DynamicImportData from Modules
1) Since we collect a stack trace for unhandled promises we might end up
invoking code right before the shutdown phase.
2) Any dynamic module import that happens in this phase will enqueue a
microtask job with a freshly allocated DynamicImportData object. It
only gets deleted when fully emptying the microtask queue.
3) Since we're exiting we might end up with a non-empty microtask queue.
4) LSAN detects this as a leak on shutdown.

To make LSAN happy again d8 now keeps track of DynamicImportData to
free them on destructing PerIsolateData.

Bug: chromium:1158223
Change-Id: I9bb21f71bffc75a0d5f4ffc5bf0727c7b4cbab88
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2599755
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Reviewed-by: Shu-yu Guo <syg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72008}
2021-01-11 13:49:19 +00:00
Benedikt Meurer
55865f7706 [inspector] Move Wasm related inspector functionality to src/debug.
Previously the implementation of the scope iterator objects and the
debug proxy lived in src/wasm, and they are now being moved to
src/debug, to better align with the JavaScript debugging interface,
which also lives in src/debug.

Bug: chromium:1162229, chromium:1071432
Change-Id: I7f89ced88a1231ad6a923be6e85a93f1876a2024
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2621084
Reviewed-by: Yang Guo <yangguo@chromium.org>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72007}
2021-01-11 12:59:59 +00:00
Santiago Aboy Solanes
b3d09001eb [objects] Remove uncached internal external string type
We shouldn't be creating those anymore since they are not thread-safe.

Bug: v8:7790
Change-Id: I4546d995fa32eb076c8dfe9d95301fad719c9e07
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2615347
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72006}
2021-01-11 12:57:09 +00:00
Santiago Aboy Solanes
bfab4808bc [compiler] Update StringRef::ToNumber for an external strings case
ToNumber was already returning base::Optional but it still needed to be
updated for the internal external uncached string case.

As a note, both IsExternal and IsSeqString do not need to be updated
since they only look at the map.

Bug: v8:7790
Change-Id: Icb5ba7f40982c01cada2a9c2b96b824edce70d44
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2615422
Reviewed-by: Georg Neis <neis@chromium.org>
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72005}
2021-01-11 12:44:19 +00:00
Dan Elphick
950eae9ade [include] Move V8_USE_PERFETTO into v8_header_features
V8_USE_PERFETTO appears in used in the include directory so should be in
v8_header_features rather than features. Moving it means that all users
of the v8 headers will automatically get the define without having to
define it themselves.

Bug: chromium:1006541
Change-Id: I7eb67787fb42499d29c98a76a19a4ad8c04f7aa7
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2621083
Commit-Queue: Dan Elphick <delphick@chromium.org>
Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
Auto-Submit: Dan Elphick <delphick@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72004}
2021-01-11 12:36:09 +00:00
Paolo Severini
794096f0d9 [compiler] Fix typo in IfValueParameters operator==
Change-Id: I2c1dfb7fbcf9a23d9e156dc3918fb88140885195
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2614721
Reviewed-by: Nico Hartmann <nicohartmann@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Paolo Severini <paolosev@microsoft.com>
Cr-Commit-Position: refs/heads/master@{#72003}
2021-01-11 11:15:14 +00:00
Sathya Gunasekaran
4db784674e [api] Refactor DefineAccessorPair
There's no need for the force_instantiate argument as it's not used by
any of the callers.

Bug: v8:11284
Change-Id: I133ac55b1da7b247b7d4b601372d2b2f3fffe36a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2608204
Commit-Queue: Sathya Gunasekaran  <gsathya@chromium.org>
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72002}
2021-01-11 11:14:09 +00:00
Maya Lekova
ce2ec03deb [regexp] Disable fallback to experimental engine by default
This CL disables the fallback to the experimental breadth-first regexp
engine which was enabled in 1e1f9ffc66.

Bug: chromium:1157044
Change-Id: I669b18eddc15ea49aa58192102e719ae7f0364fe
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2593250
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Michael Stanton <mvstanton@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Auto-Submit: Maya Lekova <mslekova@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72001}
2021-01-11 10:58:39 +00:00
Eric Leese
82bb7c93ba Add internal properties [[ArrayBufferData]] and [[ArrayBufferByteLength]]
New internal properties expose the byte length of an ArrayBuffer as well
as the pointer to the backing store, which will serve as a unique ID
to show when SharedArrayBuffers in different workers are the same buffer.

Bug: chromium:1163800
Change-Id: I49930765cb38f75ba5c6cee5a0a6827f4fec42d5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2618242
Commit-Queue: Eric Leese <leese@chromium.org>
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72000}
2021-01-11 10:51:29 +00:00
Mythri A
85b1d24b3f Evict deoptimized code on feedback vector after creating the closure
When creating a new closure, we check feedback vector for any optimized
code and install it on the newly created closure. We evict the optimized
code from the feedback vector if it is marked for deoptimization. We
used to evict the code before creating the new closure. However,
creating a new closure could cause allocation failures and hence trigger
a GC. This could mark optimized code on feedback vector for
deoptimization if any weak objects held by optimized code are GC'ed.

This cl delays the eviction unitl after the closure was created.

Bug: v8:1163184
Change-Id: I217279e4a51f75b87bb7ae5a00fd1cf57805e3c8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2613034
Commit-Queue: Mythri Alle <mythria@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#71999}
2021-01-11 10:26:09 +00:00
Manos Koukoutos
0979f724de [wasm][refactor] Tidy up errors in decoding
Changes:
- Add two additional PopTypeError overloads which take a C++/C-style
  string as argument over a ValueType.
- Change type errors in decoding to use PopTypeError. This improves
  consistency of error formatting as well as code readability.
- Improve some immediate argument errors.
- Adapt decoding unit tests.

Change-Id: Ifd54712965049a80692dbc3fde1ef489596e8662
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2614059
Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#71998}
2021-01-11 09:19:57 +00:00
Yang Guo
1a9d6c399e Add bmeurer to src/inspector/OWNERS
R=szuend@chromium.org

Change-Id: I8d7621265863232376c9cda782e847138e4ffdd7
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2609417
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Simon Zünd <szuend@chromium.org>
Auto-Submit: Yang Guo <yangguo@chromium.org>
Commit-Queue: Simon Zünd <szuend@chromium.org>
Cr-Commit-Position: refs/heads/master@{#71997}
2021-01-11 06:53:17 +00:00
Zhi An Ng
2aa3e64f54 [wasm-simd][liftoff][ia32] Move v128.select into macro-assembler
This allows us to reuse this optimized code sequence in Liftoff.

This is similar to the x64 implementation, except that the
macro-assembler function takes an additional scratch register.

Change-Id: Ieaa5899cd1be65abee1c6e0c0908a357777afcd9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2610510
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Bill Budge <bbudge@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#71996}
2021-01-11 04:21:47 +00:00
v8-ci-autoroll-builder
aef1be398f Update V8 DEPS.
Rolling v8/build: 06eb186..d1a7463

TBR=machenbach@chromium.org,tmrts@chromium.org,v8-waterfall-sheriff@grotations.appspotmail.com

Change-Id: I10c46e6693d0c345d46739d54ecfbfd9d0dbda83
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2620594
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@{#71995}
2021-01-11 03:43:08 +00:00
v8-ci-autoroll-builder
e070505f5c Update V8 DEPS.
Rolling v8/build: 9bc4494..06eb186

Rolling v8/third_party/aemu-linux-x64: luM2HIHgfBKxr1C7UPo8RdQPAvyLNd74T9rYfhWFOC8C..xAHa1IXmKteChkPvba9ezjSnKL7IyDePQRzWVUEAx9UC

Rolling v8/third_party/depot_tools: 0e4e5ae..c1aa4ec

TBR=machenbach@chromium.org,tmrts@chromium.org,v8-waterfall-sheriff@grotations.appspotmail.com

Change-Id: I9d36f250bc63e1d0600ff39d0fd07299cf33851d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2619965
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@{#71994}
2021-01-10 03:31:25 +00:00
Manos Koukoutos
1085b4563c [wasm-gc][bug] Fix interaction between 'let' and Goto
Invoking Goto in graph-builder-interface from inside a 'let' can cause
the number of locals between source and target ssa environment to be
different. This CL addresses this bug and adds a few unit tests.
Unfortunately, after this change we have to resort to always using
copy-constructors for SsaEnv, which might cause slowdown in decoding.

Bug: v8:9495
Change-Id: Idf5ace6c7563eff9d774d402f3a81e77959556ef
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2614062
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#71993}
2021-01-09 23:29:15 +00:00
Liu Yu
b783ec0fe9 [mips][wasm-simd][liftoff] Prototype load lane
This CL just allows the compilation to pass.

Port 673be63e2b

Change-Id: I5d66ba6b353f6f94d22e506ff42ce81859ec876d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2619004
Auto-Submit: Liu yu <liuyu@loongson.cn>
Reviewed-by: Zhao Jiazhong <zhaojiazhong-hf@loongson.cn>
Commit-Queue: Zhao Jiazhong <zhaojiazhong-hf@loongson.cn>
Cr-Commit-Position: refs/heads/master@{#71992}
2021-01-09 09:30:05 +00:00
Milad Fa
ff0b78bbfd S390: [wasm-simd] Prototype extended pairwise addition
Bug: v8:11086
Change-Id: Ic59e270282b5b7f3d2f8e8b46586964c69e4447a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2618289
Reviewed-by: Junliang Yan <junyan@redhat.com>
Commit-Queue: Milad Fa <mfarazma@redhat.com>
Cr-Commit-Position: refs/heads/master@{#71991}
2021-01-09 07:55:10 +00:00
v8-ci-autoroll-builder
4d90b88285 Update V8 DEPS.
Rolling v8/build: 3480342..9bc4494

Rolling v8/third_party/aemu-linux-x64: e-bgBYXeOkMw5xrqjCgQDp16bMPZeKKmilHzC-t2-1QC..luM2HIHgfBKxr1C7UPo8RdQPAvyLNd74T9rYfhWFOC8C

Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/d9d7213..e174329

Rolling v8/third_party/depot_tools: 4c392af..0e4e5ae

TBR=machenbach@chromium.org,tmrts@chromium.org,v8-waterfall-sheriff@grotations.appspotmail.com

Change-Id: I68df6308e99fc5495765cfcf56a414b81217f1e7
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2619278
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@{#71990}
2021-01-09 07:54:05 +00:00
Sathya Gunasekaran
61b2335a9e Revert "Disable bytecode flushing once we toggle coverage mode."
This reverts commit 8aa6b15fa0.

Reason for revert: broke TSAN https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux64%20TSAN%20-%20stress-incremental-marking/1497/overview

Original change's description:
> Disable bytecode flushing once we toggle coverage mode.
>
> Changing coverage mode generated different bytecode in some cases.
> Hence it is not safe to flush bytecode once we toggle coverage mode.
>
> Bug: chromium:1147917
> Change-Id: I9e640aeaec664d3d4a4aaedf809c568e9ad924fc
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2615020
> Commit-Queue: Mythri Alle <mythria@chromium.org>
> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#71985}

TBR=rmcilroy@chromium.org,mythria@chromium.org

Change-Id: Id4c95da337e291437b7856e2fe7004e1e6405515
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:1147917
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2619402
Reviewed-by: Sathya Gunasekaran  <gsathya@chromium.org>
Commit-Queue: Sathya Gunasekaran  <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#71989}
2021-01-09 06:59:07 +00:00
Georgia Kouveli
b3330e9502 [arm64] Use static_cast instead of reinterpret_cast in CFI code
In a couple of places we cast between uintptr_t and uint64_t with a
reinterpret_cast. While this is correct when these types are aliased
to the same type, if they are defined to be different integral types
(while still of the same size), reinterpet_cast won't work.

Change-Id: I6e935c6c263d8df16f88659ac285faeb5e073add
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2614678
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com>
Cr-Commit-Position: refs/heads/master@{#71988}
2021-01-08 18:37:38 +00:00
Seth Brenith
0d30fac21c [interpreter] Include Star lookahead for more bytecodes
I made some temporary changes in BytecodeArrayWriter to log counts of
how often each pair of bytecodes is adjacent. In data I collected on a
Facebook page with those changes enabled, I noticed that the following
bytecodes were commonly followed by Star, but do not appear in
IsStarLookahead.

LdaImmutableCurrentContextSlot:
  4.4% of all instructions, 66% chance to be followed by Star
CreateClosure:
  3.9% of all instructions, 57% chance to be followed by Star
LdaImmutableContextSlot:
  1.7% of all instructions, 95% chance to be followed by Star
CreateObjectLiteral:
  1.4% of all instructions, 92% chance to be followed by Star
CreateArrayLiteral:
  1.4% of all instructions, 99% chance to be followed by Star
ThrowReferenceErrorIfHole:
  0.7% of all instructions, 100% chance to be followed by Star
GetTemplateObject:
  0.6% of all instructions, 100% chance to be followed by Star
CreateEmptyArrayLiteral:
  0.4% of all instructions, 87% chance to be followed by Star
CreateEmptyObjectLiteral:
  0.2% of all instructions, 79% chance to be followed by Star

I cross-referenced this list with data from google.com and youtube.com
(the top two sites according to Alexa), and found that CreateClosure and
CreateEmpty*Literal are not likely followed by Star on those sites.
Without those three, I suggest that the following bytecode handlers
would likely benefit from Star lookahead:

LdaImmutableCurrentContextSlot
LdaImmutableContextSlot
CreateObjectLiteral
CreateArrayLiteral
ThrowReferenceErrorIfHole
GetTemplateObject

I also ran Octane with --noopt and got the following results.

Name               Median change (95% CI)    U test result
-----------------  ------------------------  -------------------
Richards           +1.02% to +3.28%          improved  p=1.8e-05
DeltaBlue          -1.47% to +0.12%          regressed p=0.05
Crypto             -1.11% to +0.93%          inconclusive
RayTrace           -1.10% to +0.48%          inconclusive
EarleyBoyer        -0.25% to +1.29%          inconclusive
RegExp             -1.46% to +0.08%          inconclusive
Splay              -1.10% to +0.03%          inconclusive
SplayLatency       +0.13% to +0.92%          improved  p=5.8e-05
NavierStokes       -0.22% to +1.24%          inconclusive
PdfJS              -0.69% to +1.04%          inconclusive
Mandreel           -0.66% to +0.66%          inconclusive
MandreelLatency    +0.32% to +1.77%          improved  p=0.00024
Gameboy            -1.13% to +0.38%          inconclusive
CodeLoad           -0.27% to +0.43%          inconclusive
Box2D              -0.53% to +0.82%          inconclusive
zlib               -0.19% to +0.19%          inconclusive
Typescript         -0.23% to +0.59%          inconclusive
Score (version 9)  -0.18% to +0.68%          inconclusive

I'm somewhat puzzled by the DeltaBlue regression, since DeltaBlue
agrees that all of the selected bytecodes are likely to precede Star,
but overall I think this change is more benefit than harm.

Change-Id: Ib9b4033f3cda273e99c9f0252d0055e203921916
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2615946
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
Cr-Commit-Position: refs/heads/master@{#71987}
2021-01-08 17:46:08 +00:00
Milad Fa
e4675193cf PPC/s390: [wasm-simd][liftoff][x64] Prototype load lane
Port 5af793986b

Original Commit Message:

    Prototype load lane instructions on Liftoff, only for x64.

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

Change-Id: If9429791139d08a3dd7548220b4eb28e99d6fc7e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2618241
Reviewed-by: Junliang Yan <junyan@redhat.com>
Commit-Queue: Milad Fa <mfarazma@redhat.com>
Cr-Commit-Position: refs/heads/master@{#71986}
2021-01-08 17:36:18 +00:00
Mythri A
8aa6b15fa0 Disable bytecode flushing once we toggle coverage mode.
Changing coverage mode generated different bytecode in some cases.
Hence it is not safe to flush bytecode once we toggle coverage mode.

Bug: chromium:1147917
Change-Id: I9e640aeaec664d3d4a4aaedf809c568e9ad924fc
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2615020
Commit-Queue: Mythri Alle <mythria@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#71985}
2021-01-08 17:31:18 +00:00
Jakob Kummerow
432c0a78e9 Reland "[wasm-gc] Liftoff support part 5: i31"
This is a reland of a3ce2f6da2
(No changes; was reverted because a dependency was reverted.)

Original change's description:
> [wasm-gc] Liftoff support part 5: i31
>
> This implements support for i31.get_s and i31.get_u.
>
> Bug: v8:7748
> Change-Id: Icbfddbc2ff46b4eb6bf3edf7b3a794f9797361d4
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2595309
> Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
> Reviewed-by: Clemens Backes <clemensb@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#71808}

Bug: v8:7748
Change-Id: Id8e66cab285d2a36fcd712b92a522e83dea93193
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2617089
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#71984}
2021-01-08 16:49:07 +00:00
Junliang Yan
2651820e68 s390x: [liftoff] implement stack frame handling
Change-Id: I68ef1a97ac857106e014d561be3d7e845ec9fbdc
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2618280
Reviewed-by: Milad Fa <mfarazma@redhat.com>
Commit-Queue: Junliang Yan <junyan@redhat.com>
Cr-Commit-Position: refs/heads/master@{#71983}
2021-01-08 16:48:03 +00:00
Santiago Aboy Solanes
740d94be0f [compiler] Make StringRef::GetFirstChar() return an optional value
Follow-up that continues to make StringRefs's methods return optional
values.

Bug: v8:7790
Change-Id: I34f907810747216b047a3da8db035cf4f62728c3
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2615162
Reviewed-by: Georg Neis <neis@chromium.org>
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#71982}
2021-01-08 16:03:02 +00:00
Benedikt Meurer
c27c167c44 [inspector] Implement Debug Proxy API via Interceptors.
Previously the Debug Proxy API that's exposed on Wasm frames by
Runtime.evaluateOnCallFrame() was implemented via actual JSProxy
instances. That means that all entities such as "memories", "tables",
"stack", "globals", etc. were JSProxy instances with "get" and "has"
traps. But that has a couple of down-sides:

1. In DevTools front-end, the proxies are shown as JSProxy, which is not
   very useful to developers, since they cannot interact with them nor
   can they inspect their contents. And the object preview also only
   shows "Proxy {}" for them.
2. The performance doesn't scale well, which becomes a painful
   bottleneck with larger Wasm modules that contain hundreds of
   thousands of functions or globals.
3. We cannot use the JSProxy instances in the Scope view (for the
   reasons outlined in 1.) and hence we have different logic to provide
   Scope values than values in the rest of DevTools, which led to subtle
   but annoying bugs and inconsistencies.

This also changes the "locals" implementation by querying the values
ahead of time, similar to the object exposed to the Scope view, instead
of on-demand, since the "locals" object might survive the current
debugger pause and peeking into the stack afterwards would read invalid
memory (and might even be a security issue). For being able to change
locals we need to look into a similar solution as what we have for
JavaScript locals already. The expression stack already works this way.

For performance reasons (especially scaling to huge, realistic Wasm
modules), we cache the per-instance proxies ("functions", "memories",
"tables" and "globals") on the WasmInstanceObject and reuse them (which
is safe since they have a `null` prototype and are non-extensible), and
we also cache the proxy maps (with the interceptors) on the
JSGlobalObject per native context.

Doc: http://bit.ly/devtools-wasm-entities
Bug: chromium:1127914, chromium:1159402, chromium:1071432, chromium:1164241
Change-Id: I6191035fdfd887835ae533fcdaabb5bbc8e661ae
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2606058
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Auto-Submit: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#71981}
2021-01-08 15:46:08 +00:00
Zhi An Ng
5af793986b [wasm-simd][liftoff][x64] Prototype load lane
Prototype load lane instructions on Liftoff, only for x64.

Bug: v8:10975
Change-Id: Ifdf58f08b65762d592e99de91c7c622d2a964a9a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2612335
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Bill Budge <bbudge@chromium.org>
Cr-Commit-Position: refs/heads/master@{#71980}
2021-01-08 15:45:03 +00:00
Michael Lippautz
9b057ef1f0 build: Make cppgc_base a public dependency
Similar to V8, we provide the include/ headers through a "base" target.

Without this change, `gn check` complains about including cppgc headers
in Blink.

Bug: chromium:1056170
Change-Id: I09ad943cdfedae8c83ab7f957efba796637b8d48
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2617087
Reviewed-by: Omer Katz <omerkatz@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#71979}
2021-01-08 15:38:22 +00:00
Santiago Aboy Solanes
37c3e05e81 [test] Update MakeExternal tests
They weren't initializing the VM at the start of the test. Also updated
the test description.

Bug: v8:7790
Change-Id: I7b9df9e3aebb43fc526e16ec260aa071c0fdeb92
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2615019
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/master@{#71978}
2021-01-08 15:16:42 +00:00
Santiago Aboy Solanes
cf49d0d84c [heap] Don't internalize external uncached Strings
In order to avoid internal external uncached Strings, we can copy the
String at the moment of internalizing if it is an external & uncached
String.

Bug: v8:7790
Change-Id: Ie7ed287c105a127b8b4c867aab1a808265a922b7
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2613029
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/master@{#71977}
2021-01-08 15:14:02 +00:00
Zhi An Ng
8c698702ce [wasm-simd] Fix loading fp pair registers
We were incorrectly clearing the high reg from the list of regs to load.
The intention was to prevent double (and incorrect) loading - loading
128 bits from the low fp and the loading 128 bits from the high fp.
But this violates the assumption that the two regs in a pair would be
set or unset at the same time.

The fix here is to introduce a new enum for register loads, a nop, which
does nothing. The high fp of the fp pair will be tied to this nop, so as
we iterate down the reglist, we load 128 bits using the low fp, then
don't load anything for the high fp.

Bug: chromium:1161654
Change-Id: If2ea79132b78623e5990237c60cf0883d9a8223f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2617380
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#71976}
2021-01-08 15:03:02 +00:00
Santiago Aboy Solanes
d727c9b489 [compiler] Make StringRef::length() return an optional value
We are planning on moving String to kNeverSerialized. For this, we are
modifying its methods to bail out if they encounter a NeverSerialized
non-internalized String.

Bug: v8:7790
Change-Id: Ia83c1385e53707ddec374e1730963c29b928a08c
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2615420
Reviewed-by: Georg Neis <neis@chromium.org>
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#71975}
2021-01-08 13:51:34 +00:00
Thibaud Michaud
d4ecac6bc3 [wasm][eh] Allow delegating to the caller
Delegating to the current control depth is valid and rethrows the
exception to the caller. See
https://github.com/WebAssembly/exception-handling/pull/143.

R=clemensb@chromium.org
CC=​aheejin@chromium.org

Bug: v8:8091
Change-Id: I6f14663751736ec6de29eefebfccdf5eb9e955e2
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2617081
Commit-Queue: Thibaud Michaud <thibaudm@chromium.org>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#71974}
2021-01-08 13:48:42 +00:00
Leszek Swirski
079b50e5ec [test] Mark parallel-compile-tasks incompatible with future
This fixes failures on bots running with --extra-flags=--future

Change-Id: I9594f44db9cc749d02151b695300b5c888f2c99b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2617085
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
Auto-Submit: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#71973}
2021-01-08 13:47:22 +00:00
Georg Neis
c2537ebd0e [compiler] Update test expectation
Now that the underlying bug is fixed, we can expect the test to always
pass.

Also simplify the test a tiny bit and skip it on debug builds because
it's slow.

Bug: chromium:1161357
Change-Id: I2ce5e064b4f707f4bd680f04df95d5a342bec1b0
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2616220
Reviewed-by: Santiago Aboy Solanes <solanes@chromium.org>
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Auto-Submit: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#71972}
2021-01-08 12:54:51 +00:00