Commit Graph

62727 Commits

Author SHA1 Message Date
Igor Sheludko
0262bc10fc [zone-stats] Introduce v8.zone_stats tracing category
... in order to make it possible to collect zone memory usage stats
from Chrome.

Drive-by-cleanup: move TracingFlags definition to a separate file.

Bug: v8:10572
Change-Id: I05fb65e207d573d5c18821067cfff4c37f2d77cd
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2226561
Reviewed-by: Peter Marshall <petermarshall@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68135}
2020-06-03 11:31:35 +00:00
Dan Elphick
ae489decb1 [heap] Move MemoryChunk fields to BasicMemoryChunk
This moves several fields that will be needed by ReadOnlySpace pages
when it stops using MemoryChunk into BasicMemoryChunk.

Additionally AllocationStats is moved from spaces.h into
allocation-stats.h.

Bug: v8:10473, v8:10454
Change-Id: I76a66565a260126e629bd7588a5418267dfa8423
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2228722
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Dan Elphick <delphick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68134}
2020-06-03 10:37:34 +00:00
Igor Sheludko
262a1078d5 [zone-stats] Add a UI for exploring zone memory usage stats
... collected via --trace-zone-stats flag or v8.zone_stats trace
category.

This is an initial version inspired by heap-stats UI.

Bug: v8:10572
Change-Id: Ib87cf0b4e120bc99683227eef02668a2a5c3d594
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2226855
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68133}
2020-06-03 10:22:34 +00:00
Peter Ralbovsky
70eb08982c Integrate fuzzilli into v8
Fuzzilli is open source fuzzer by Samuel Groß (saelo@google.com)
that can be used to find bugs in v8 javascript engine. As we want
to automate fuzzing for current versions of v8, we want to merge
fuzzilli toolkit into v8 code, so that fuzzer can automatically
update to the newest version.
So far Fuzzilli has been maintained at
https://github.com/googleprojectzero/fuzzilli .


Bug tracker Id: https://bugs.chromium.org/p/v8/issues/detail?id=10571

Change-Id: I83ddc7e8bb31664c19e4044395bb9044a1c12031
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2201760
Reviewed-by: Tamer Tas <tmrts@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Michael Stanton <mvstanton@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Commit-Queue: Michael Stanton <mvstanton@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68132}
2020-06-03 09:53:24 +00:00
Camillo Bruni
d9337dc100 [testrunner] Output unexpected passing tests
Passing tests that are marked as fail in a status file are not
immediately visible as such.

- Always show "--- FAILED ---" for failing tests
- Show "--- UNEXPECTED PASS ---" for unexpectedly passing tests

Drive-by-fixes:
- Color failures in red with --progress=color
- Color repro command in yellow with --progress=color

Change-Id: Id43ecec348dbfd4ff627ea6aa4ba458a2e5a8445
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2213434
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68131}
2020-06-03 09:16:29 +00:00
Thibaud Michaud
01724ace94 [assembler][x64] Inline Operand constructor
On x86-64, we spend significant time constructing and copying operands
in Liftoff (around 5% locally). Inlining the constructor and helper
functions removes most of the overhead.

R=clemensb@chromium.org

Bug: v8:10576
Change-Id: I1663e3e92abe7683eba9320e77fce9be8f84b4ca
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2225023
Commit-Queue: Thibaud Michaud <thibaudm@chromium.org>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68130}
2020-06-03 09:13:19 +00:00
Iain Ireland
b65fcfe925 [regexp] Fix non-unicode ignore-case backreferences
https://crrev.com/c/2072858 rewrote the implementation of non-unicode
ignore-case matches to comply with the JS spec in some corner
cases. It fixed character matches and character class matches.

We missed a similar bug in the implementation of back references. This
CL fixes that bug.

The main change is in regexp-macro-assembler.cc, where
CaseInsensitiveCompareUC16 is split into CaseInsensitiveCompareUnicode
(which has the same semantics as before) and
CaseInsensitiveCompareNonUnicode (which has the semantics described
here: https://tc39.es/ecma262/#sec-runtime-semantics-canonicalize-ch).

Most of the rest of the patch undoes https://crrev.com/c/2081816 to
once again make the unicode flag available to the macroassembler, so
that we can decide which helper function to call.

The testcase is a version of test/intl/regress-10248.js, modified to
test backreferences.

Bug: v8:10573
Change-Id: I70ef7d134d37f99b1f75a5eba17020e82d59f1b9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2219284
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68129}
2020-06-03 08:59:08 +00:00
Jakob Gruber
69bc22e729 Extend two-byte-in-one-byte string test
This CL makes the test stricter by requiring specific string shapes;
before it was possible to skip verification if strings were
short-circuited, which I believe is no longer possible due to thin
strings.

I also added a regression test for the linked bug, which requires
a String.p.split call on a two-byte-in-one-byte string with an empty
string separator argument.

Bug: chromium:1088179
Change-Id: Ibb3180afe612a64fcf6a506d18bbc415840526a8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2228609
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68128}
2020-06-03 08:18:28 +00:00
Dominik Inführ
49951673d4 [heap] Tests can now set FLAG_local_heaps from the get-go
Bug: v8:10315
Change-Id: I0144b89696933afcd02f63b0440118dd33a7d5ad
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2225025
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68127}
2020-06-03 08:03:38 +00:00
Georg Neis
8c0bae39e9 Update deoptimizer/OWNERS
Also change the component from Runtime to Compiler.

Change-Id: Ifb19e0d584b279b5f9bc6bc60531e64d4fecb4ad
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2218285
Commit-Queue: Georg Neis <neis@chromium.org>
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68126}
2020-06-03 07:50:48 +00:00
Anton Bikineev
38c4d58727 cppgc: Fix missing <algorithm> header
This fixes the gcov build.

Bug: chromium:1056170
Change-Id: I40ac42b6fce77367c6a366544abf89fc21075cdc
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2228510
Commit-Queue: Anton Bikineev <bikineev@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Auto-Submit: Anton Bikineev <bikineev@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68125}
2020-06-03 07:32:04 +00:00
Jakob Gruber
0e8c33a57c [builtins] Fix String.p.split for one-byte-wraps-two-byte string
It's possible for a one-byte string to wrap a two-byte string. For
example:

      CONS_ONE_BYTE_STRING_TYPE
wraps THIN_STRING_TYPE
wraps EXTERNAL_INTERNALIZED_STRING_TYPE

We thus have to validate the extracted instance type when relying on
the string being one-byte.

Bug: chromium:1088179
Change-Id: Id0f996761a3ae2f1233e12c95e663e77d4a5ebf9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2226752
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68124}
2020-06-03 04:54:05 +00:00
Ng Zhi An
a96d243d2f [wasm-simd][fuzzer] Add replace lanes
Bug: v8:10180
Change-Id: Ic3dc7394962439adca0482750593a1c22c840054
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2225091
Reviewed-by: Deepti Gandluri <gdeepti@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68123}
2020-06-03 01:42:51 +00:00
Ng Zhi An
5d8f3b46a5 [ia32] Replace c-style cast with brace initialization.
Bug: v8:10506
Change-Id: I896d0d614524bb9515593fb1fb2b1e3e9892a026
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2225938
Reviewed-by: Deepti Gandluri <gdeepti@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68122}
2020-06-03 00:44:48 +00:00
Ng Zhi An
1b62ffa864 [clang-tidy] Make deleted constructor public
Making them private was a way to hide the constructor, we can
explicitly delete them, which give a better compilation error message as
well.

Also see: https://stackoverflow.com/q/55205874

Bug: v8:10488
Change-Id: I624efdb03edb4d1d07f95e756f2c87baba4b3ffe
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2223236
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68121}
2020-06-02 23:35:28 +00:00
Ng Zhi An
cebbf6103d [clang-tidy] Add override to overridden destructors
See
https://clang.llvm.org/extra/clang-tidy/checks/modernize-use-override.html
for more on this warning.

Bug: v8:10488
Change-Id: Icfb54d8f4ab0efe0fdf51bd1920511b7505207d0
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2223234
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68120}
2020-06-02 21:32:46 +00:00
Frank Tang
ba3a9424f1 [Intl] Changes of toStringTag of Intl.*
Implement the spec changes in https://github.com/tc39/ecma402/pull/430

Bug: v8:10554
Change-Id: I421d6feb94810027cf17ff58a4ec5357940ef44a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2212889
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Frank Tang <ftang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68119}
2020-06-02 20:31:45 +00:00
Clemens Backes
38948b8e92 [wasm][interpreter] Remove activations
Since the interpreter cannot call out to JS any more, there cannot be
more than one activation at a time. Hence remove the concept of
activations.

R=ahaas@chromium.org

Bug: v8:10389
Change-Id: Ifda5624e192464a1aed2943787bc6860d1917719
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2219942
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68118}
2020-06-02 20:20:05 +00:00
Clemens Backes
634d5952a7 Revert "[wasm-simd][liftoff] Fix I64x2Mul"
This reverts commit 76debfda32.

Reason for revert: Nullptr access in new test: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux/37265

Original change's description:
> [wasm-simd][liftoff] Fix I64x2Mul
> 
> The I64x2Mul overwrote the lhs/rhs if they are the same as dst. So when
> deciding if we need temporaries, we should not only check the
> cache_state, but whether they alias dst or not.
> 
> Bug: chromium:1088273
> Change-Id: I82efa9b45e0a3d321a06efde60971ce95b21490f
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2225796
> Commit-Queue: Zhi An Ng <zhin@chromium.org>
> Reviewed-by: Clemens Backes <clemensb@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#68114}

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

Change-Id: I5fd337b71d82d262d36ff410077a11c17b50036b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:1088273
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2226756
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68117}
2020-06-02 20:12:08 +00:00
Clemens Backes
6b633af775 [wasm] Disallow nullptr modules in decoder
In production, we will always pass a pointer to the decoded module. The
only reason for the existance of the nullptr checks is that tests
sometimes don't pass a module here. Hence we pay in production code for
a test-only feature.

This CL fixes this by always passing a module pointer from the decoder
tests. This even simplifies the code a lot by removing redundant code.

The {TestModuleBuilder} class was moved before the definitions of the
{FunctionBodyDecoderTest} class in order to be able to reuse it there.
It's unmodified otherwise.

R=ahaas@chromium.org

Bug: v8:10576
Change-Id: I7d876bfc8a27b50fe713afb8848fb4f642287cfa
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2226749
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68116}
2020-06-02 20:01:35 +00:00
Shu-yu Guo
e0f2e5a515 Revert "Set .name of anonymous functions on the RHS of logical assignment."
This reverts commit c342ba8247.

Reason for revert: Incorrectly parsed destructuring + logical assignment

Original change's description:
> Set .name of anonymous functions on the RHS of logical assignment.
> 
> https://github.com/tc39/proposal-logical-assignment/pull/24 reached
> consensus in June TC39.
> 
> Drive-by refactoring of testing for logical assignment ops using
> IsInRange.
> 
> Bug: v8:10579
> Change-Id: I5a203ba552a905cd28f75c5d223998431a1966ce
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2225809
> Reviewed-by: Marja Hölttä <marja@chromium.org>
> Commit-Queue: Shu-yu Guo <syg@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#68101}

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

Change-Id: I7992941bb31ad063611a45a65d20517803910475
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:10579
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2227059
Reviewed-by: Shu-yu Guo <syg@chromium.org>
Commit-Queue: Shu-yu Guo <syg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68115}
2020-06-02 19:26:27 +00:00
Ng Zhi An
76debfda32 [wasm-simd][liftoff] Fix I64x2Mul
The I64x2Mul overwrote the lhs/rhs if they are the same as dst. So when
deciding if we need temporaries, we should not only check the
cache_state, but whether they alias dst or not.

Bug: chromium:1088273
Change-Id: I82efa9b45e0a3d321a06efde60971ce95b21490f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2225796
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68114}
2020-06-02 19:21:55 +00:00
Ng Zhi An
6dca4f96f4 [clang-tidy] Make deleted constructor public
Making them private was a way to hide the constructor, we can
explicitly delete them, which give a better compilation error message as
well.

Also see: https://stackoverflow.com/q/55205874

Bug: v8:10488
Change-Id: Ie9200b317e4d2f47b9e869701149960341878d3c
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2223235
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68113}
2020-06-02 19:20:35 +00:00
Clemens Backes
447ad5ccbe [codegen] Move SourcePositionTableBuilder to Zone
The SourcePositionTableBuilder unconditionally allocates heap memory for
every Liftoff compilation. This shows up with 1-2% of compilation time
in profiles. Hence move the vector contained in the
SourcePositionTableBuilder into the compilation zone. Such a zone
already exists for both Liftoff and TurboFan, so we can easily save
allocations this way.

R=thibaudm@chromium.org

Bug: v8:10576
Change-Id: Ia83d05cc8c36c775ebff6ec2064e9c3f8cc4d384
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2224221
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Thibaud Michaud <thibaudm@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68112}
2020-06-02 19:18:07 +00:00
Dominik Inführ
f62fc2e1a8 [heap] Allow enabling --local-heaps by default
All tests pass now with --concurrent-allocation and --local-heaps flags
set to true.

Bug: v8:10315
Change-Id: I03a70933aa0db4d9e74933ad2fc4cb81105cb889
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2218061
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68111}
2020-06-02 19:03:25 +00:00
Junliang Yan
1e0287c13b PPC: [test] fix heap/Regress589413
We need to reserve two pages for young objects and objects on
the evacuation candidate page.

Change-Id: I0c4e8f85971676c0b50dfd947678a33dd1b56084
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2224364
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68110}
2020-06-02 18:28:55 +00:00
Milad Farazmand
2ae3fa5076 PPC/s390: Reland "[wasm-simd][liftoff][ia32][x64] Implement bitmask"
Port aa5bcc09bf

Original Commit Message:

    This relands commit d04b5e4755.

    The fix here is in the assembler for pmovmskb, emit_optional_rex_32 should be
    called after emitting the prefix byte.

    Original change's description:
    > [wasm-simd][liftoff][ia32][x64] Implement bitmask
    >
    > Implements i8x16 i16x8 i32x4 bitmask.
    >
    > This was merged into the proposal in
    > https://github.com/WebAssembly/simd/pull/201/.
    >
    > Bug: v8:9909,v8:10308
    > Change-Id: I882f0c2697213cdf593e745112e0897cee252009
    > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2222607
    > Commit-Queue: Zhi An Ng <zhin@chromium.org>
    > Reviewed-by: Clemens Backes <clemensb@chromium.org>
    > Cr-Commit-Position: refs/heads/master@{#68090}

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

Change-Id: Id73795d3628067199ac6ac592a9b0b1c57fc65a4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2226311
Reviewed-by: Zhi An Ng <zhin@chromium.org>
Commit-Queue: Milad Farazmand <miladfar@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#68109}
2020-06-02 18:25:25 +00:00
Anton Bikineev
ad54f1bb17 cppgc: Add write barrier
This moves from Blink:
1) implementation of the marking write barrier;
2) WriteBarrierWorklist to Marker;
3) incremental/concurrent marking options.

Bug: chromium:1056170
Change-Id: Ia3e31ffd920a99803420b1453695fe2fb8d843b8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2218064
Commit-Queue: Anton Bikineev <bikineev@chromium.org>
Reviewed-by: Omer Katz <omerkatz@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68108}
2020-06-02 18:03:35 +00:00
Ng Zhi An
f672cefd30 [wasm-simd][liftoff][arm][arm64] Implement bitmask
Implement i8x16 i16x8 i32x4 bitmask for arm and arm64.

The instruction sequence is the same as TurboFan, we have some special
handling for getting the second temporary Q register, reuse src if
possible.

Bug: v8:9909,v8:10308
Change-Id: I1c6fe0d076f0e14d05c4cc532e4d976f4ebcce30
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2222608
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68107}
2020-06-02 17:32:35 +00:00
Ng Zhi An
aa5bcc09bf Reland "[wasm-simd][liftoff][ia32][x64] Implement bitmask"
This relands commit d04b5e4755.

The fix here is in the assembler for pmovmskb, emit_optional_rex_32 should be
called after emitting the prefix byte.

Original change's description:
> [wasm-simd][liftoff][ia32][x64] Implement bitmask
>
> Implements i8x16 i16x8 i32x4 bitmask.
>
> This was merged into the proposal in
> https://github.com/WebAssembly/simd/pull/201/.
>
> Bug: v8:9909,v8:10308
> Change-Id: I882f0c2697213cdf593e745112e0897cee252009
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2222607
> Commit-Queue: Zhi An Ng <zhin@chromium.org>
> Reviewed-by: Clemens Backes <clemensb@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#68090}

Bug: v8:9909, v8:10308
Change-Id: I4897585c86b87f72dc8f142b275171276d135a24
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2225090
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68106}
2020-06-02 16:31:15 +00:00
gengjiawen
a16ad725b9 build: fix build on msvc
See: https://github.com/nodejs/node-v8/issues/158#issuecomment-636909258
Change-Id: I50c732cd682cd4627a463822a4dfd1678dff266e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2226121
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68105}
2020-06-02 15:33:11 +00:00
Seth Brenith
7ce4b196ce [diagnostics] Make basic block profiling more configurable
This change adds more granular control to the behavior that was
previously controlled by the single flag --turbo-profiling. With this
change, it becomes possible to:
- output information only about builtins, ignoring functions compiled at
  runtime
- skip the very slow process of writing the schedule and disassembly for
  all builtins, if you only want the block counts and don't need verbose
  output

This change also moves the output step from Shell::OnExit to
Isolate::DumpAndResetStats so that it's more consistent with other
features and works in hosts other than d8.

Bug: v8:10470, v8:9119
Change-Id: I19b1caca3ff27a2e4a6fdc7ad2f8174f8d678b3a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2216717
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
Cr-Commit-Position: refs/heads/master@{#68104}
2020-06-02 15:18:52 +00:00
Jakob Gruber
a70348d0e0 Unify string debug printing
This unifies functionality between release-mode ShortPrint and
debug-mode Print:

- Prefixes and suffixes are now consistent. 'u' for two-byte, '#' for
  internalized, 'c' for cons, '>' for thin.
- Logic was simplified and is now based on 3 functions:
  PrefixForDebugPrint, PrintUC16, SuffixForDebugPrint.
- %DebugPrint no longer interprets strings as 'code markers'.
- The ancient and unused use_verbose_printer flag was removed.

Bug: v8:10581
Change-Id: Iebc6a746a2683f9f5a8ef60579836e7f66a188fa
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2224868
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68103}
2020-06-02 15:08:21 +00:00
George Wort
7c0c52861f [turbolizer] Display live range uses
Display UsePositions in the intervals
in live ranges in turbolizer.

Uses are shown as vertical red lines.

Bug: v8:7327
Change-Id: Iab8d08989b9113d1b7d393252de5988e8b25b8de
Notry: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2224215
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68102}
2020-06-02 15:04:11 +00:00
Shu-yu Guo
c342ba8247 Set .name of anonymous functions on the RHS of logical assignment.
https://github.com/tc39/proposal-logical-assignment/pull/24 reached
consensus in June TC39.

Drive-by refactoring of testing for logical assignment ops using
IsInRange.

Bug: v8:10579
Change-Id: I5a203ba552a905cd28f75c5d223998431a1966ce
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2225809
Reviewed-by: Marja Hölttä <marja@chromium.org>
Commit-Queue: Shu-yu Guo <syg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68101}
2020-06-02 15:00:21 +00:00
Jakob Gruber
6463c0f00c [compiler] Hook in compare op builtins with feedback in generic lowering
If --turbo-nci is enabled, use compare op builtins with feedback
collection during generic lowering.

Bug: v8:8888
Change-Id: I886020e2ee280f65388d9987c70958546f99e0f3
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2215821
Reviewed-by: Georg Neis <neis@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68100}
2020-06-02 12:24:47 +00:00
Clemens Backes
d47ab50b54 [liftoff] Use ZoneVectors during compilation
The allocation of heap storage for the vectors shows up in profiles, and
also the destruction of the contained elements.
Since we already have a compilation zone available, we can easily move
the vectors and all contained elements into the zone, where they will be
deallocated together with all other data at once.

R=thibaudm@chromium.org

Bug: v8:10576
Change-Id: I2c3d318f9b19b1b8c2e4e57e7523cd1c79192cc6
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2224220
Reviewed-by: Thibaud Michaud <thibaudm@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68099}
2020-06-02 11:24:37 +00:00
Dominik Inführ
37e3cac7c5 [heap] Do not verify slots in concurrent sweeper
Cannot verify whether slots are cleared from a concurrent sweeping task,
the OLD_TO_NEW remembered set is owned by the main thread.

Bug: v8:10562
Change-Id: I0c880f7f96350aa35b44d2966c9621576825374c
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2215820
Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68098}
2020-06-02 10:55:07 +00:00
Clemens Backes
f843917592 [d8] Improve error message for illegal --trace-path
Unconditionally check for errors (instead of a DCHECK), and print a
better error message (including the file path) if the file cannot be
opened.

R=tebbi@chromium.org
CC=machenbach@chromium.org

Bug: chromium:1087039
Change-Id: Ia5cb76b309e78631ecf9462de6c7cd3eb4bf9e59
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2224226
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68097}
2020-06-02 10:47:07 +00:00
Clemens Backes
5fcb414ac2 [wasm][debug] Support multi-threaded breakpoints
This adds support for multiple isolates sharing the same module but
setting different breakpoints. This is simulated by having a debugger
test that runs in the "--isolates" variant, i.e. two isolates running
the same test at the same time. Both isolates will set and remove
breakpoints.

The DebugInfo will keep a separate list of breakpoints per isolate, and
when recompiling a function for debugging it will respect all
breakpoints in all isolates.
In order to ensure consistency if multiple isolates are setting or
removing breakpoints simultaneously, we go back to a more coarse-grained
locking scheme, where the DebugInfo lock is held while re-compiling
Liftoff functions.

While recompilation will install the code in the module-global code
table and jump table (and hence all isolates will use it for future
calls), only the stack of the requesting isolate is rewritten to
immediately use new code. This is OK, because other isolates are not
interested in the new breakpoint(s) anyway.
On {SetBreakpoint}, we always need to rewrite the stack of the
requesting isolate though, even if the breakpoint was set before by
another isolate.

Drive-by: Some fixes in SharedFunctionInfo in order to support setting
breakpoints via the Debug mirror.

R=thibaudm@chromium.org

Bug: v8:10359
Change-Id: If659afb273260fc5e8124b4b617fb4322de473c7
Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_rel
Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_isolates_rel_ng
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2218059
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Thibaud Michaud <thibaudm@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68096}
2020-06-02 10:27:17 +00:00
Georg Neis
f3d463923e [turbofan] Fix a typer monotonicity bug
Bug: chromium:1085804
Change-Id: I98f12da97334bd5fd32bd01b1eca56be895dc0a8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2218286
Commit-Queue: Georg Neis <neis@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68095}
2020-06-02 10:23:47 +00:00
Leszek Swirski
e4cc52bfeb [offthread] Don't set marking bit on off-thread large pages
Bug: chromium:1088350
Change-Id: I9dc9f6b323ebe2e751167880acad0eed3584222a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2224227
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Auto-Submit: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68094}
2020-06-02 10:07:47 +00:00
Daniel Bevenius
fcac59ad8a [tools] Add error handling to no_arg_cmd
Currently, it can be little difficult to understand why a command in
lldb-commands.py stops working. For example, at the moment running the
jlh command results in an empty line:

$ lldb --one-line "command script import ../../tools/lldb_commands.py" \
     v8_hello_world
(lldb) br s -f hello-world.cc -l 49
(lldb) jlh script

(lldb)

With this commit this would instead display the following error message:

(lldb) jlh script
Failed to evaluate command
_v8_internal_Print_Object(*(v8::internal::Object**)(*(void*)(script))) :
error: cannot cast from type 'v8::Local<v8::Script>' to pointer type
'void *'

The output is really only two lines but I've wrapped the lines here so
they don't exceed the 72 column width. I'll follow up with a commit to
fix the issue reported.

Change-Id: I634a412b616dad7cadd74dce36418d27c1997777
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2083477
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68093}
2020-06-02 08:01:16 +00:00
jiepan
1f5842ad7a Fix printing order of opcode prefix and space
Leading whitespaces are used to indiate control depth,
opcode prefix should be printed after the whitespaces.

Change-Id: I0a22864d1d5a2e643b15a4c10909c0387922f8e3
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2224959
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Jie Pan <jie.pan@intel.com>
Cr-Commit-Position: refs/heads/master@{#68092}
2020-06-02 04:43:55 +00:00
Francis McCabe
cc1b741ef3 Revert "[wasm-simd][liftoff][ia32][x64] Implement bitmask"
This reverts commit d04b5e4755.

Reason for revert: closed the tree with a simd related test failure:
https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64/37487?

Original change's description:
> [wasm-simd][liftoff][ia32][x64] Implement bitmask
> 
> Implements i8x16 i16x8 i32x4 bitmask.
> 
> This was merged into the proposal in
> https://github.com/WebAssembly/simd/pull/201/.
> 
> Bug: v8:9909,v8:10308
> Change-Id: I882f0c2697213cdf593e745112e0897cee252009
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2222607
> Commit-Queue: Zhi An Ng <zhin@chromium.org>
> Reviewed-by: Clemens Backes <clemensb@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#68090}

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

Change-Id: I2e090f92d84b8f7d8bbf0725a4f64efaa18f3c65
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:9909, v8:10308
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2223829
Reviewed-by: Francis McCabe <fgm@chromium.org>
Commit-Queue: Francis McCabe <fgm@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68091}
2020-06-01 19:26:53 +00:00
Ng Zhi An
d04b5e4755 [wasm-simd][liftoff][ia32][x64] Implement bitmask
Implements i8x16 i16x8 i32x4 bitmask.

This was merged into the proposal in
https://github.com/WebAssembly/simd/pull/201/.

Bug: v8:9909,v8:10308
Change-Id: I882f0c2697213cdf593e745112e0897cee252009
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2222607
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68090}
2020-06-01 18:04:21 +00:00
Ng Zhi An
c4be24e3f7 [wasm-simd][liftoff][arm][arm64] Implement all_true
Implement all_true for arm and arm64. Instruction sequence is the same
as TurboFan.

Bug: v8:9909
Change-Id: Ibe57c6ae6f700dfe5bd23a91a243778b6481c5a0
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2222606
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68089}
2020-06-01 17:00:34 +00:00
Zhao Jiazhong
b972069f32 [mips][wasm-simd][liftoff] Implement all_true
Port b37995382a
https://crrev.com/c/2220446

Change-Id: I5de86c0aaf0f9262fd9cd63078c75c0013f5c962
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2223886
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Zhao Jiazhong <zhaojiazhong-hf@loongson.cn>
Cr-Commit-Position: refs/heads/master@{#68088}
2020-06-01 13:20:20 +00:00
George Wort
b4226ceb73 [turbolizer] Hide show-hide-ranges on load
Hide the arrow button div for snapping the live range
panel when a new file is loaded.

Bug: v8:7327
Change-Id: I576444f12a0557cc6716eb0214586b54a042a899
Notry: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2224838
Reviewed-by: Santiago Aboy Solanes <solanes@chromium.org>
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68087}
2020-06-01 11:22:20 +00:00
v8-ci-autoroll-builder
780a495c58 Update V8 DEPS.
Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/adf56e5..1ec2986

Rolling v8/third_party/depot_tools: b41a5ce..9904485

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

Change-Id: I07c78b9726b5d0d493698b5a8bda8c7352e030e8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2224134
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@{#68086}
2020-05-31 03:41:54 +00:00