Commit Graph

63056 Commits

Author SHA1 Message Date
Jakob Kummerow
04ce88eae5 [wasm-gc] Implement rtt.sub
RTTs are internally represented as Maps. To store supertype information,
this patch introduces a WasmTypeInfo object, which is installed on Wasm
objects' Maps and points at both the off-heap type information and the
parent RTT.
In this patch, rtt.sub always creates a fresh RTT. The canonicalization
that the proposal requires will be implemented later.

Bug: v8:7748
Change-Id: I8286dd11f520966155cd95c2bd844ec34fccd131
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2260566
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68564}
2020-06-26 16:31:02 +00:00
Milad Farazmand
5c58419a4f AIX: ignore luci-go on the OS because it's missing
Change-Id: I663da3357f6e88848048ec42832fe7017d563ac4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2264952
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Milad Farazmand <miladfar@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#68563}
2020-06-26 16:15:22 +00:00
Michael Achenbach
484357722b [test] Skip flaky test
TBR=mslekova@chromium.org

No-Try: true
Bug: v8:10647
Change-Id: I177abffb3286703df110f1875c70ac1120d07595
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2270541
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68562}
2020-06-26 15:11:42 +00:00
Michael Achenbach
f3abba13f6 [test] Work around Android linker warning in message tests
Bug: chromium:1099623
Change-Id: Icbb6b0ebcc10628fafbef57cc6d1af7861e408f4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2270170
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Reviewed-by: Tamer Tas <tmrts@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68561}
2020-06-26 15:05:32 +00:00
Benedikt Meurer
7842920a22 [inspector] Set limit for Wasm wire byte transfer via CDP.
The `Debugger.getScriptSource()` and `Debugger.getWasmBytecode()`
methods in the CDP return Wasm wire bytes as protocol::Binary, which is
send as Base64-encoded JSON string in the communication to the DevTools
front-end, and hence leads to either crashing the renderer that is being
debugged or the renderer that's running the front-end if we allow
arbitrarily huge Wasm byte sequences here. This CL introduces a limit,
based on the maximum allowed string length, to avoid the crash and
instead signal a proper error to the DevTools front-end.

Bug: chromium:1099680
Change-Id: I356d617301d17a4012f7f845773cf14e6ad1e4a7
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2270174
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Commit-Queue: Yang Guo <yangguo@chromium.org>
Auto-Submit: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68560}
2020-06-26 14:36:32 +00:00
Manos Koukoutos
55ddbaa054 [wasm][refactor] Rework immediate-argument abstractions
Motivation:
The immediate-argument classes defined in function-body-decoder.h were
often adding an offset to the provided pc. This was inconsistent,
bug-prone, and counterintuitive. This CL imposes that all immediates
are passed as pc the start of the immediate argument they are parsing.
Some other smaller inconsistencies are fixed as well.

Changes:

src/wasm/:
- Enforce that all Immediates are passed the pc at the start of the
  argument they are parsing. Adapt all call sites.
- Remove unneeded offset arguments from two SIMD related immediates.
- Add a pc argument to all Validate functions for immediates instead
  of using the Decoder's current pc.
- Remove the (unused) pc argument from all Complete functions for
  immediates.
- Introduce Validate() for BranchOnExceptionImmediate.
- In WasmDecoder::Decode(), make sure len is updated before breaking out
  of the loop in case of a Validate() failure.
- Change the default prefix_len of DecodeLoadMem/DecodeStoreMem to 1.

wasm-interpreter.cc:
- Change the default prefix_len of ExecuteLoad/Store to 1.
- Adapt offsets in calls to Immediates.
- Remove redundant opcode_length argument from ExecuteSimdOp, use len
  in its place.

function-body-decoder-unittest.cc
- Adapt offsets in calls to Immediates.
- Introduce and use EXPECT_OK, as is done in other tests.

Change-Id: I534606c0e238af309804d4a7c8cec75b1e49c6ad
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2267381
Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68559}
2020-06-26 13:29:42 +00:00
Andreas Haas
1f80b36c4b [wasm][ia32][liftoff] Implement remaining 32-bit atomic binops
R=clemensb@chromium.org

Bug: v8:10108
Change-Id: I44c03a7c39cca8f35e4221c659f918e109d85353
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2270166
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68558}
2020-06-26 13:22:52 +00:00
Clemens Backes
a06b4603e1 [wasm] Speed up ValueType::element_size_bytes
It turns out that Liftoff often needs to know the size of a value in
bytes. Currently we are loading the size_log_2 from an array and then
performing a shift by that amount. We can slightly speed this up by just
loading the correct value directly.

Drive-by: Use {int8_t} for the internal array, since all values will
easily fit in that range.

R=thibaudm@chromium.org

Bug: v8:10576
Change-Id: I1b832ba404ff9913e2272d332f312b371b6ce3d4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2267302
Reviewed-by: Thibaud Michaud <thibaudm@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68557}
2020-06-26 12:00:44 +00:00
Michael Achenbach
07e710208b [test] Work around Android linker warning in test output
Bug: chromium:1099623
Change-Id: I88ab0cec0ba505dcfc77d2f5eb271321633ca3be
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2270165
Reviewed-by: Tamer Tas <tmrts@chromium.org>
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68556}
2020-06-26 11:52:12 +00:00
Santiago Aboy Solanes
f954b72d27 [compiler] Perform further synchronization on acquiring prototype's Map
We would like that to make sure every time we read map's prototype's map
we read the same one.

CL created after the discussion on
https://chromium-review.googlesource.com/c/v8/v8/+/2210233.

Bug: v8:7790
Change-Id: I4b6ffe733cf0b011b1bd1a3620ae8f1f35fa5c87
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2264101
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68555}
2020-06-26 09:59:12 +00:00
Clemens Backes
70547c81a0 [liftoff] Speed up local.get implementation
Each single branch in the switch was push a new value on the operand
stack, but the code for that was not shared.
This CL refactors this such that we only allocate once, and then modify
the new slot as needed.
This makes the generated code a lot smaller (771 bytes instead of 1052
bytes on x64), and hopefully also faster.

R=thibaudm@chromium.org

Bug: v8:10576
Change-Id: I65cd5b7d91f881b4c236414d39f1dfd54e200b97
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2266533
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Thibaud Michaud <thibaudm@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68554}
2020-06-26 09:01:12 +00:00
Ng Zhi An
6b24d5d7c2 [wasm-simd][arm] Prototype f64x2.ceil
Prototype f64x2.ceil on ARM for both ARM v7 and ARM v8. ARM v8 has
support for vrintp, and for ARM v7 we fallback to runtime.

Since ARM v8 uses vrintp, which is the same instruction used for
Float64RoundUp (scalar), wasm-compiler reuses the Float64RoundUp check.

Bug: v8:10553
Change-Id: I5841c6a06f260debe8ae90d331bdcc2a0fa3278c
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2258813
Reviewed-by: Deepti Gandluri <gdeepti@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68553}
2020-06-25 18:38:31 +00:00
Andreas Haas
1e4282db0d Reland "[wasm] Re-exported globals preserve their identity"
This is a reland of f7a1932ef9

There was a wpt test in Chrome that expected the incorrect behavior.
I disable the test in https://crrev.com/c/2264418 so that we can land
the fix here.

Original change's description:
> [wasm] Re-exported globals preserve their identity
>
> V8 fails a recently added spec test that when an imported global get
> re-exported, it should preserve its identity. This CL fixes the behavior
> in V8.
>
> Drive-by change: fix the object printer of globals: a global which
> stores a reference type only has a tagged buffer, a global which stores
> a value type only has an untagged buffer.
>
> R=clemensb@chromium.org
>
> Bug: v8:10556
> Change-Id: I949d147fe4395610cfec6cf60082e1faecb23036
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2235702
> Commit-Queue: Andreas Haas <ahaas@chromium.org>
> Reviewed-by: Clemens Backes <clemensb@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#68513}

Bug: v8:10556
Change-Id: I8e1b08fc9f72dde166cba167e6e320e714796769
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2264097
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68552}
2020-06-25 18:12:41 +00:00
Thibaud Michaud
9c378dada2 [regalloc] Reuse existing method to find intersection
The current code for AssignRegisterOnReload starts the search at
the first interval instead of relying on the cached {current_interval_},
which seems to be a main cause for slow compile time in the linked
issue's test case. Moreover, it does not take into account live range
holes of the current range. This change uses FirstIntersection instead
which already handles both issues.
Since inactive ranges are sorted by their next start, we can also break
early from the loop.

R=sigurds@chromium.org

Bug: v8:10533
Change-Id: I454df95376011462ce22e850a1c143d523b68538
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2263152
Commit-Queue: Thibaud Michaud <thibaudm@chromium.org>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68551}
2020-06-25 17:46:05 +00:00
Ng Zhi An
91bf68ae70 [wasm-simd][arm] Prototype i32x4.dot_i16x8_s
This implements I32x4DotI16x8S for arm.

Bug: v8:10583
Change-Id: I4541f4f5bc7daba03c6ab2040589893c8ef571bc
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2230787
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Deepti Gandluri <gdeepti@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68550}
2020-06-25 17:03:25 +00:00
Ng Zhi An
1ae2636293 Enable wasm_simd_post_mvp flag in fuzzer
Bitmask requires wasm_simd_post_mvp because it was merged into SIMD
proposal after 84 cut, which Origin Trial starts.

For now, bitmask is the only instruction that requires this flag to be
set, and no other post mvp instructions are included in the fuzzer.

We should revert this change (and also move bitmask out of the flag)
after this OT is over.

Bug: chromium:1098666
Change-Id: I7d45c805aaa18bfc1a5180e70b912d5f17d4a31d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2264628
Reviewed-by: Deepti Gandluri <gdeepti@chromium.org>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68549}
2020-06-25 16:42:16 +00:00
Clemens Backes
7451f97bd5 [wasm] Skip test that times out on gc-stress
Similar tests are already skipped on tsan, using the same bug to also
skip this test. Note that it's a slightly different test, but based on
the same "worker-ping-test.js".

TBR=ahaas@chromium.org

Bug: v8:9506
Change-Id: Ie8d0aab5b1fd3ae6c77a65fa04ac4772b2836a1c
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2267301
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68548}
2020-06-25 16:11:45 +00:00
Clemens Backes
490971092c [wasm] Experimentally allow modules >1GB
Add an experimental flag to allow modules up to a size slightly below
2GB, to make sure that we don't run into integer overflows.
Modules this large are not tested at all currently, hence the explicit
"experimental" in the flag name.

Drive-by: Fix one comparison to use ">" instead of ">=".

R=ahaas@chromium.org
CC=​bmeurer@chromium.org

Bug: v8:10642
Change-Id: I91cfc290c262b9b81750e3c8af5358c1cd2572b1
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2266535
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68547}
2020-06-25 16:05:56 +00:00
Milad Farazmand
33376bdf1d PPC/s390: [liftoff][mv] Remove multi-value overhead
Port 2332ebd86a

Original Commit Message:

    - Add a separate function to load return slots, instead of encoding this
    in the offset,
    - Add fast path for single return.

R=thibaudm@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=
LOG=N

Change-Id: Ia302772478b58fd25ee53a18e6ee03ac4b2ea9f5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2267477
Reviewed-by: Thibaud Michaud <thibaudm@chromium.org>
Commit-Queue: Milad Farazmand <miladfar@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#68546}
2020-06-25 15:59:56 +00:00
Ulan Degenbaev
4bbf78f9b2 Add a flag for flushing icache for embedded builtins
It will be used in a Finch experiment to evaluate if icache flushing
helps with crashes on certain CPUs.

Bug: chromium:889460
Change-Id: I1218ce93db001833e29fdeca8fde3e863e26dfdd
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2267297
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68545}
2020-06-25 15:53:55 +00:00
Clemens Backes
15e54593de [wasm] Remove type from LocalIndexImmediate
The immediate itself is just the index, and the local type can easily be
looked up in every environment where the immediate is used. Hence remove
that field.

R=thibaudm@chromium.org

Bug: v8:10576
Change-Id: If3176fa4880a75bdc475ec61dea60e08001220f5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2266532
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Thibaud Michaud <thibaudm@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68544}
2020-06-25 15:42:56 +00:00
Alex Turner
76e9ddb8f5 Speed up StackTraceFrame::GetScriptId()
This retrieves script name directly from StackFrameBase, bypassing
building of StackFrameInfo if one hasn't already been initialized,
thus avoiding computation of expensive properties that are not
required. This matches current behavior of GetScriptNameOrSourceURL()
and is a workaround until a dedicated API is available.

Bug: chromium:1098530
Change-Id: I181dc7feeebaf2f45758bbd29be24ab036e44b19
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2261736
Reviewed-by: Simon Zünd <szuend@chromium.org>
Commit-Queue: Alex Turner <alexmt@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68543}
2020-06-25 15:08:35 +00:00
Andreas Haas
0895c903ce [wasm][tests] Remove BigInt proposal tests
The BigInt proposal got to stage 4 and integrated into the main spec.
Therefore the proposal tests are unnecessary and will be outdated soon.

R=thibaudm@chromium.org

Change-Id: I149de015f098a89333dd907bf5a4d18a36086c2b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2264095
Reviewed-by: Thibaud Michaud <thibaudm@chromium.org>
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68542}
2020-06-25 14:43:05 +00:00
Clemens Backes
c8b8475424 [wasm] Remove indirection for accessing local types
Local type information was stored in the {WasmFullDecoder}, and a
pointer to that vector was handed to {WasmDecoder}. Since
{WasmFullDecoder} inherits from {WasmDecoder}, we can just move the
vector to the {WasmDecoder} class, and save an indirection and an
unnecessary nullptr check.

Drive-by: Rename {GetLocalType} to {local_type}, since it's a simple
accessor.
Drive-by 2: Move fields of {WasmDecoder} to the end of the class, as
mandated in the style guide.
Drive-by 3: Rename some locals in the 'let' decoding to make the meaning
more clear.

R=thibaudm@chromium.org

Bug: v8:10576
Change-Id: I6ab9831f0c1955e47562e84c5fbf15807439b024
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2264360
Reviewed-by: Thibaud Michaud <thibaudm@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68541}
2020-06-25 14:15:25 +00:00
Marja Hölttä
f70c2d62fa [d8] Changes needed for testing Atomics.waitasync
Design doc:
https://docs.google.com/document/d/1BU-Zyco8YPP2Ra0Y3eVZ_BllzpUkJaJhmVmmnGD44Yc/edit#heading=h.mmdxlkic7kqd

Bug: v8:10239
Change-Id: Ie1b953c8242e32a0447440aaae7c2ed377c97511
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2259933
Commit-Queue: Marja Hölttä <marja@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Reviewed-by: Shu-yu Guo <syg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68540}
2020-06-25 14:13:06 +00:00
Lutz Vahl
bad4049ceb Changed version number to 8.6
Change-Id: Ic302912d11ada06a1ce13668df85b9e582e651d5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2266737
Reviewed-by: Lutz Vahl <vahl@chromium.org>
Reviewed-by: Michael Hablich <hablich@chromium.org>
Commit-Queue: Lutz Vahl <vahl@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68539}
2020-06-25 14:10:56 +00:00
Jakob Gruber
5d417c0d49 [nci] Add feedback input to more nodes kinds
... and extend JS node wrapper functionality.

Node wrappers now have accessors for value inputs and
context/control/effect/frame-state inputs. Accessors are typed,
although types aren't very meaningful so far (in current examples we
only distinguish between Object/HeapObject).

The following node kinds now take an additional feedback vector input,
and use the new node wrapper functionality above:

- CloneObject
- CreateLiteralArray
- CreateLiteralObject
- CreateLiteralRegExp
- GetIterator
- GetTemplateObject
- HasProperty
- LoadProperty
- StoreProperty

Bug: v8:8888
Change-Id: I1eb33c078b11725a72ec983bbaa848b9a3c7b0d9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2259936
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68538}
2020-06-25 13:07:05 +00:00
Maya Lekova
bc8efc9a2c Revert "Update V8 DEPS."
This reverts commit 2b6b85abd9.

Reason for revert: Broken Android builder https://cr-buildbucket.appspot.com/build/8876523558361397488

Original change's description:
> Update V8 DEPS.
> 
> Rolling v8/build: 2dc7c7a..876a780
> 
> Rolling v8/third_party/aemu-linux-x64: UoYLOT0X6577j70eB9nPqYQs9Z3Nh5lA4I-pRtTchO0C..YFi4RbbToiNVSl0eKxjhhhAElSEXx2Y9i-5Q4eBGkUwC
> 
> Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/95c1f42..761dfad
> 
> Rolling v8/third_party/depot_tools: 35c6274..87c8b91
> 
> Rolling v8/third_party/zlib: 02daed1..93be846
> 
> Rolling v8/tools/clang: 42b285f..62d4c43
> 
> TBR=machenbach@chromium.org,tmrts@chromium.org,v8-waterfall-sheriff@grotations.appspotmail.com
> 
> Change-Id: Ia948991c7735b13585cf12a7ccfb0e372ab86320
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2266393
> 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@{#68536}

TBR=machenbach@chromium.org,v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com,tmrts@chromium.org,v8-waterfall-sheriff@grotations.appspotmail.com

Change-Id: Ieea4f4fca222c053014bea68c4020ee27fa4a0d2
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2264104
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Commit-Queue: Maya Lekova <mslekova@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68537}
2020-06-25 11:35:37 +00:00
v8-ci-autoroll-builder
2b6b85abd9 Update V8 DEPS.
Rolling v8/build: 2dc7c7a..876a780

Rolling v8/third_party/aemu-linux-x64: UoYLOT0X6577j70eB9nPqYQs9Z3Nh5lA4I-pRtTchO0C..YFi4RbbToiNVSl0eKxjhhhAElSEXx2Y9i-5Q4eBGkUwC

Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/95c1f42..761dfad

Rolling v8/third_party/depot_tools: 35c6274..87c8b91

Rolling v8/third_party/zlib: 02daed1..93be846

Rolling v8/tools/clang: 42b285f..62d4c43

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

Change-Id: Ia948991c7735b13585cf12a7ccfb0e372ab86320
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2266393
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@{#68536}
2020-06-25 11:27:52 +00:00
Thibaud Michaud
2332ebd86a [liftoff][mv] Remove multi-value overhead
- Add a separate function to load return slots, instead of encoding this
in the offset,
- Add fast path for single return.

Drive-by: Reuse helper function for stack slot loads on ia32 and x64.

R=clemensb@chromium.org

Bug: v8:10576
Change-Id: Iea5ad2f0982c443cf2297227e9a2367cbb14581f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2264099
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Thibaud Michaud <thibaudm@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68535}
2020-06-25 11:10:02 +00:00
Clemens Backes
6e856b5e34 [wasm][interpreter] Remove RaiseException
This method was there to turn a trap into an exception. It's not used
any more, so can be removed.

R=ahaas@chromium.org

Bug: v8:10389
Change-Id: I39bb3141722ddf1e09271348016c1d6f6d72b928
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2264103
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68534}
2020-06-25 10:30:22 +00:00
Clemens Backes
f2cb20289d [wasm] Remove dead code from test utils
This removes several dead functions from the wasm-module-runner.cc.

R=ahaas@chromium.org

Change-Id: I35efbc6960a28f41d14ca5d8e828c4e6f2953409
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2264100
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68533}
2020-06-25 10:22:52 +00:00
Mike Stanton
9957621277 [ic] Make FeedbackVector slot arrays immutable
Currently the FeedbackVector uses arrays in slots that are polymorphic,
usually in a <map, handler> tuple pattern. Helper functions try to
re-use an existing array if it's already in place.

For Concurrent TurboFan, it would be far better if these FixedArrays
were immutable. We could then count on semantic correctness when
harvesting their information from a background thread without locking.

Additionally, the arrays should always be initialized fully before
being set in place.

Bug: v8:7790
Change-Id: I81eae3bda48c2d0d8eea41d1bc9c62afb7e619d5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2264364
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Michael Stanton <mvstanton@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68532}
2020-06-25 10:01:52 +00:00
Peter Ralbovsky
3c815cb2fc Updated BUILD.gn to link fuzzilli
Change-Id: Ia303e0384aee4f6998599fc9f04104517c51aa66
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2249663
Commit-Queue: Peter Ralbovsky <ralbovsky@google.com>
Reviewed-by: Michael Stanton <mvstanton@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68531}
2020-06-25 08:46:32 +00:00
Jakob Kummerow
fdaa6c286e Avoid some recursion in InvalidatePrototypeChains
We can walk linear prototype chains using iteration instead of
recursion, reducing the likelihood (though not excluding the
possibility) that large prototype-relation graphs will run into
a stack overflow.
This partial mitigation should be performance neutral.

Bug: v8:10522
Change-Id: Ia266efe38a9cc52fe6ab2189066f45c4566f3596
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2245591
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68530}
2020-06-25 08:28:02 +00:00
Shu-yu Guo
4239880777 Reland "[test] Add is_cfi variable for test status files"
This is a reland of f0c9e93297

TBR=machenbach@chromium.org

Original change's description:
> [test] Add is_cfi variable for test status files
>
> Bug: v8:10640
> Change-Id: Ifa485c285f345ca1ffba949feb8fc70b160a018c
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2264627
> Reviewed-by: Michael Achenbach <machenbach@chromium.org>
> Commit-Queue: Shu-yu Guo <syg@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#68523}

Bug: v8:10640
Change-Id: Iabf005127eea412b991f3f59d9e786f3c1eb7891
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2265240
Commit-Queue: Shu-yu Guo <syg@chromium.org>
Reviewed-by: Shu-yu Guo <syg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68529}
2020-06-24 23:34:10 +00:00
Shu-yu Guo
5da083ab0f Revert "[wasm] Re-exported globals preserve their identity"
This reverts commit f7a1932ef9.

Reason for revert: Breaking wasm wpt tests: https://ci.chromium.org/p/v8/builders/ci/V8%20Blink%20Linux/5408

Original change's description:
> [wasm] Re-exported globals preserve their identity
> 
> V8 fails a recently added spec test that when an imported global get
> re-exported, it should preserve its identity. This CL fixes the behavior
> in V8.
> 
> Drive-by change: fix the object printer of globals: a global which
> stores a reference type only has a tagged buffer, a global which stores
> a value type only has an untagged buffer.
> 
> R=​clemensb@chromium.org
> 
> Bug: v8:10556
> Change-Id: I949d147fe4395610cfec6cf60082e1faecb23036
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2235702
> Commit-Queue: Andreas Haas <ahaas@chromium.org>
> Reviewed-by: Clemens Backes <clemensb@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#68513}

TBR=ahaas@chromium.org,clemensb@chromium.org

Change-Id: I06eb1996cafe7d4e93a7e59d21679fea239cf961
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:10556
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2264956
Reviewed-by: Shu-yu Guo <syg@chromium.org>
Commit-Queue: Shu-yu Guo <syg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68528}
2020-06-24 22:57:41 +00:00
Shu-yu Guo
6c8d9ad0a5 Revert "[test] Add is_cfi variable for test status files"
This reverts commit f0c9e93297.

Reason for revert: Suspicion of breaking infra somehow

Original change's description:
> [test] Add is_cfi variable for test status files
> 
> Bug: v8:10640
> Change-Id: Ifa485c285f345ca1ffba949feb8fc70b160a018c
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2264627
> Reviewed-by: Michael Achenbach <machenbach@chromium.org>
> Commit-Queue: Shu-yu Guo <syg@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#68523}

TBR=machenbach@chromium.org,syg@chromium.org

Change-Id: I9a71ac443d64d2e8121f6a7ea52af833bb8add36
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:10640
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2264953
Reviewed-by: Shu-yu Guo <syg@chromium.org>
Commit-Queue: Shu-yu Guo <syg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68527}
2020-06-24 20:49:36 +00:00
Ng Zhi An
f332380e47 [wasm-simd][arm] Prototype f32x4.nearest
Prototype f32x4.nearest on ARM for both ARM v7 and ARM v8. ARM v8 has
support for vrintn, and for ARM v7 we fallback to runtime.

Since ARM v8 uses vrintn, which is the same instruction used for
F32RoundTiesEven (scalar), wasm-compiler reuses the Float32RoundTiesEven
check.

Bug: v8:10553
Change-Id: I066b8c5f10fd86294afe1c530c516493deeb7b53
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2258037
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Deepti Gandluri <gdeepti@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68526}
2020-06-24 20:40:24 +00:00
Manos Koukoutos
e19c945b22 [wasm-gc] Skip null check for non-nullable arrays in generated code
Bug: v8:7748
Change-Id: Ic55c1aeb2bceb72dff1338c4d9cbde9aa799f25a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2262914
Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68525}
2020-06-24 20:31:15 +00:00
Manos Koukoutos
305e3dfcc9 [wasm-gc][cleanup] Fix/Tidy up some easy TODOs etc.
Bug: v8:7748
Change-Id: I45a8f1398554da8a9543c866b4125fd9711e230b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2263933
Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68524}
2020-06-24 20:28:55 +00:00
Shu-yu Guo
f0c9e93297 [test] Add is_cfi variable for test status files
Bug: v8:10640
Change-Id: Ifa485c285f345ca1ffba949feb8fc70b160a018c
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2264627
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Shu-yu Guo <syg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68523}
2020-06-24 19:53:25 +00:00
Manos Koukoutos
327c2d2acf [wasm-gc] Introduce HeapTypeImmediate
Some operations require an immediate argument that represents a heap
type. This CL introduces a class to represent it and uses it where
appropriate. Also, the redundant TypeIndexImmediate is removed.

Bug: v8:7748
Change-Id: Ib4b1d50764a79f5dd3240688f8165c39745eaad8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2260874
Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68522}
2020-06-24 18:12:59 +00:00
Clemens Backes
46f9931ccf [wasm] Add more likely and unlikely annotations
All error handling should be marked V8_UNLIKELY, because this is never
on the hot path.

R=thibaudm@chromium.org

Bug: v8:10576
Change-Id: I8bc996e96a2e90f21ec065fbce4656d311097f74
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2263153
Reviewed-by: Thibaud Michaud <thibaudm@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68521}
2020-06-24 17:11:08 +00:00
Andreas Haas
0366e2f869 [wasm][ia32][liftoff] Implement 32-bit atomic exchange
R=clemensb@chromium.org

Bug: v8:10108
Change-Id: I50e94888340601febcede6be9899ca1ffaaed5a5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2264358
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68520}
2020-06-24 16:51:08 +00:00
Santiago Aboy Solanes
879bb039fc [compiler] Add synchronization for background prototype chain walk
Bug: v8:7790
Change-Id: I1c0275401671bb85d92afd2910618a0a345c26c9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2210233
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68519}
2020-06-24 16:29:48 +00:00
Maya Lekova
f569be617a [respect] Clean compiler and codegen directories
Bug: v8:10619
Change-Id: I9097e203404ca36301a08665a7383c9585301a67
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2264359
Commit-Queue: Maya Lekova <mslekova@chromium.org>
Commit-Queue: Michael Stanton <mvstanton@chromium.org>
Auto-Submit: Maya Lekova <mslekova@chromium.org>
Reviewed-by: Michael Stanton <mvstanton@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68518}
2020-06-24 15:47:43 +00:00
Andreas Haas
57817760e0 [wasm][ia32][liftoff] Implement 32-bit atomic sub
R=clemensb@chromium.org

Bug: v8:10108
Change-Id: I5050d58d9601214e88bb88b24502f288de0b7be8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2264357
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68517}
2020-06-24 15:43:13 +00:00
Dan Elphick
3e3403ea0d [heap] Fix read-only space metrics for aligned allocations
Fix returning from TryAllocateLinearlyAligned without updating the
allocation stats if a preceding filler was required. Also makes
AllocateRaw take an int instead of size_t in line with other Spaces.

Bug: v8:8875, chromium:1097389
Change-Id: If0932caa94dce1cd45b41f44fa225a2007772ea1
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2264354
Auto-Submit: Dan Elphick <delphick@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68516}
2020-06-24 15:05:55 +00:00
Clemens Backes
98a9c44be9 [wasm] Refactor decoder tracing
Move more logic into the {TraceLine} class. In release builds, this
class will not do anything. Since there is no code after the switch in
{DecodeOp} any more after this CL, we can apply tail-call optimization
(via explicit returns in C++), which will save an additional call in
some cases.

R=thibaudm@chromium.org

Bug: v8:10576
Change-Id: Ie11ec550ab33d0c03a27375f34576e3a75dcf6ad
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2254021
Reviewed-by: Thibaud Michaud <thibaudm@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68515}
2020-06-24 14:48:53 +00:00