Commit Graph

59901 Commits

Author SHA1 Message Date
Zhang, Shiyu
5f5b4b0407 Support Intel VTune ITT API
Add VTune domain support extension to use VTune Domain/Task API and
tagging trace data for particular JS code block.

How to use:
1. Set `"checkout_ittapi" = True` in the custom_vars section of .gclient
file to download intel/ittapi by 'gclient sync'
2. Build d8 with gn build flag 'v8_enable_vtunetracemark = true'
3. Run d8 with flag '--enable-vtune-domain-support'

The Vtune Domain/Task API can be invoked from JS to mark JS code block.
You can mark the start of a JS task by
    vtunedomainmark(domain_name, task_name, "start")
and the end of a task by
    vtunedomainmark(domain_name, task_name, "end")
Tasks can nest.

The VTune API (ittapi) is integrated as an external third party library
while the v8_vtune_jit also relies on the VTune ittapi. We have another
patch almost ready which refactors the v8_vtune_jit related code to
depend on the third_party/ittapi. We will submit the refactored v8_vtune_jit
code after this patch stabilized and landed.


Contributed by fanchen.kong@intel.com

Change-Id: I0ecc9dd4e1ea52545f1b6932fcdadfa7c1a6d2b2
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1938490
Commit-Queue: Shiyu Zhang <shiyu.zhang@intel.com>
Reviewed-by: Hannes Payer <hpayer@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65409}
2019-12-11 09:22:45 +00:00
Nico Hartmann
e5fea7d755 Revert "Update V8 DEPS."
This reverts commit 0f4c29dceb.

Reason for revert: https://ci.chromium.org/p/v8/builders/ci/V8%20Blink%20Linux/2302

Original change's description:
> Update V8 DEPS.
> 
> Rolling v8/build: b1050d1..c80cf17
> 
> Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/8953fbe..129810e
> 
> Rolling v8/third_party/depot_tools: 6b52dc2..ee67b97
> 
> Rolling v8/tools/clang: 57e481c..ed95c84
> 
> TBR=machenbach@chromium.org,tmrts@chromium.org
> 
> Change-Id: I5d3841c1a02e708ba7adadc2f08effe6bea2a7d9
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1958750
> 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@{#65407}

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

Change-Id: I30aafc3f7089a0c9bb50f18c2f307cace170376e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1960289
Reviewed-by: Nico Hartmann <nicohartmann@chromium.org>
Commit-Queue: Nico Hartmann <nicohartmann@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65408}
2019-12-11 09:21:40 +00:00
v8-ci-autoroll-builder
0f4c29dceb Update V8 DEPS.
Rolling v8/build: b1050d1..c80cf17

Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/8953fbe..129810e

Rolling v8/third_party/depot_tools: 6b52dc2..ee67b97

Rolling v8/tools/clang: 57e481c..ed95c84

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

Change-Id: I5d3841c1a02e708ba7adadc2f08effe6bea2a7d9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1958750
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@{#65407}
2019-12-11 03:48:20 +00:00
Seth Brenith
fc68f7f077 [torque] Tell Ninja about new Torque output file
This should have been included in https://crrev.com/c/v8/v8/+/1949047
but I missed it. Without the GN file declaring outputs correctly,
incremental builds are not guaranteed to work correctly. Example error
caused by this problem:
https://ci.chromium.org/p/v8/builders/try/v8_win_rel_ng/b8894499008446857360

Change-Id: I04d358c8f6387a59cb1cf747dda1844408bb6fc8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1960590
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
Cr-Commit-Position: refs/heads/master@{#65406}
2019-12-10 21:29:00 +00:00
Thibaud Michaud
a68ee60ac3 [wasm][debug] Set script URL from WasmStreaming
Add a method to set the URL of a Wasm script from a WasmStreaming object.
This will allow devtools to report the actual URL when it is available.

R=clemensb@chromium.org

Bug: v8:9762
Change-Id: Iccd41d76c9a4a2e1858716e8d555782404719faa
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1944153
Reviewed-by: Adam Klein <adamk@chromium.org>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Thibaud Michaud <thibaudm@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65405}
2019-12-10 18:29:30 +00:00
Joshua Litt
6bd85fc611 [promises] Port PromiseResolveThenableJob to Torque.
Bug: v8:9838
Change-Id: Ia9a84ca2c9c5ba9bed7b6ebddc3135f689e2cfaa
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1955665
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Commit-Queue: Joshua Litt <joshualitt@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65404}
2019-12-10 15:12:30 +00:00
Michael Achenbach
86ab40390f Revert "[turbofan][ptr-compr] Remove redundant ChangeTaggedToCompressed"
This reverts commit c924f54ee0.

Reason for revert: Suspect for GPU failures:
https://ci.chromium.org/p/v8/builders/ci/Linux%20V8%20FYI%20Release%20(NVIDIA)/7641

Original change's description:
> [turbofan][ptr-compr] Remove redundant ChangeTaggedToCompressed
> 
> The final goal is to eliminate it altogether. This CL just
> eliminate the redundant ones.
> 
> Bug: v8:7703
> Change-Id: If6e718c373fca7c65ce46c347533ec4550fbc444
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1950968
> Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
> Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#65398}

TBR=tebbi@chromium.org,solanes@chromium.org

Change-Id: Id280d7b0a850e3aacd56f839a0fc36d02a88f34c
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:7703
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1960286
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65403}
2019-12-10 13:08:19 +00:00
Georg Neis
cb08d96684 [turbofan] Allow inlining the most common node operations
Change-Id: Ie0b6e7876abe229915afa4aaf3b1692750254cbc
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1950977
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65402}
2019-12-10 10:20:39 +00:00
Liviu Rau
e381f7d35f [fuchsia] Use correct label for the isolate
Change-Id: I00a1cd9c74f6f58b89e35068721dbc30abf396e8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1955732
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Liviu Rau <liviurau@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65401}
2019-12-10 10:18:00 +00:00
Georg Neis
dc9bd4dab0 [turbofan] Clean up some more things in the serializer
- Move {function_} and {closure_hints_} out of each {Environment}, as
  it's sufficient to only have it in the serializer class.
- Similarly, remove {parameter_count_} and {register_count_} from
  {Environment}. To accomodate for that, change implementation of
  "dead" environments to be based on a flag.
- Remove {ClearEphemeralHints}. This was called for any bytecode not
  recognized by the serializer. I think it makes more sense to just
  do nothing at all for those, i.e. keep whatever hints we have.
- Split the magical {ephemeral_hints_} vector into three separate
  things for clarity: {accumulator_hints_}, {parameters_hints_}, and
  {locals_hints}. Note that we already had {current_context_hints_}.

Bug: v8:7790
Change-Id: Icbe33f500bdbd0f8002570934f59425f49c9de12
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1958010
Commit-Queue: Georg Neis <neis@chromium.org>
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65400}
2019-12-10 10:12:19 +00:00
Georg Neis
20b73b0d2d [turbofan] Clean up a few things in the serializer
- Remove CLEAR_ENVIRONMENT_LIST of bytecodes, since clearing the
  environment is already the default behavior.
- Address a TODO in Environment::Merge: also merge context hints.
- Don't needlessly clear register hints for InvokeIntrinsic.

Bug: v8:7790
Change-Id: Ibead921002e45ed46c8c1629cae7bb9febf09b90
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1952870
Reviewed-by: Michael Stanton <mvstanton@chromium.org>
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65399}
2019-12-10 09:56:29 +00:00
Santiago Aboy Solanes
c924f54ee0 [turbofan][ptr-compr] Remove redundant ChangeTaggedToCompressed
The final goal is to eliminate it altogether. This CL just
eliminate the redundant ones.

Bug: v8:7703
Change-Id: If6e718c373fca7c65ce46c347533ec4550fbc444
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1950968
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65398}
2019-12-10 09:39:39 +00:00
Tobias Tebbi
8ed9be48d5 [torque] allow allocation of strings
This CL generalizes and improves how we handle allocations in Torque.

Overview of the changes:
- Remove obsolete special handling for JSObject classes, since it was
  incomplete: It breaks as soon as slack tracking is active.
- Handle array initialization using slices.
- Properly align allocation sizes. This enabled allocating strings.
- Port AllocateSeq{One,Two}ByteString to Torque, which is much easier
  now than the old CSA code since allocation size alignment and
  large-object space allocation just happen out-of-the-box.
- Remove obsolete or unnecessary intrinsics, some of them turn into
  macros in the torque_internal namespace.
- Distinguish between header size and overall size for ClassType,
  make size optional and only defined when it is statically known.


Bug: v8:10004 v8:7793
Change-Id: I623db233e7fb4deed54e8039ae0c24705e9a44e8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1932356
Reviewed-by: Nico Hartmann <nicohartmann@chromium.org>
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65397}
2019-12-10 09:22:11 +00:00
Michael Achenbach
3ab75534e6 [test] Remove v8-testing.h
Deprecation was prepared by:
https://crrev.com/c/1899774

Bug: v8:9941
Change-Id: Idf236c2ebfc23e26dcb264747721d7c18986b6b8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1955552
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65396}
2019-12-10 09:13:40 +00:00
Leszek Swirski
9d6911fde0 [heap] Skip write barrier Smi check for known HeapObjects
Add HeapObject overloads for MarkingBarrier, GenerationalBarrier and
WriteBarrierForCode, which the compiler automatically prefers if a
setter's type is a subclass of HeapObject. These overloads can skip
the IsHeapObject check, providing maybe a small performance boost and
I measure a ~4.5kB binary size reduction in libv8.so

Change-Id: Ia65ff8425ae4895da406587101c7813fe6bf5a2b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1958055
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Auto-Submit: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65395}
2019-12-10 08:59:10 +00:00
Simon Zünd
ab8486ee55 [cleanup] Remove two unused string constants
Bug: v8:10021
Change-Id: Ieffa39c09e028b9c0f91f1823ea6e89f81fec4cb
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1948707
Commit-Queue: Simon Zünd <szuend@chromium.org>
Auto-Submit: Simon Zünd <szuend@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65394}
2019-12-10 07:40:50 +00:00
Bartek Nowierski
9645810552 Introduce and emit "function calls in detached window" use counters.
NOTE! This re-introduces the following change with a modification that
detached_window_time_in_seconds is initialized with 0, instead of
current time.
https://chromium-review.googlesource.com/c/v8/v8/+/1924000

Bug: chromium:1018156
Change-Id: I6d0880e0355d2cb08dbf4f2ef92c8fcead03f9ad
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1958344
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Bartek Nowierski <bartekn@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65393}
2019-12-09 17:41:02 +00:00
Milad Farazmand
d406bfd646 [base] Fix the return of ClockNow on IBMi
The API thread_cputime() is only defined but not yet implemented on IBMi.

Change-Id: I8ea7ff724e749f537b54e75a00d718500807ca8a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1957831
Reviewed-by: Junliang Yan <jyan@ca.ibm.com>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Milad Farazmand <miladfar@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#65392}
2019-12-09 16:33:11 +00:00
Leszek Swirski
fffea6812a [parser] Use non-eval decl scope's parent for caching
We use the compilation entry point as a caching scope for deserializing
lookups, to avoid redundantly iterating over parent scopes when
accessing the same variable multiple times.

However, this caching scope messes with lookups that are looking for
lexical name conflicts, as opposed to just resolving variables. In
particular, it messes with name conflict lookups and sloppy block
function hoisting checks, when there are other scopes in the way, e.g.

    function f() {
      let x;
      try {
        throw 0;
      }
      catch (x) {
        // This catch is the entry scope

        // Naive use of caches will find the catch-bound x (which is
        // a VAR), and declare 'no conflict'.
        eval("var x;");

        // Naive use of caches will find the catch-bound x (which is
        // a VAR), and determine that this function can be hoisted.
        eval("{ function x() {} }");
      }
    }

Previously, we worked around this by avoiding cache uses for these
lookups, but this had the issue of instead caching the same variable
multiple times, on different scopes. In particular, we saw:

    function f() {
      with ({}) {
        // This with is the entry scope, any other scope would do
        // though.

        // The conflict check on `var f` caches the function name
        // variable on the function scope, the subsequent 'real'
        // lookup of `f` caches the function name variable on the
        // entry i.e. with scope.
        eval("var f; f;");
      }
    }

With this patch, we change the caching behaviour to cache on the first
non-eval declaration scope above the eval -- in the above examples, this
becomes the parent function "f". For compilations with no intermediate
non-decl scopes (no with or catch scopes between the function and eval)
this becomes equivalent to the existing entry-point-based caching.

This means that normal lookups do have to (sometimes) iterate more scopes,
and we do have to be careful when using the cache to not use it for
lookups in these intermediate scopes (a new IsOuterScope DCHECK guards
against this), but we can now safely ignore the cache scope when doing
the name-collision lookups, as they only iterate up to the outer
non-eval declaration scope anyway.

Bug: chromium:1026603
Bug: chromium:1029461
Change-Id: I9e7a96ce4b8adbc7ed47a49fba6fba58b526235b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1955731
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65391}
2019-12-09 15:19:02 +00:00
Leszek Swirski
b8fef1a7ce Revert "[parser] Fix variable caching for conflict lookup"
This reverts commit 026a0c214a.

Reason for revert: Reverting due to https://crbug.com/1029461

Original change's description:
> [parser] Fix variable caching for conflict lookup
> 
> During conflict lookup (for lexical variables and sloppy block function
> hoisting), we cache the looked-up variable on the current scope if the
> lookup goes through a ScopeInfo. However, for variable lookup during
> scope analysis, we use the "entry point" as the cache.
> 
> Since both lookups can create Variables, this can cause us to create
> duplicate variables, e.g. a duplicate function name variable in the
> attached test.
> 
> Instead, for ScopeInfo conflict lookups we can cache the result on the
> function's outer scope, which shoud be equivalent to the entry point.
> 
> As a (necessary) drive-by, we can terminate the lookup early if we find
> a VAR with the same name, as we can safely assume that its existence
> means that it doesn't conflict, which means that our variable can't
> conflict either.
> 
> Bug: chromium:1026603
> Change-Id: I19f80f65597ba6573ebe0b48aa5698f55e5c3ea1
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1928861
> Commit-Queue: Leszek Swirski <leszeks@chromium.org>
> Reviewed-by: Toon Verwaest <verwaest@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#65138}

TBR=leszeks@chromium.org,verwaest@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: chromium:1026603
Bug: chromium:1029461
Change-Id: Id7f5dd342e32e1bb57c51b3748feff32ee0ba41d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1958014
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65390}
2019-12-09 13:54:12 +00:00
v8-ci-autoroll-builder
f8d64084cd Update V8 DEPS.
Rolling v8/build: 4f02786..b1050d1

Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/c3cb105..8953fbe

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

Change-Id: If375ec3ca9676c651ec7097a431e101aad5ff843
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1955992
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@{#65389}
2019-12-09 13:31:11 +00:00
Clemens Backes
36f159b3ab Revert "[codegen] Remove redundant xorpd instructions"
This reverts commit c4cf2ea4fd.

Reason for revert: Seems to cause more regressions than improvement. Let's see what the perf bots say about the revert.

Original change's description:
> [codegen] Remove redundant xorpd instructions
> 
> It seems like they were originally added in https://crrev.com/23654026
> (Sep 2013) to break dependences in the OOO pipeline. This code pattern
> was then later copied for other instructions too
> (https://crrev.com/1424333002).
> The reason for the xorpd is not mentioned in the code though, and I
> found no other compiler doing this. So maybe it's obsolete by now, and
> only increases code size.
> 
> Let's remove them and see if we get any performance regressions.
> 
> R=​ahaas@chromium.org
> CC=​yangguo@chromium.org
> 
> Change-Id: I0e6d65afa67f0ee286e5b0ba95c91092c5261c8f
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1926427
> Reviewed-by: Yang Guo <yangguo@chromium.org>
> Reviewed-by: Andreas Haas <ahaas@chromium.org>
> Commit-Queue: Clemens Backes <clemensb@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#65077}

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

Bug: chromium:1027876, chromium:1027449
Change-Id: I533729722e294dbe567222b1c4084df6b864d2ff
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1958053
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65388}
2019-12-09 13:08:51 +00:00
Clemens Backes
d4a4d28552 Fix ycm config for headers without source
Instead of using hard-coded clang flags (which are missing important
flags and are thus not that useful), use the flags for some unrelated
C++ file.

R=ahaas@chromium.org

No-Try: true
Change-Id: I516df9431e8aad1a63e832aa28450475193fd404
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1955549
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65387}
2019-12-09 11:59:21 +00:00
Liviu Rau
c6742529c3 [goma] Whitespace to trigger builders
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Change-Id: Iae100d8f9676f2f387d915ab6e70fa31d7ad30af
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1955551
Commit-Queue: Liviu Rau <liviurau@chromium.org>
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65386}
2019-12-09 11:34:19 +00:00
Dominik Inführ
56f56df6bb [heap] Reland: Reduce size of possibly empty buckets
Before this CL a byte was used per bucket to store whether the bucket
is possibly empty or not. This CL changes this such that each bucket
only needs a single bit.

PossiblyEmptyBuckets is now a word in the page header. If more bits
are needed than fit into a single word, an external bitmap is
allocated using AlignedAlloc. Storing this on the page header, allows
to remove initial_buckets from the SlotSet. The SlotSet allocation is
then again a power-of-2 in release mode.

Reland of https://crrev.com/c/1906376: Incorrect DCHECK was removed.
WordsForBuckets was simplified and a test was added for it.

Bug: chromium:1023139
Change-Id: I9a08e03a9c10e5781a146b9a28dab38824aad91f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1954391
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65385}
2019-12-09 11:31:58 +00:00
Clemens Backes
efe01b8819 [wasm] Remove flag for saturating conversions flag
This removes the --experimental-wasm-sat-f2i-conversions flag. This
feature is shipped since v7.5.

R=ahaas@chromium.org

Change-Id: I354d9528be40caac77cd4e41adcd39d013448339
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1958009
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65384}
2019-12-09 11:24:27 +00:00
Michael Achenbach
b68126d149 [foozzie] Fix mocking-out typed arrays
Some fuzz test cases set Math.min to a different function. Let the fake
typed array constructors remember the original Math.min.

No-Try: true
Bug: chromium:1024815
Change-Id: Ia389439fe6757f2497e22187042c5cdf1d1c649f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1958050
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65383}
2019-12-09 11:08:57 +00:00
Ng Zhi An
1effe529c2 [wasm-simd] Add AVX codegen
Mostly for f32x4 instructions.

Bug: v8:9561
Change-Id: I3a3dc06305acb9e336c494fc399cf5d21518c0e8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1950488
Reviewed-by: Deepti Gandluri <gdeepti@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65382}
2019-12-09 10:49:07 +00:00
Clemens Backes
2450b3bca6 [api] Add missing V8_EXPORT_PRIVATE annotation
This caused compile errors since https://crrev.com/c/1934407:
ld.lld: error: undefined symbol: v8::debug::AccessorPair::CheckCast(v8::Value*)
>>> referenced by debug-interface.h:578 (../../src/debug/debug-interface.h:578)
>>>               obj/test/cctest/cctest_sources/test-debug.o:(TestGetPrivateMethodsAndAccessors())

R=verwaest@chromium.org
CC=joyee@igalia.com

Change-Id: I4a727ddd2673c75ec16368459114cfcafdd18912
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1955595
Auto-Submit: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Joyee Cheung <joyee@igalia.com>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65381}
2019-12-09 10:42:07 +00:00
Simon Zünd
73f3d2b1ae Introduce stack locals black list field on the ScopeInfo object
This CL is a prepatory step towards moving the stack locals blacklist
from the DebugEvaluateContext to the respective {ScopeInfo} objects.

The locals blacklist is used during local debug evaluate to
decide whether a context lookup can advance the context chain
upwards, or if lookup needs to stop at the current scope.

This CL also introduces a "Recreate" static helper method, that
allows an existing ScopeInfo to be cloned, but with a locals
blacklist attached. This will be needed since blacklists are only
created on-demand during debugging.

R=leszeks@chromium.org

Bug: chromium:1027475, v8:9938
Change-Id: I673dbc99ce9fdc84cb5cda3f9710ba2b76ab92ee
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1946349
Commit-Queue: Simon Zünd <szuend@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65380}
2019-12-09 10:25:27 +00:00
Simon Zünd
acd8be25ee Add szuend to OWNERS files for src/{debug,inspector}
R=yangguo@chromium.org

Change-Id: Ia58394ec14b34dcd9641d6cf3a810ac272431801
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1958006
Commit-Queue: Simon Zünd <szuend@chromium.org>
Commit-Queue: Yang Guo <yangguo@chromium.org>
Auto-Submit: Simon Zünd <szuend@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65379}
2019-12-09 09:45:27 +00:00
Clemens Backes
5165722a39 [wasm] Document feature flags better
For each wasm feature flag, this adds a link to the proposal repository,
and states who is the v8-side owner of the implementation.
For stated and shipped features, it also sais since which v8 version
this is the case.
It also adds some documentation about the meaning of the three categories
(experimental, stages, shipped).

R=mstarzinger@chromium.org, adamk@chromium.org

No-Try: true
Change-Id: Idbb26eb9e68c7a81aed0e1c1b1d12d5de40d7c2e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1954395
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Reviewed-by: Adam Klein <adamk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65378}
2019-12-09 09:42:57 +00:00
Zhang, Shiyu
3b7535636f Reland "[runtime] Cache prototype chain enumerable keys in PrototypeInfo"
This is a reland of 5253d7bf15

Original change's description:
> [runtime] Cache prototype chain enumerable keys in PrototypeInfo
> 
> This CL adds a prototype_chain_enum_cache to cache the enumeration of a
> prototype and its entire chain on the PrototypeInfo. It can improve for-in
> performance via simply merging the receiver enumeration with this cache.
> 
> It improves the score of JetStream2-tagcloud-SP case by ~9% on IA Chromebook.
> 
> Contributed by tao.pan@intel.com
> 
> Change-Id: Ib40bfe41e772672337155584672f06fa1ba1e70d
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1870844
> Commit-Queue: Shiyu Zhang <shiyu.zhang@intel.com>
> Reviewed-by: Toon Verwaest <verwaest@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#65224}

Change-Id: I93b74727c46abbaab163324c50fbd977fcc9bb36
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1955232
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Shiyu Zhang <shiyu.zhang@intel.com>
Cr-Commit-Position: refs/heads/master@{#65377}
2019-12-09 06:40:56 +00:00
v8-ci-autoroll-builder
118b23602f Update V8 DEPS.
Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/51a024f..c3cb105

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

Change-Id: I8a81064241961d90f3d9c4dce490a90d060eeb49
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1955990
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@{#65376}
2019-12-09 03:41:36 +00:00
v8-ci-autoroll-builder
63da8397bc Update V8 DEPS.
Rolling v8/build: 35a759a..4f02786

Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/447ab8a..51a024f

Rolling v8/third_party/depot_tools: fe18a43..6b52dc2

Rolling v8/tools/clang: d1940b1..57e481c

Rolling v8/tools/luci-go: git_revision:7d11fd9e66407c49cb6c8546a2ae45ea993a240c..git_revision:37a855b64d59b7f079c9a0e5368f2757099d14d3

Rolling v8/tools/luci-go: git_revision:7d11fd9e66407c49cb6c8546a2ae45ea993a240c..git_revision:37a855b64d59b7f079c9a0e5368f2757099d14d3

Rolling v8/tools/luci-go: git_revision:7d11fd9e66407c49cb6c8546a2ae45ea993a240c..git_revision:37a855b64d59b7f079c9a0e5368f2757099d14d3

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

Change-Id: Ie906df3d577d1b5de1e520d2ac9b1a50d08c68dd
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1955988
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@{#65375}
2019-12-07 03:48:14 +00:00
Anton Bikineev
39cbe0a86d [heap] Bail out from incremental marking in embedder-tracer
This fixes DCHECK build with --noincremental-marking flag.

Change-Id: If1e8f9ec09bd91e628c3e92bbcd40f6960473f5b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1955598
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Anton Bikineev <bikineev@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65374}
2019-12-06 21:20:13 +00:00
David Carlier
230b339f5e Add a null check for the slot argument of the TraceReference constructor
This check is useful for preventing a segfault upon usage of this argument.

Change-Id: I3cc77f84d7e3ca2a96ec36a50bddb9c2eadeb62f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1946336
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65373}
2019-12-06 20:01:03 +00:00
Ross McIlroy
ea16055436 Print source position table when printing bytecode.
Change-Id: I9be7c10193553088b72b6303408636b4fea64f5c
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1955594
Reviewed-by: Dan Elphick <delphick@chromium.org>
Commit-Queue: Dan Elphick <delphick@chromium.org>
Auto-Submit: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65372}
2019-12-06 17:37:05 +00:00
Seth Brenith
5707469296 [torque] Add bitfield declarations
This change is the first part of adding Torque support for a "bitfield
struct", which represents a set of bitfields packed together into an
integer value. With this change, Torque can generate the list of
BitField template specializations that allow runtime code to use the
bitfield values. The flags used in SharedFunctionInfo are converted to
Torque to exercise this functionality. Bitfield values are not yet
accessible directly from Torque code.

Bug: v8:7793
Change-Id: I9e4a3df7c847111b6e02e513f175dbf938b0be35
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1949047
Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Reviewed-by: Nico Hartmann <nicohartmann@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65371}
2019-12-06 17:29:44 +00:00
Clemens Backes
31e9ebeea7 [Liftoff] Emit and test debug side table
This adds a method to generate the debug side table via Liftoff, and
adds first tests that check that the number of entries is as expected.
These tests will be extended in a follow-up CL to test the actual
content of the debug side table.

R=mstarzinger@chromium.org

Bug: v8:10019
Change-Id: I393ffabed3408463ffba232a66e2dffd7dd74f15
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1954390
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65370}
2019-12-06 16:26:56 +00:00
Dan Elphick
7cb7f77549 [tools] Add benchmark, browser, device and standard deviation options
Add --benchmark option to allow selecting a benchmark other
v8.browsing_desktop. If not using the default, the options to generate
v8 runtime call stats will be automatically added.

Adds --stdev option to calculate the standard deviation of the
results in the table.

Add --device and --browser option that are passed through to
run_benchmark.

Change-Id: I8c57c9eba7aea84108a2e3d4fdd098a7695cad53
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1955588
Reviewed-by: Mythri Alle <mythria@chromium.org>
Commit-Queue: Dan Elphick <delphick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65369}
2019-12-06 15:54:53 +00:00
Joshua Litt
bed702fa07 [promises] Port Promise.prototype.then to Torque.
Bug: v8:9838
Change-Id: Ib2741501330629a29c1f3fe4f4a93a73982ab4de
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1929400
Commit-Queue: Joshua Litt <joshualitt@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65368}
2019-12-06 15:18:34 +00:00
Anna Henningsen
406622277a [base] add missing <functional> include
The recently introduced usage of `std::logical_and` requires this.
This un-breaks building Node.js with the current V8 master branch
on FreeBSD.

Refs: https://chromium-review.googlesource.com/c/v8/v8/+/1940476
Refs: https://github.com/nodejs/node-v8/issues/124
Change-Id: Ic9d63c40e1b533f7f1c59a05f8577ee0bb0d6aa1
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1955584
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65367}
2019-12-06 15:15:33 +00:00
Igor Sheludko
17429d2b1d [builtins] Fix %TypedArray%.from builtin
... broken during porting to Torque here
https://chromium-review.googlesource.com/c/v8/v8/+/1891610

Bug: chromium:1028538
Bug: v8:8906
Bug: v8:4153
Change-Id: I0fb33299832964a1990e9e60a351aa88e246b3a3
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1955585
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Auto-Submit: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65366}
2019-12-06 13:36:43 +00:00
Deepti Gandluri
80bb70a25e [wasm] Remove Sign Extension flag, and helper functions
Change-Id: I607e9565e29b2159c1783cd58fb5a2e19c02b221
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1955524
Commit-Queue: Deepti Gandluri <gdeepti@chromium.org>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65365}
2019-12-06 13:14:44 +00:00
Clemens Backes
ac69dfa705 [wasm] Remove outdated TODO
Sign extension opcodes are already tested in the interpreter since
https://crrev.com/c/1083337, thus remove the obsolete TODO.

R=gdeepti@chromium.org

No-Try: true
Change-Id: I08323b9d43fa46d1fcf9965e5106a68767f695b5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1954400
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Deepti Gandluri <gdeepti@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65364}
2019-12-06 12:21:13 +00:00
Ulan Degenbaev
6816bc52d3 Remove the stack frame cache to avoid memory leaks
The cache adds a strong pointer from a code object to closures and
thus can leak arbitrary objects.

Bug: chromium:1030043
Tbr: yangguo@chromium.org
Change-Id: I8ce90119fa97eaea59d42e7fae5acd336b5fe5d9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1954392
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Simon Zünd <szuend@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65363}
2019-12-06 12:06:13 +00:00
Ng Zhi An
3f746ecfc3 [wasm-simd] Add some AVX codegen
Adds AVX codegen for f64x2 min, max, qfma, and qfms.

Bug: v8:9561
Change-Id: Id32ba8d4367e4f9b3cccea2bc7ce24dfb04ec188
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1950487
Reviewed-by: Deepti Gandluri <gdeepti@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65362}
2019-12-06 11:37:50 +00:00
Ng Zhi An
277381d85e Collate packed shift data instructions into macro list
Bug: v8:10021
Change-Id: Ibececfd23b852d7cecf609f6ae1a4b01ea8b55f6
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1950485
Reviewed-by: Deepti Gandluri <gdeepti@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65361}
2019-12-06 10:51:40 +00:00
Simon Zünd
f96f93128c Reland "Implement top-level await for REPL mode"
This is a reland of 5bddc0e142

The original CL was speculatively reverted as it was suspected to
cause failures on the non-determinism bot. This was ultimately
confirmed to not be the case, so this CL is safe to reland as-is.

Original change's description:
> Implement top-level await for REPL mode
>
> Design doc: bit.ly/v8-repl-mode
>
> This CL allows the usage of 'await' without wrapping code in an async
> function when using REPL mode in global evaluate. REPL mode evaluate
> is changed to *always* return a Promise. The resolve value of the
> promise is the completion value of the REPL script.
>
> The implementation is based on two existing mechanisms:
>   - Similar to async functions, the content of a REPL script is
>     enclosed in a synthetic 'try' block. Any thrown error
>     is used to reject the Promise of the REPL script.
>
>   - The content of the synthetic 'try' block is also re-written the
>     same way a normal script is. This is, artificial assignments to
>     a ".result" variable are inserted to simulate a completion
>     value. The difference for REPL scripts is, that ".result" is
>     used to resolve the Promise of the REPL script.
>
>   - ".result" is not returned directly but wrapped in an object
>     literal: "{ .repl_result: .result}". This is done to prevent
>     resolved promises from being chained and resolved prematurely:
>
>     > Promse.resolve(42);
>
>     should evaluate to a promise, not 42.
>
> Bug: chromium:1021921
> Change-Id: I00a5aafd9126ca7c97d09cd8787a3aec2821a67f
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1900464
> Reviewed-by: Yang Guo <yangguo@chromium.org>
> Reviewed-by: Leszek Swirski <leszeks@chromium.org>
> Reviewed-by: Toon Verwaest <verwaest@chromium.org>
> Commit-Queue: Simon Zünd <szuend@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#65273}

TBR: yangguo@chromium.org,verwaest@chromium.org
Bug: chromium:1021921
Change-Id: I95c5dc17593161009a533188f91b4cd67234c32f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1954388
Reviewed-by: Simon Zünd <szuend@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Simon Zünd <szuend@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65360}
2019-12-06 10:13:00 +00:00