Commit Graph

58157 Commits

Author SHA1 Message Date
Santiago Aboy Solanes
48de043bb7 [CSA] TNodified methods related to call and construct
Also TNodified context in interpreter-intrinsics-generator.cc

Bug: v8:6949
Change-Id: Ia5d5b4dd61aa83592f1c7e1b502f34504cb25dbd
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1784918
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Reviewed-by: Mythri Alle <mythria@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63615}
2019-09-09 12:34:12 +00:00
Clemens Hammacher
06cf78e570 [wasm] Inline test-only method
After https://crrev.com/c/1789294, the {AddAndPublishAnonymousCode} has
only a single caller, {AddCodeForTesting}. Thus inline the method there.

R=mstarzinger@chromium.org

Change-Id: I698b37baa55221b82ead0b0bb8205233693ffced
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1789703
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63614}
2019-09-09 12:28:12 +00:00
Jakob Kummerow
6cee783cd2 [wasm-c-api] Fix inefficiency in Global::get
Getting the type from the internal object avoids a costly allocation.
Not doing it this way all along was an oversight.

Change-Id: I22197cbb6ab2a68dd0faba78152e7cc2eb473e23
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1790102
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63613}
2019-09-09 12:11:52 +00:00
Clemens Hammacher
8703ac3a42 [gcmole] Propagate errors during test run
The bot that runs gcmole was failing before
https://crrev.com/c/1789707 because the test file was missing.
It returned with exit status 0 anyway though. After fixing the
original fault, this CL ensures that the gcmole tests also
trigger an error on the bot(s) if they fail.

R=mstarzinger@chromium.org
CC=​​mslekova@chromium.org

Change-Id: I29ae40301062baadfcd38b26c336c5749924b0d4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1789702
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63612}
2019-09-09 11:33:52 +00:00
Joshua Litt
d61dcb846c [protectors] Migrate TypedSpeciesArrayLookupChain protector
Migrates TypedSpeciesArrayLookupChain protector to the protectors
static class.

Bug: v8:9463
Change-Id: I6941f664557b463aecd0b57035b2fb741cdfe14d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1783846
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Joshua Litt <joshualitt@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63611}
2019-09-09 11:24:12 +00:00
Ulan Degenbaev
098189473a Reland "[heap] Reschedule concurrent marking tasks earlier"
This is a reland of b1c3ca2a71

Original change's description:
> [heap] Reschedule concurrent marking tasks earlier
> 
> Currently we reschedule concurrent marking tasks if all tasks finish.
> This is too conservative and we can improve performance by rescheduling
> finished tasks without waiting for all other tasks.
> 
> As a drive-by this also changes task_count_ to total_task_count_.
> 
> Change-Id: If0b3bd45ce6d52f6bcd0065dd8d3efe9ea84184a
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1789142
> Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
> Reviewed-by: Omer Katz <omerkatz@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#63593}

Change-Id: Id18bbb3cab85cd38bb7d2f21611825252ed4a1dc
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1789288
Reviewed-by: Omer Katz <omerkatz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63610}
2019-09-09 10:54:22 +00:00
Clemens Hammacher
3d6b692b46 [wasm] Remove support for no-embed builds
No-embed builds are deprecated since v7.4 and will successively be
removed soon.
These no-embed builds complicate the design of far jump tables, so
we stop to support this configuration now.

R=mstarzinger@chromium.org
CC=​​​szuend@chromium.org, jgruber@chromium.org, hablich@chromium.org

Bug: v8:8519, v8:9477
Change-Id: I6ab6f83019e7a182a50f4c599f3dd8c03aa2c02f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1789294
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Reviewed-by: Michael Hablich <hablich@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63609}
2019-09-09 10:36:32 +00:00
Clemens Hammacher
7c0375c59c [gcmole] Include gcmole-test.cc for bots
The bots currently fail to run the gcmole self tests, because the file
is not contained in the generated archive.
This CL fixes that.

R=mstarzinger@chromium.org
CC=mslekova@chromium.org

Change-Id: I691c207be1809516a5cc5e250287427674146a7e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1789707
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63608}
2019-09-09 10:34:32 +00:00
Dominik Inführ
c4d3e9bddb [heap] Remove size from invalidated slots
Slots are always valid inside an invalidated area when outside the
respective object's current size. This allows us to remove the size
from the InvalidatedSlots data structure.

This change was enabled by https://crrev.com/c/1771793. Reland after
revert in https://crrev.com/c/1783106, this CL was not the culprit
of the issue (chromium:1000404).

Bug: v8:9454
Change-Id: I823d34670515924bf74200daa21a834044087310
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1787431
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63607}
2019-09-09 08:45:33 +00:00
Dominik Inführ
eaa0bb4cb4 [heap] Ensure that all old-to-new slots are valid
Filtering was reverted in https://crrev.com/c/1773252 because of
chromium:998256, but this issue seems to be unrelated.

Bug: v8:9454
Change-Id: Ie266976c8fc664fe2a7395198a010307f5297f25
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1792163
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63606}
2019-09-09 08:44:25 +00:00
Tom Tan
8d10768442 Avoid defining class name Label as type alias in cctest because it is used by V8
It is not recommended to define type alias in C++ header file. cctest defines
type alias `using Label=CodeAssemblerLabel` in anonymous namespace under
namespace `v8::internal::compiler` in test-code-assembler.cc. This is fine
because this type alias is expected to take effect only in this .cc file. But in
jumbo build, multiple source files are combined as a single one, and the
previous `Label` type alias could shadow definition of `Label` from other header
file (for example, v8/src/codegen/label.h which is included by another .cc file)
This is totally unexpected and triggers bad class layout and accessing in the
latter .cc file for the places where `Label` is referenced.

This change fixes cctest from Windows ARM64 jumbo build, but it applies to
other architectures too.

Bug: chromium:893460
Change-Id: Ib2e9df76f6e3371b3940649668c5d13e6b36f028
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1788537
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Tom Tan <Tom.Tan@microsoft.com>
Cr-Commit-Position: refs/heads/master@{#63605}
2019-09-09 07:06:40 +00:00
Simon Zünd
1c024bac7a Remove source position wrangling for generator fns in ScopeIterator
ScopeIterator was changed to re-parse the whole script instead of
just a single function. The CL in question went through a few
iterations. At one point, it was necessary to wrangle the source
position of generator functions  to correctly identify their
closure scope. This is no longer necessary and this CL removes
the manual source position adjustment.

Change-Id: If1a61ed32a903997b70a62cd464198f3dffa385a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1792162
Auto-Submit: Simon Zünd <szuend@chromium.org>
Commit-Queue: Yang Guo <yangguo@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63604}
2019-09-09 06:28:30 +00:00
v8-ci-autoroll-builder
db22d8be7b Update V8 DEPS.
Rolling v8/third_party/depot_tools: 4ebfe46..efce0d1

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

Change-Id: I20fe4d684b2ee9a7c80fdc062147dc2489922c65
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1789616
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@{#63603}
2019-09-08 03:21:16 +00:00
Ross McIlroy
92178fbd03 [TurboProp] Introduce initial OptimizeGraphForMidTier pipeline.
Currently this is very similar to TurboFan's OptimizeGraph phase, but avoids
a number of passes to reduce optimization time. With time this will have more
differences.

BUG=v8:9684

Change-Id: Id416385e55fa52e1103fd103032c6db86c17f047
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1784295
Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63602}
2019-09-07 20:59:06 +00:00
v8-ci-autoroll-builder
a5ca20a022 Update V8 DEPS.
Rolling v8/build: 031af13..6ff11c8

Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/52c5d30..fcd6915

Rolling v8/third_party/depot_tools: 208e343..4ebfe46

Rolling v8/third_party/googletest/src: 565f1b8..3f05f65

Rolling v8/third_party/instrumented_libraries: b1c3ca2..e289777

Rolling v8/tools/clang: 56e3b98..51c4acf

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

Change-Id: I8ff99937a6e5aa70ebbc57c2dac0579dd417e7ad
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1789604
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@{#63601}
2019-09-07 04:09:10 +00:00
Thibaud Michaud
1904dd69ea [wasm] Fix background compilation thread in predictable mode
GetMaxBackgroundTasks should return 0 in predictable mode, since
compilation is done in the foreground.

R=clemensh@chromium.org

Change-Id: I4a617cadb53ca91ee21e40c46a93d54e2a1ceb8b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1789301
Commit-Queue: Thibaud Michaud <thibaudm@chromium.org>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63600}
2019-09-06 16:20:43 +00:00
Swapnil Gaikwad
ffa9f163e6 Reland "Update GetIterator bytecode to load and call object[Symbol.iterator]"
This is a reland of 8b89a7c32d

Reland after disabling the test getting deadlocked with '--gc_stress' flag.
The CL was reverted because of the 'wasm/grow-shared-memory' test from
the mjsunit test suite deadlocked for the 'gc_stress' variant. This is
the known issue (v8:9221) and the deadlocking test is now disabled (
1c8981e3f4).


Original change's description:
> Update GetIterator bytecode to load and call object[Symbol.iterator]
>
> The functionality of the GetIterator bytecode introduced previously is
> now extended from loading the @@iterator property to calling the property
> as well. This change basically absorbs the functionality of additional
> two bytecodes - Star, CallProperty0 in the GetIterator bytecode.
> Importantly, this change handles the cases of eager and lazy deoptimization
> in the middle of the bytecode, i.e., lazy deopt for LdaNamedProperty and
> eager deopt of the CallProperty0 bytecode, using the continuation builtins.
> This mechanism can work as a template for the future bytecode that require
> handling such inter-bytecode deopt scenario. The tests evaluating the eager
> and lazy deopt scenarios are also included.
>
> Bug: v8:9489
> Change-Id: I93eb022bbc3d37582407820aa8482a343cac6c12
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1758313
> Commit-Queue: Swapnil Gaikwad <swapnilgaikwad@google.com>
> Reviewed-by: Leszek Swirski <leszeks@chromium.org>
> Reviewed-by: Georg Neis <neis@chromium.org>
> Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#63528}

Bug: v8:9489,v8:9221
Change-Id: I4286255aef457bfdbbe5eb50fc6dabdf9c0955b1
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1787427
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Swapnil Gaikwad <swapnilgaikwad@google.com>
Cr-Commit-Position: refs/heads/master@{#63599}
2019-09-06 13:44:12 +00:00
Peter Marshall
9953305155 Reland "[tracing] Roll perfetto @ 28b633cd"
This is a reland of 096d9c5663

Fixed DEPS files which were not caught by presubmit trybot

Original change's description:
> [tracing] Roll perfetto @ 28b633cd
>
> This catches up with [1] that make the proto include path
> relative to the project root rather than ./protos/
>
> [1] https://android-review.googlesource.com/c/platform/external/perfetto/+/1108421
>
> Cq-Include-Trybots: luci.v8.try:v8_linux64_perfetto_dbg_ng
> Bug: v8:8339
> Change-Id: I1f2dec93120142ea61cee864e4bf76a6947d958d
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1776088
> Reviewed-by: Peter Marshall <petermarshall@chromium.org>
> Reviewed-by: Tamer Tas <tmrts@chromium.org>
> Commit-Queue: Primiano Tucci <primiano@chromium.org>
> Auto-Submit: Primiano Tucci <primiano@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#63584}

Bug: v8:8339
Change-Id: I70e8b2d4520c620d02d5251d14bd61b90fb1d73f
Cq-Include-Trybots: luci.v8.try:v8_linux64_perfetto_dbg_ng
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1789143
Commit-Queue: Peter Marshall <petermarshall@chromium.org>
Reviewed-by: Tamer Tas <tmrts@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63598}
2019-09-06 13:42:02 +00:00
Swapnil Gaikwad
1c8981e3f4 [wasm] Disable wasm/grow-shared memory test for gc_stress variants
Disable the 'wasm/grow-shared-memory' test from the mjsunit test suite for
all the 'gc_stress' variants. The test is currently disabled only for
executions with the combination of 'gc_stress' and 'slow_path'.
With the --gc-stress flag enabled, the test time outs as a result of
deadlock or fails with the DCHECK error because of the known issue.

Bug: v8:9221
Change-Id: Ia2cbbb6f1e5678e5583176fcdd557bd8760234e2
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1789290
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Swapnil Gaikwad <swapnilgaikwad@google.com>
Cr-Commit-Position: refs/heads/master@{#63597}
2019-09-06 12:33:22 +00:00
Clemens Hammacher
9667b17b05 [liftoff] Use C++14 constexpr switch
Since C++14, we can use a switch in a constexpr function.

R=ahaas@chromium.org

Bug: v8:9686, v8:9687
Change-Id: I082a7be6c54d6c705b678f19aa56bdb7a3313f80
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1786284
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63596}
2019-09-06 11:23:22 +00:00
Clemens Hammacher
7fd9999fef [gcmole] Switch to C++14
Since we do not support gcc < 5 any more, we can switch to C++14 now.
Gcmole is the only tool preventing this currently.

R=mstarzinger@chromium.org

Bug: v8:9687, v8:9690
Change-Id: Ie7fee25061bdf6f1e7f156bc150b7142c824f5d1
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1787426
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63595}
2019-09-06 11:03:53 +00:00
Clemens Hammacher
f5cdcafc22 Revert "[heap] Reschedule concurrent marking tasks earlier"
This reverts commit b1c3ca2a71.

Reason for revert: TSan issues: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20TSAN/28147

Original change's description:
> [heap] Reschedule concurrent marking tasks earlier
> 
> Currently we reschedule concurrent marking tasks if all tasks finish.
> This is too conservative and we can improve performance by rescheduling
> finished tasks without waiting for all other tasks.
> 
> As a drive-by this also changes task_count_ to total_task_count_.
> 
> Change-Id: If0b3bd45ce6d52f6bcd0065dd8d3efe9ea84184a
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1789142
> Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
> Reviewed-by: Omer Katz <omerkatz@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#63593}

TBR=ulan@chromium.org,omerkatz@chromium.org

Change-Id: I5e6b406a021c8fd4834e346e02388552ee3e0036
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1789287
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63594}
2019-09-06 10:57:24 +00:00
Ulan Degenbaev
b1c3ca2a71 [heap] Reschedule concurrent marking tasks earlier
Currently we reschedule concurrent marking tasks if all tasks finish.
This is too conservative and we can improve performance by rescheduling
finished tasks without waiting for all other tasks.

As a drive-by this also changes task_count_ to total_task_count_.

Change-Id: If0b3bd45ce6d52f6bcd0065dd8d3efe9ea84184a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1789142
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Omer Katz <omerkatz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63593}
2019-09-06 10:07:22 +00:00
Simon Zünd
888eeccd30 Re-parse the whole script on debug evaluate
This CL changes the {ScopeIterator} to re-parse the whole script instead
of just the immediate function. The result are accurate parent scopes,
which will enable better variable lookup for debug evaluation.

Drive-by: Remove unused IGNORE_NESTED_SCOPES ScopeIterator::Option and
refactor ScopeIteartor::Next.

Change-Id: I6cb9d303fe5f84da4f4b11c6e2057f07c232316c
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1771785
Reviewed-by: Yang Guo <yangguo@chromium.org>
Reviewed-by: Simon Zünd <szuend@chromium.org>
Commit-Queue: Simon Zünd <szuend@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63592}
2019-09-06 09:19:33 +00:00
Clemens Hammacher
6cf9cb492c [wasm][arm64] Optimize runtime stub slots
This reduces the size per runtime stub slot by using the same sequence
we plan to use for far jumps.
Note that alignment is not an issue here, since runtime stub slots are
never patched.

R=mstarzinger@chromium.org
CC=joey.gouly@arm.com

Bug: v8:9477
Change-Id: I38666c8fce93a977bc5b9ca5fafc54f6ae739f12
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1784293
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63591}
2019-09-06 09:01:58 +00:00
Maya Lekova
ff0a0575d5 [turbofan] Remove remaining heap accesses from pipeline
Bug: v8:7790
Change-Id: Id213800587f08df544bea4f9fca7460d136baeb5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1786280
Commit-Queue: Maya Lekova <mslekova@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63590}
2019-09-06 08:09:38 +00:00
Maya Lekova
4253936c59 [turbofan] Clean-up the heap copy reducer phase
Bug: v8:7790
Change-Id: I798555bb6fbbee2ce2a3dc4bb22a84ff881792f0
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1784294
Reviewed-by: Georg Neis <neis@chromium.org>
Commit-Queue: Maya Lekova <mslekova@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63589}
2019-09-06 08:06:49 +00:00
v8-ci-autoroll-builder
3aa21bbb3b Update V8 DEPS.
Rolling v8/build: e030d8a..031af13

Rolling v8/third_party/android_ndk: https://chromium.googlesource.com/android_ndk/+log/6258275..89e8db0

Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/06605b0..52c5d30

Rolling v8/third_party/depot_tools: 624bf6e..208e343

Rolling v8/tools/clang: 2fef805..56e3b98

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

Change-Id: I58a44985730b1c1c2865e5552303c8b835b43390
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1786034
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@{#63588}
2019-09-06 03:58:27 +00:00
Zhang, Shiyu
a2e86bf6dc [runtime] Do not add shadowing key for end prototype
Shadowing key is used to exclude non-enumerable keys when iterating
over the prototype chain. This CL skips adding shadowing key for
end prototype to improve for-in performance. It can improve the
performance of below microbench by ~50%.

Object.prototype.foo = function() {};
let obj = {
	a:0,
	b:1
};
let start = Date.now();
for (let i = 0; i<1e6; i++) {
	for (var j in obj) {}
}
console.log(Date.now() - start);

This CL also improves the score of JetStream2-tagcloud-SP case
by 8% on IA Chromebook.

Contributed by tao.pan@intel.com

Change-Id: I456082c08bf70f1f450ff54f657cdab26eb7bc2b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1781113
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Shiyu Zhang <shiyu.zhang@intel.com>
Cr-Commit-Position: refs/heads/master@{#63587}
2019-09-06 01:51:57 +00:00
Shu-yu Guo
a3c7e96891 [class] Fix private name scope chain
Expressions in class heritage position do not have access to the
inheriting class's private names, only its lexical bindings. The parser
currently uses the same scope chain for both.

This CL makes scopes in class heritage position skip their outer class
when resolving private names. Whether a scope needs to skip is kept as a
bit on various scope-related data structures.

See implementation doc at
https://docs.google.com/document/d/1d3o_SQqcICxfjLMw53OOaiIQux0ppNHQJnjZHtCQLwA

Bug: v8:9177
Change-Id: I77e491a9d4a261131274f12ddf052af7ac31a921
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1769486
Commit-Queue: Shu-yu Guo <syg@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Mathias Bynens <mathias@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63586}
2019-09-06 00:52:07 +00:00
Santiago Aboy Solanes
9a9ea23055 Revert "[tracing] Roll perfetto @ 28b633cd"
This reverts commit 096d9c5663.

Reason for revert: Broke presubmit https://ci.chromium.org/p/v8/builders/ci/V8%20Presubmit/6371

Original change's description:
> [tracing] Roll perfetto @ 28b633cd
> 
> This catches up with [1] that make the proto include path
> relative to the project root rather than ./protos/
> 
> [1] https://android-review.googlesource.com/c/platform/external/perfetto/+/1108421
> 
> Cq-Include-Trybots: luci.v8.try:v8_linux64_perfetto_dbg_ng
> Bug: v8:8339
> Change-Id: I1f2dec93120142ea61cee864e4bf76a6947d958d
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1776088
> Reviewed-by: Peter Marshall <petermarshall@chromium.org>
> Reviewed-by: Tamer Tas <tmrts@chromium.org>
> Commit-Queue: Primiano Tucci <primiano@chromium.org>
> Auto-Submit: Primiano Tucci <primiano@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#63584}

TBR=primiano@chromium.org,petermarshall@chromium.org,tmrts@chromium.org

Change-Id: I3ff6afa58869399b2a352cd489acdd2894ef138c
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:8339
Cq-Include-Trybots: luci.v8.try:v8_linux64_perfetto_dbg_ng
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1787433
Reviewed-by: Santiago Aboy Solanes <solanes@chromium.org>
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63585}
2019-09-05 17:23:02 +00:00
Primiano Tucci
096d9c5663 [tracing] Roll perfetto @ 28b633cd
This catches up with [1] that make the proto include path
relative to the project root rather than ./protos/

[1] https://android-review.googlesource.com/c/platform/external/perfetto/+/1108421

Cq-Include-Trybots: luci.v8.try:v8_linux64_perfetto_dbg_ng
Bug: v8:8339
Change-Id: I1f2dec93120142ea61cee864e4bf76a6947d958d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1776088
Reviewed-by: Peter Marshall <petermarshall@chromium.org>
Reviewed-by: Tamer Tas <tmrts@chromium.org>
Commit-Queue: Primiano Tucci <primiano@chromium.org>
Auto-Submit: Primiano Tucci <primiano@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63584}
2019-09-05 16:09:09 +00:00
Clemens Hammacher
fba03abcfa Correctly handlify two frame {Summarize} methods
{JavaScriptFrame::GetParameters} allocates a new {FixedArray}, hence
all object references need to be handified to survive that allocation.

R=mstarzinger@chromium.org

Bug: chromium:1000635
Change-Id: I76df5ac109bdb6999fe897bdafaf2175344ecca4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1787429
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63583}
2019-09-05 15:42:59 +00:00
Leszek Swirski
470e68570e Reland^2 "[ic] In-place Double -> Tagged transitions""
This is a reland of 981aafaf97

It adds double checks to LoadFieldByIndex in the optimizing compiler, which
are likely the source of the crashes.

Original change's description:
> Reland "[ic] In-place Double -> Tagged transitions"
>
> This is a reland of 0736599a69.
> This is a reland of 7e1fbe8f34.
>
> Original change description:
> > [ic] In-place Double -> Tagged transitions
> >
> > With no more MutableHeapNumber, we can make Double -> Tagged transitions
> > in-place, at the cost of an extra map check when accessing double fields
> > to make sure they are still doubles.
> >
> > Bug: v8:9606
> > Change-Id: I74ff39ed6fba62ee223cd37dfe761f7d73020e1c
> > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1743973
> > Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
> > Reviewed-by: Toon Verwaest <verwaest@chromium.org>
> > Commit-Queue: Leszek Swirski <leszeks@chromium.org>
> > Cr-Commit-Position: refs/heads/master@{#63374}
>
> TBR=verwaest@chromium.org, tebbi@chromium.org
>
> Bug: v8:9606
> Change-Id: I2d1b7416064d743582f4983fb868316b7e8a4cf2
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1777661
> Reviewed-by: Leszek Swirski <leszeks@chromium.org>
> Commit-Queue: Leszek Swirski <leszeks@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#63499}

TBR=verwaest@chromium.org

Bug: v8:9606
Bug: chromium:997989
Change-Id: Iccfff8e5c6306c9ee4f6c62767dce883b1c6f743
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1784288
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Auto-Submit: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63582}
2019-09-05 15:20:19 +00:00
Joshua Litt
8c79beadbf Reland "[regexp] Implement the match indices proposal"
Implements match indices for regexp, as specified by
https://github.com/tc39/proposal-regexp-match-indices,
a stage 3 TC39 proposal. This implementation is hidden
behind the '--harmony-regexp-match-indices' flag.

Regexp match indices extends the JSRegExpResult object
with an array of indices of matches, as well as a
dictionary of capture names to match indices.

Bug: v8:9548
Change-Id: Ia9efcee00d997dda6158539b8d0f4c4e5965e5e7
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1771379
Commit-Queue: Joshua Litt <joshualitt@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63581}
2019-09-05 15:13:39 +00:00
Santiago Aboy Solanes
6192ecb0d1 [CSA] TNodify methods related to stores and loads
Bug: v8:6949
Change-Id: I8f0de9e202f41c78e24c4d73c54b198a52122dac
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1784296
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Reviewed-by: Mythri Alle <mythria@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63580}
2019-09-05 14:45:34 +00:00
Dan Elphick
a35a705983 [parser] Don't mark const variables as assigned
Since const variables are  immutable, ignore SetMaybeAssigned for them.

Bug: chromium:999450, chromium:1000170, v8:8510
Change-Id: Idc1b71677b3d03bb63cc025017c119710b8f392d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1782170
Commit-Queue: Dan Elphick <delphick@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63579}
2019-09-05 14:44:29 +00:00
Santiago Aboy Solanes
9a6f23c258 [CSA] TNodified methods related to Jump
TNodified:
 * Jump (both versions)
 * JumpBackward
 * JumpIfTaggedEqual
 * JumpIfTaggedNotEqual
 * JumpConditional
 * LoadOsrNestingLevel

Removed slopiness from Advance's parameter.

Renamed "delta" to jump_offset for JumpXXX arguments. They were called
jump_offset in .h and delta in .cc.

Bug: v8:6949
Change-Id: I6b34391dcb2ee881670d04edac9382258f6bcb51
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1782821
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63578}
2019-09-05 13:49:39 +00:00
Santiago Aboy Solanes
ff24879ae8 [CSA] TNodify dispatch, RegisterFile and context methods
TNodified:
 * code-assembler
   * TailCallBytecodeDispatch
 * interpreter-assembler
   * GetContextAtDepth
   * ExportParametersAndRegisterFile
   * ImportRegisterFile
   * Dispatch
   * DispatchToBytecode
   * DispatchToBytecodeHandlerEntry
   * DispatchWide
   * return type of Jump (Jumps are coming in another CL)
   * LoadBytecode

Removed DispatchToBytecodeHandler since it was unused.
Removed target_bytecode parameter of DispatchToBytecodeHandlerEntry
since it was unused.

Bug: v8:6949
Change-Id: Icd3ded28cc1fd1dc528219dd83cf646e67c9b878
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1782838
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63577}
2019-09-05 13:34:39 +00:00
Santiago Aboy Solanes
f56b923665 [CSA] TNodify Bytecode operands and constant pool loading
TNodified from interpreter-generator:
 * SwitchOnSmiNoFeedback
 * CreateFunctionContext
 * CreateEvalContext
 * SwitchOnGeneratorState
since they were using some of the interpreter-assembler now TNodified
methods.

Bug: v8:6949
Change-Id: I0055100428232e8bdc79cb4356954bac52f4a30d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1781689
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63576}
2019-09-05 12:14:59 +00:00
Andreas Haas
69719dd42b Reland [wasm] Stage wasm-bigint
There was no problem with the original CL. I just had a problem with
my local git branches.

Original message:

The implementation on wasm-bigint has been done, as far as I can tell.
There are no spec tests yet, only an out-dated copy of the original
spec tests which don't pass anymore. Therefore I disabled all the tests
for now and created a tracking bug at https://crbug.com/v8/9673.

TBR=adamk@chromium.org

Bug: v8:7741, v8:9673
Change-Id: Ida7ccda4547cf3fdcdff151d8b02946b7aa534ca
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1787420
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63575}
2019-09-05 12:02:19 +00:00
Michael Hablich
e20a95d119 Bump V8 version
TBR=machenbach@chromium.org
NOTRY=true

Change-Id: I2873acd03b9673dedf587d21e35101ad163fd580
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1787425
Commit-Queue: Michael Hablich <hablich@chromium.org>
Reviewed-by: Michael Hablich <hablich@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63574}
2019-09-05 11:54:39 +00:00
Santiago Aboy Solanes
a917b1cb93 [CSA] TNodify the rest of the member variables in interpreter assembler
TNodify related methods:
 * BytecodeArrayTaggedPointer
 * DispatchTablePointer (renamed from DispatchTableRawPointer)
 * GetAccumulatorUnchecked

SloppyTNodify SetAccumulator's argument.

Marking some tests as slow, due to TNodification.

Bug: v8:6949
Change-Id: I3a56c47247828ec1313ce69ce76064efedf57776
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1782162
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63573}
2019-09-05 11:49:59 +00:00
Clemens Hammacher
26b3649695 [base] Remove special-casing for gcc < 5
Node now requires gcc >=6.3, and we do not test on gcc <5.4 any more.
Thus remove a special case for gcc <5.

R=machenbach@chromium.org

Bug: v8:9686
Change-Id: Ifffddec611c15b704aa292a65e87cd770d85ea7b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1786283
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63572}
2019-09-05 11:46:44 +00:00
Michael Achenbach
00061793b0 [build] Lift c++11 restriction
Bug: v8:9687
Change-Id: Ia9e82e1565d2dca595f5a231281d415f423b3421
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1787421
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63571}
2019-09-05 11:40:35 +00:00
Tobias Tebbi
9ce6792630 [turbofan] temporarily disable const-based load elimination
This is a safe to merge hot-fix to tackle https://crbug.com/983764.
To be reverted after merging to M77.

Bug: chromium:983764
Change-Id: I3cd27481f224b352ef6bcf9dde21a8f77616acff
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1786285
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63570}
2019-09-05 11:36:45 +00:00
Clemens Hammacher
029e8ab9b0 [base] Remove hack for gcc < 5
Node now requires gcc >=6.3, and we do not test on gcc <5.4 any more.
Thus remove a hack for gcc <5.

R=machenbach@chromium.org

Bug: v8:9686
Change-Id: I503c6b76d40499bbe45fb83996e0dfebf86f3395
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1786281
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63569}
2019-09-05 10:56:44 +00:00
Michael Starzinger
b096eb5552 [wasm] Avoid reserving buffer if no memory declared.
This makes sure no underlying ArrayBuffer is reserved for modules that
don't declare a module. For the case where a memory is declared but the
initial size is 0, we still reserve a buffer in case of trap handlers.

R=ahaas@chromium.org
BUG=v8:9678

Change-Id: I837b8f257b63eb4111646806b899074babd7c9f7
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1784290
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63568}
2019-09-05 10:08:24 +00:00
Clemens Hammacher
89115625a0 [wasm][arm] Optimize runtime stub slots
This reduces the size per runtime stub slot by using the same sequence
we plan to use for far jumps.
Note that alignment is not an issue here, since runtime stub slots are
never patched.

R=mstarzinger@chromium.org
CC=joey.gouly@arm.com

Bug: v8:9477
Change-Id: Ib8f0f7b4930617b9c16dc54f6773572c70b681c4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1784292
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63567}
2019-09-05 09:48:04 +00:00
Ross McIlroy
719bc030c0 [Compiler] Use existing inferred name when adding preparse data to SFI.
The inferred name in the function literal might not be as accurate as the one
already on the shared function info, so use the existing one instead.

BUG=chromium:995813

Change-Id: Ie06eb964934fc039e56ebf9452f706e1192b7ab0
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1782169
Auto-Submit: Ross McIlroy <rmcilroy@chromium.org>
Commit-Queue: Dan Elphick <delphick@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Dan Elphick <delphick@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63566}
2019-09-05 09:46:34 +00:00