Commit Graph

53926 Commits

Author SHA1 Message Date
Michael Starzinger
eb69c7da2c [wasm] Simplify exceptional continuation in interpreter.
This unifies how continuations after a control transfer are handled
within the interpreter loop. To avoid bumping the {pc} we can either
reset the opcode length to zero or just "continue" the loop. This just
unifies the approach for the entire {Execute} method.

R=clemensh@chromium.org

Change-Id: Ifc33c3a87cff69d417f61fa0bc234260c7fa502a
Reviewed-on: https://chromium-review.googlesource.com/c/1458216
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59434}
2019-02-07 12:18:02 +00:00
Ulan Degenbaev
4c65986a44 [heap] Rework incremental marking scheduling
The new scheduling reduces the main thread marking performed in
tasks and on allocation. It is based on two counters:
- bytes_marked,
- scheduled_bytes_to_mark.

The bytes_marked accounts marking done both the main thread and
the concurrent threads. The scheduled_bytes_to_mark increases based
on allocated bytes and also based on time passed since the start
of marking. The main thread steps are allowed to mark the minimal
amount if bytes_marked is greater than scheduled_bytes_to_mark.

This also changes tasks posted for marking. Before only normal
tasks were posted. Now delayed tasks are posted if the marker is
ahead of schedule.

Bug: 926189

Change-Id: I5bc9c33a5ecfc9f8d09f78d08ae277d16a2779ca
Reviewed-on: https://chromium-review.googlesource.com/c/1443056
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59433}
2019-02-07 11:40:41 +00:00
Maciej Goszczycki
54a1889585 [heap] Make ReadOnlySpace fully read-only
Up until now the first page of ReadOnlySpace was not read-only.
Changing this means that the space needs to be made writable before
PagedSpace's TearDown tries to free it.

Bug: v8:7464
Change-Id: I162b45b662a6e5ab61a35be280ef087375fdcc9b
Reviewed-on: https://chromium-review.googlesource.com/c/1454494
Reviewed-by: Dan Elphick <delphick@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Maciej Goszczycki <goszczycki@google.com>
Cr-Commit-Position: refs/heads/master@{#59432}
2019-02-07 11:35:03 +00:00
Tobias Tebbi
f9e5a7bbc1 [torque] avoid dangerous == overloads with WordEqual
Bug: v8:7793 v8:8737
Change-Id: I186cb33eb2e84a47fcb0897978bde9c6dffb9df3
Reviewed-on: https://chromium-review.googlesource.com/c/1456044
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59431}
2019-02-07 11:18:30 +00:00
Ulan Degenbaev
cbcbb05971 [heap] Fix tests for young large objects
Some tests assume that kMaxRegularHeapObjectSize is close to the
page size. They break if the constant is decreased to 16KB to stress
young large objects.

Bug: chromium:852420
Change-Id: I2542878810823f7a73019b1e451a080fcfc1f78f
Reviewed-on: https://chromium-review.googlesource.com/c/1456043
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59430}
2019-02-07 11:01:20 +00:00
Michael Starzinger
0999709cf2 [wasm] Add test for handling "unreachable" trap.
This adds a test case to check consistency of how an "unreachable" trap
is handled by a surrounding "try" block in case those two operations are
in different functions (i.e. not local to one function body). It also
fixes a DCHECK for an as-of-yet untested interpreter state transition.

R=clemensh@chromium.org
TEST=cctest/test-run-wasm-exceptions
BUG=v8:8729

Change-Id: I432c48d0bc664f7ab092aaafef6dfa29c5f262fd
Reviewed-on: https://chromium-review.googlesource.com/c/1454605
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59429}
2019-02-07 10:41:00 +00:00
Jakob Gruber
b3726e9041 Tentatively align on all platforms in embedded builtins
We've recently run into several platform- and compiler-specific errors
and warnings about alignment. This tentatively implements
AlignToDataAlignment for all platforms, which is used when setting up
the

 v8_Default_embedded_blob_
 v8_Default_embedded_blob_size_

variables.

Bug: v8:6666,chromium:929205
Change-Id: I0cee09eda71551f8b7d14f4076da496057023146
Reviewed-on: https://chromium-review.googlesource.com/c/1458018
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59428}
2019-02-07 10:26:06 +00:00
deepak1556
9e060e47c6 DISALLOW_IMPLICIT_CONSTRUCTORS for MacroAssembler
When BUILDING_V8_SHARED in release builds __declspec(dllexport)
causes generation of implicit constructors in the forwarding class
while its deleted in TurboAssemblerBase, which leads to compilation
errors like:

In file included from gen/v8/v8_base_jumbo_6.cc:41:
In file included from .\../../v8/src/interface-descriptors.cc:7:
In file included from ../../v8\src/macro-assembler.h:40:
../../v8\src/x64/macro-assembler-x64.h(92,9):  error: call to deleted constructor of 'v8::internal::TurboAssemblerBase'
      : TurboAssemblerBase(std::forward<Args>(args)...) {}
        ^                  ~~~~~~~~~~~~~~~~~~~~~~~~
../../v8\src/x64/macro-assembler-x64.h(536,25):  note: in instantiation of function template specialization 'v8::internal::TurboAssembler::TurboAssembler<v8::internal::TurboAssembler>' requested here
class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
                        ^
../../v8\src/turbo-assembler.h(127,34):  note: 'TurboAssemblerBase' has been explicitly marked deleted here
  DISALLOW_IMPLICIT_CONSTRUCTORS(TurboAssemblerBase);
                                 ^
1 error generated.

The original changes were made in https://chromium-review.googlesource.com/c/v8/v8/+/1414913

R=mstarzinger@chromium.org,jgruber@chromium.org,clemensh@chromium.org

Bug: NONE
Change-Id: I87a5a678b8bae13b3adc6f1c6ac0b9313ed18d85
Reviewed-on: https://chromium-review.googlesource.com/c/1454676
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59427}
2019-02-07 09:21:34 +00:00
v8-ci-autoroll-builder
30009955a1 Update V8 DEPS.
Rolling v8/build: 85b07e9..e148b4c

Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/4fbc755..11e283f

Rolling v8/third_party/depot_tools: 67d70d2..61d0c29

Rolling v8/tools/clang: 215c4a1..1dc7541

TBR=machenbach@chromium.org,hablich@chromium.org,sergiyb@chromium.org

Change-Id: I578f4f74f4231faa0b959eb176d5f6c31f578437
Reviewed-on: https://chromium-review.googlesource.com/c/1457607
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@{#59426}
2019-02-07 03:54:33 +00:00
Frank Tang
011739b10d [Intl] Improve Intl constructor performance
Lazy initialize some data once.

$ python -u tools/run_perf.py --binary-override-path   out/x64.release/d8 --filter "JSTests/Intl"   test/js-perf-test/JSTests.json
INFO      >>> Running suite: JSTests/Intl
INFO      >>> Stdout (#1):
NewIntlCollator-Intl(Score): 2047
NewIntlDateTimeFormat-Intl(Score): 26.5
NewIntlNumberFormat-Intl(Score): 449
NewIntlPluralRules-Intl(Score): 670
NewIntlListFormat-Intl(Score): 1762
NewIntlRelativeTimeFormat-Intl(Score): 918


Compare to performance baseline scores in
https://chromium-review.googlesource.com/c/v8/v8/+/1455717

Bug: chromium:928098
Change-Id: I7f213f50eb261474fb38d9592725a101939020d8
Reviewed-on: https://chromium-review.googlesource.com/c/1455727
Commit-Queue: Frank Tang <ftang@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59425}
2019-02-07 03:10:23 +00:00
Frank Tang
151a0afb34 [Intl] Add perf test for Intl constructors
Just add tests so we can observe the number first.

Got the following results
$ python -u tools/run_perf.py --binary-override-path   out/x64.release/d8 --filter "JSTests/Intl"   test/js-perf-test/JSTests.json
INFO      >>> Running suite: JSTests/Intl
INFO      >>> Stdout (#1):
NewIntlCollator-Intl(Score): 161
NewIntlDateTimeFormat-Intl(Score): 9.73
NewIntlNumberFormat-Intl(Score): 18.6
NewIntlPluralRules-Intl(Score): 18.5
NewIntlListFormat-Intl(Score): 19.4
NewIntlRelativeTimeFormat-Intl(Score): 18.7

Bug: chromium:928098
Change-Id: I59f28393af8f868de639dcb81a7b2f69ce2f0eba
Reviewed-on: https://chromium-review.googlesource.com/c/1455717
Commit-Queue: Frank Tang <ftang@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59424}
2019-02-07 01:08:12 +00:00
Sigurd Schneider
e3637a7c0c [assembler] Move RelocInfo::Visit to reloc-info.h
This unifies the RelocInfo::Visit method across architectures.

Bug: v8:8562
Change-Id: I36fdfb2f456aebb4d69977bb84727c9b49b22f69
Reviewed-on: https://chromium-review.googlesource.com/c/1456106
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59423}
2019-02-06 17:35:58 +00:00
Ulan Degenbaev
a02eac53fc [heap] Limit the capacity of the young large object space
For the initial implementation we simply keep the capacity of
the young large object space in sync with the capacity of the
new space. The only subtlety is that we allow at least one
large object independent from its size. So it may exceed the
capacity of the space.

This also fixes setting of the large page flags for incremental
marking.

Bug: chromium:852420
Change-Id: I12a9d4a7350464ca291710917ecad782ae73b8e1
Reviewed-on: https://chromium-review.googlesource.com/c/1456092
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59422}
2019-02-06 17:31:09 +00:00
Sigurd Schneider
2f2f0724fe Revert "Ship constant field tracking"
This reverts commit 78ed0e3fdb.

Reason for revert: Weird breakage on 
https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux64%20GC%20Stress%20-%20custom%20snapshot/24063

Two tests should not run on GC stress, but this one is really curious:
https://logs.chromium.org/logs/v8/buildbucket/cr-buildbucket.appspot.com/8922258236346866528/+/steps/Mjsunit/0/logs/templates/0

Original change's description:
> Ship constant field tracking
> 
> Bug: v8:8361
> Change-Id: I25c52c708517cf27add89e0c5c97e6d21abb2a9a
> Reviewed-on: https://chromium-review.googlesource.com/c/1456089
> Reviewed-by: Igor Sheludko <ishell@chromium.org>
> Commit-Queue: Jaroslav Sevcik <jarin@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#59415}

TBR=jarin@chromium.org,ishell@chromium.org

Change-Id: I0017230c840f4ab712852ba338f0119503688ec9
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:8361
Reviewed-on: https://chromium-review.googlesource.com/c/1456108
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59421}
2019-02-06 17:05:19 +00:00
Toon Verwaest
c1119e2180 [parser] Customize preparsed scope variable resolution
Otherwise preparsed variables will cause unnecessary dynamic variable
allocation, which is especially bad when we're preparsing top-level functions
with references to other global variables.

Change-Id: I2fa17dae8c1cc5264a26ddc8b8868de1d791b0ac
Reviewed-on: https://chromium-review.googlesource.com/c/1456040
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59420}
2019-02-06 16:15:58 +00:00
Sigurd Schneider
d691fde360 Revert "Reland "[builtins] [turbofan] Refactor Float64Pow to use single implementation""
This reverts commit d7def9003d.

Reason for revert: Breaks UBSan:
https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux64%20UBSan/4542

Besides undefined behavior, things were looking good!


Original change's description:
> Reland "[builtins] [turbofan] Refactor Float64Pow to use single implementation"
> 
> This is a reland of I968a08cef6a6d49350aa79185b2c6fb856d15f23
> 
> Original change's description:
> > [builtins] [turbofan] Refactor Float64Pow to use single implementation
> >
> > Remove platform-specific Float64Pow implementations and utils Pow in
> > favor of a base::ieee754::pow implementation.
> >
> > This unifies the implementation of pow for the compiler, wasm, and
> > runtime.
> >
> > Bug: v8:5848, v8:5086
> > Change-Id: I968a08cef6a6d49350aa79185b2c6fb856d15f23
> > Reviewed-on: https://chromium-review.googlesource.com/c/1403018
> > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
> > Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
> > Reviewed-by: Georg Neis <neis@chromium.org>
> > Reviewed-by: Yang Guo <yangguo@chromium.org>
> > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
> > Cr-Commit-Position: refs/heads/master@{#59229}
> 
> Bug: v8:5848, v8:5086
> Change-Id: I92f22ae03adafd9ad042e8d4bb406cbd5b5fb51e
> Cq-Include-Trybots: luci.chromium.try:linux_chromium_ubsan_rel_ng
> Reviewed-on: https://chromium-review.googlesource.com/c/1447854
> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
> Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
> Reviewed-by: Georg Neis <neis@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#59411}

TBR=jkummerow@chromium.org,jarin@chromium.org,neis@chromium.org,jgruber@chromium.org,clemensh@chromium.org,bmeurer@chromium.org,me@gus.host

Change-Id: I65c4bbd3ab7aaa1c396d182467c5a1fe6a639df5
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:5848, v8:5086
Cq-Include-Trybots: luci.chromium.try:linux_chromium_ubsan_rel_ng
Reviewed-on: https://chromium-review.googlesource.com/c/1456107
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59419}
2019-02-06 15:49:46 +00:00
Junliang Yan
69d26c73cf PPC: Fix DCHECK error in set_constant_pool_offset
the DCHECK in set_constant_pool_offset fails due to the
InstructionSize() needs builtin_index()

Change-Id: Ia86b57ebc4901672dee3012ba931e0222933ec1d
Reviewed-on: https://chromium-review.googlesource.com/c/1454265
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Commit-Queue: Junliang Yan <jyan@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#59418}
2019-02-06 15:43:35 +00:00
Clemens Hammacher
82d240c736 [test] Introduce assertThrowsAsync
We often use raw assertPromiseResult with {success ==
assertUnreachable} for that. Having a separate helper increases
readability and allows us to generate consistent (and better) error
messages.

R=titzer@chromium.org

Bug: chromium:926311
Change-Id: I507941eacaafe6c576098d7829a76b27384a4fb6
Reviewed-on: https://chromium-review.googlesource.com/c/1456039
Reviewed-by: Ben Titzer <titzer@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59417}
2019-02-06 15:35:04 +00:00
Sigurd Schneider
f5e5d49533 [ia32/x64] Remove unnecessary code flush in RelocInfo::Visit
Bug: v8:8562
Change-Id: I6f7dcaf888d0012fba2798613523c45d584753d4
Reviewed-on: https://chromium-review.googlesource.com/c/1456102
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59416}
2019-02-06 15:32:44 +00:00
Jaroslav Sevcik
78ed0e3fdb Ship constant field tracking
Bug: v8:8361
Change-Id: I25c52c708517cf27add89e0c5c97e6d21abb2a9a
Reviewed-on: https://chromium-review.googlesource.com/c/1456089
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Jaroslav Sevcik <jarin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59415}
2019-02-06 15:31:26 +00:00
Georg Neis
ca4fc99564 [turbofan] Separate computation of property access infos from merging.
This would enable us to move the computation to the serialization pass,
while keeping the merging in the reducers.

Bug: v8:7790
Change-Id: Ic1a4da7085e1c0ebe787a5c7ad79f0f09e7c3c76
Reviewed-on: https://chromium-review.googlesource.com/c/1452796
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59414}
2019-02-06 15:27:54 +00:00
Igor Sheludko
bb4fe197df [snapshot][ptr-compr][cleanup] Don't read from slots during deserialization.
This drops Read() and Slot() methods from UnalignedSlot and simplifies
Deserializer::ReadDataCase() method.

Bug: v8:8794, v8:8562
Change-Id: I8a1f62e7b36fb91e379e38d91bcbf5728d1c5471
Reviewed-on: https://chromium-review.googlesource.com/c/1456099
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59413}
2019-02-06 15:26:05 +00:00
Clemens Hammacher
d472bfb56e Reland "[wasm] Reenable code logging"
This is a reland of 84d6864a62.
Timeout fixed by any of https://crrev.com/c/1454484 or updated chromium
lkgr.

Original change's description:
> [wasm] Reenable code logging
>
> Code logging was fixed in https://crrev.com/c/1454598. Reenable it.
>
> R=mstarzinger@chromium.org
> CC=herhut@chromium.org
>
> Bug: v8:8783
> Change-Id: I50773d4b42ce52e8d078e47a797ab517771c2756
> Reviewed-on: https://chromium-review.googlesource.com/c/1454601
> Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#59394}

Tbr: mstarzinger@chromium.org
Bug: v8:8783
Change-Id: Ib6a7c079a73f90fbeeade17ef186742d2d30e0d3
Reviewed-on: https://chromium-review.googlesource.com/c/1456105
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59412}
2019-02-06 15:22:04 +00:00
Gus Caplan
d7def9003d Reland "[builtins] [turbofan] Refactor Float64Pow to use single implementation"
This is a reland of I968a08cef6a6d49350aa79185b2c6fb856d15f23

Original change's description:
> [builtins] [turbofan] Refactor Float64Pow to use single implementation
>
> Remove platform-specific Float64Pow implementations and utils Pow in
> favor of a base::ieee754::pow implementation.
>
> This unifies the implementation of pow for the compiler, wasm, and
> runtime.
>
> Bug: v8:5848, v8:5086
> Change-Id: I968a08cef6a6d49350aa79185b2c6fb856d15f23
> Reviewed-on: https://chromium-review.googlesource.com/c/1403018
> Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
> Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
> Reviewed-by: Georg Neis <neis@chromium.org>
> Reviewed-by: Yang Guo <yangguo@chromium.org>
> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#59229}

Bug: v8:5848, v8:5086
Change-Id: I92f22ae03adafd9ad042e8d4bb406cbd5b5fb51e
Cq-Include-Trybots: luci.chromium.try:linux_chromium_ubsan_rel_ng
Reviewed-on: https://chromium-review.googlesource.com/c/1447854
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59411}
2019-02-06 15:04:43 +00:00
Igor Sheludko
13f772476e [snapshot][cleanup] Simplify Deserializer::ReadObject()
Bug: v8:8794, v8:8562
Change-Id: I199b60150437c3a475a25c49c708058cd1371a1d
Reviewed-on: https://chromium-review.googlesource.com/c/1456038
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59410}
2019-02-06 14:58:37 +00:00
Jaroslav Sevcik
ea86509424 Constant field tracking for arrays.
This adds constant field tracking for arrays. To prevent changing the
field in some other elements-kind-branch of transition tree, we only
use the const information in the optimizing compiler if the map is not
an array map or if the map is stable (since stable maps cannot
transition to a different elements-kind-branch without deopt).

Some more details:
https://docs.google.com/document/d/1r2GAvdi_wudDS6iRUfdPw0gxWMfV-IX1PqKgwW47FyE

Bug: chromium:912162, v8:8361
Change-Id: Iea1b2f03ddee16205c2141ac5e813a973dd23cf4
Reviewed-on: https://chromium-review.googlesource.com/c/1454606
Commit-Queue: Jaroslav Sevcik <jarin@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59409}
2019-02-06 14:44:43 +00:00
Tamer Tas
8c30a2ccc0 [testrunner] migrate testsuites to lazy loading
V8 test suites return tests by loading them into memory up-front. Up-front
loading has memory and loading-time overhead for the testrunner.

This CL converts the test-suites to load tests during the test run in parallel.

After CL, most test suites start running immediately and all test suites start
running after 3 seconds on a modern SSD.

This CL eliminates the 200 MiB memory spikes that causes memory problems in mac
minis.

Overhead of running test262 before CL:
Line #    Mem usage     Increment   Line Contents
=================================================
   264  225.760 MiB 195.8.000 MiB         tests = self._load_testsuite_generators(args, options)
-------------------------------------------------
Overhead of running test262 after CL:
Line #    Mem usage    Increment   Line Contents
================================================
   264   28.840 MiB    0.000 MiB         tests = self._load_testsuite_generators(args, options)
-------------------------------------------------

R=machenbach@chromium.org
CC=​​​yangguo@chromium.org,sergiyb@chromium.org

Bug: v8:8174, v8:8552, v8:8728
Change-Id: Iab540b9410239b05dc80b4a5228db25d8b8fb3b9
Reviewed-on: https://chromium-review.googlesource.com/c/1454478
Commit-Queue: Tamer Tas <tmrts@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Reviewed-by: Sergiy Belozorov <sergiyb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59408}
2019-02-06 14:18:24 +00:00
Yang Guo
4551bbd309 Revert "[wasm] Reenable code logging"
This reverts commit 84d6864a62.

Reason for revert: Still observing failures with http/tests/wasm/wasm_worker_termination_while_compiling.html

https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8-Blink%20Linux%2064/29821

Original change's description:
> [wasm] Reenable code logging
> 
> Code logging was fixed in https://crrev.com/c/1454598. Reenable it.
> 
> R=​mstarzinger@chromium.org
> CC=​herhut@chromium.org
> 
> Bug: v8:8783
> Change-Id: I50773d4b42ce52e8d078e47a797ab517771c2756
> Reviewed-on: https://chromium-review.googlesource.com/c/1454601
> Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#59394}

TBR=mstarzinger@chromium.org,clemensh@chromium.org

Change-Id: I1ec69d2dbcbb38744174827c0aa1a994dd0df7ea
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:8783
Reviewed-on: https://chromium-review.googlesource.com/c/1456086
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59407}
2019-02-06 14:12:26 +00:00
Tobias Tebbi
7584dbf587 [array][torque] use new internal classes for sortState
Change-Id: Ibcac85442e755ceabd79cd87ebba7098b95a9182
Reviewed-on: https://chromium-review.googlesource.com/c/1454720
Reviewed-by: Simon Zünd <szuend@chromium.org>
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59406}
2019-02-06 14:03:21 +00:00
Simon Zünd
9f7c644b58 [stack trace] Create StackFrameInfo from FrameArray
This CL adds a method to the factory which converts a stack trace
frame represented by a FrameArray plus index, into a StackFrameInfo
object. This factory method will later be used to lazily populate
stack trace frames when they are retrieved via inspector API.

Drive-by: Expose the script id in StackFrameBase.

R=jgruber@chromium.org

Bug: v8:8742
Change-Id: I79965e466370706593903f3d1a336ac29736f8ac
Reviewed-on: https://chromium-review.googlesource.com/c/1454928
Commit-Queue: Simon Zünd <szuend@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59405}
2019-02-06 13:52:56 +00:00
Tobias Tebbi
6c3c952d8d [torque] add internal classes that map to FixedArray instances
Bug: v8:7793
Change-Id: Ifc2bf26e9d3bc13d4f2455d6d04ce5e2682626db
Reviewed-on: https://chromium-review.googlesource.com/c/1454600
Reviewed-by: Daniel Clifford <danno@chromium.org>
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59404}
2019-02-06 13:51:51 +00:00
Daniel Clifford
d09bea1b6f Cleanup labels in torque code
Change-Id: I6bb75c72670043fafaf917c8ed3d146019d542df
Reviewed-on: https://chromium-review.googlesource.com/c/1454727
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Commit-Queue: Daniel Clifford <danno@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59403}
2019-02-06 13:48:11 +00:00
Igor Sheludko
b276e30c48 [snapshot][ptr-compr][cleanup] Write repeats as a prefix
... rather than as a suffix.

This avoids reading previous values which in turn will make things
simpler from the pointer compression point of view in a sense that
this is a step towards replacing UnalignedSlot with MaybeObjectSlot.

Bug: v8:8794, v8:8562
Change-Id: I9a9b4a01f73b8058074d337b7e9e9f75fa1c9de0
Reviewed-on: https://chromium-review.googlesource.com/c/1456037
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59402}
2019-02-06 13:45:21 +00:00
Tobias Tebbi
cb935071b1 [torque] fix bug in CodeAssemblerParameterizedLabelBase
Bug: v8:7793
Change-Id: I6e1fb19fb260350daca8351321a79d038b5fdbd3
Reviewed-on: https://chromium-review.googlesource.com/c/1436053
Reviewed-by: Daniel Clifford <danno@chromium.org>
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59401}
2019-02-06 13:22:07 +00:00
Clemens Hammacher
eae6bf2d28 [wasm] Cache whether code should be logged
Creating the LogCodesTask and adding the code objects to it adds 10-20%
to Liftoff compilation time. Thus cache whether code logging is needed
per isolate, and avoid the overhead if that flag is false.

R=mstarzinger@chromium.org

Bug: v8:8783, chromium:928722
Change-Id: I059266da3309a4b1ed316016d0a55fa34f139057
Reviewed-on: https://chromium-review.googlesource.com/c/1454484
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59400}
2019-02-06 13:13:01 +00:00
Toon Verwaest
e0f0d60c57 Fix & reland "[utf8] Rewrite NewStringFromUtf8 using Utf8::ValueOfIncremental"
Change-Id: I2c8bd545dc606d76603bdf73f1ea54d4c04842c1
Reviewed-on: https://chromium-review.googlesource.com/c/1456101
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59399}
2019-02-06 13:11:11 +00:00
Benedikt Meurer
cccc5b5ba0 [ic] Introduce --max-polymorphic-map-count flag.
This turns the previous compile time constant IC::kMaxPolymorphicMapCount
into a runtime flag --max-polymorphic-map-count (defaults to 4 still),
which makes it easier to play with different number of maps in POLYMORPHIC
state.

Bug: v8:8765
Change-Id: I86c04d9b2d8be21a3bc6b31f70b0bbc359067467
Reviewed-on: https://chromium-review.googlesource.com/c/1456097
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59398}
2019-02-06 13:06:11 +00:00
Jakob Gruber
bc8eaed1b6 Remove unused InterruptCheck builtin
Change-Id: I77b811bbccbdb33028e03956342bd4aa2d68a087
Reviewed-on: https://chromium-review.googlesource.com/c/1456077
Reviewed-by: Simon Zünd <szuend@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59397}
2019-02-06 12:56:36 +00:00
Daniel Bratell
db0165adc2 Removed reference to deleted assembler-arch-inl.h
src/assembler-arch-inl.h was deleted in November but it
remained in the build system. This patch also removes it from
the build system.

Change-Id: Ib384943861156d603636dc3069130cd6c5dfd4ef
Reviewed-on: https://chromium-review.googlesource.com/c/1456100
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Daniel Bratell <bratell@opera.com>
Cr-Commit-Position: refs/heads/master@{#59396}
2019-02-06 12:51:01 +00:00
Simon Zünd
647fadd53f [stack trace] Make check in FrameArrayBuilder configurable
This CL allows the check for same security context to be disabled
when deciding what frames to include in a stack trace. This flag
will be needed to collect detailed stack traces in the same manner
as simple ones.

R=jgruber@chromium.org

Bug: v8:8742
Change-Id: I99651ad11e11546d7bdba88367a0849e7b308dcb
Reviewed-on: https://chromium-review.googlesource.com/c/1454719
Commit-Queue: Simon Zünd <szuend@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59395}
2019-02-06 12:28:02 +00:00
Clemens Hammacher
84d6864a62 [wasm] Reenable code logging
Code logging was fixed in https://crrev.com/c/1454598. Reenable it.

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

Bug: v8:8783
Change-Id: I50773d4b42ce52e8d078e47a797ab517771c2756
Reviewed-on: https://chromium-review.googlesource.com/c/1454601
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59394}
2019-02-06 12:01:31 +00:00
Toon Verwaest
3f2b501729 [parser] Handle 'this' with a special ThisExpression rather than VariableProxy
"this" is a very common expression. By using a single ThisExpression object
we can both avoid allocating many unnecessary VariableProxies and specialize
the resolution of this since we know where it's declared up-front. This also
avoids having to special-case "this" reference handling in the paths that would
behave differently for "this" than for regular references; e.g., with-scopes.

The tricky pieces are due to DebugEvaluate and this/super() used as default
parameters of arrow functions. In the former case we replace the WITH_SCOPE
with FUNCTION_SCOPE so that we make sure that "this" is intercepted, and still
rely on regular dynamic variable lookup. Arrow functions are dealt with by
marking "this" use in ArrowHeadParsingScopes. If the parenthesized expression
ends up being an arrow function, we force context allocate on the outer scope
(and mark "has_this_reference" on the FUNCTION_SCOPE so DebugEvaluate in the
arrow function can expose "this").

The CL also removes the now unused ThisFunction AST node.

Change-Id: I0ca38ab92ff58c2f731e07db2fbe91df901681ef
Reviewed-on: https://chromium-review.googlesource.com/c/1448313
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59393}
2019-02-06 11:49:11 +00:00
Tamer Tas
66ddc07b45 [test] increase shard numbers for slow bot
http://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux%20-%20arm%20-%20sim%20-%20debug
V8 Linux ARM SIM Debug bot runs into timeouts consistently in "Check - extra"
suite shard#1 after 45 minutes (shard#1 and shard#2 run for 40~ minutes) due to
unbalanced sharding.

This CL increases the shard size for the bot

R=yangguo@chromium.org
CC=​machenbach@chromium.org,sergiyb@chromium.org

Bug: v8:8174
No-Try: true
Change-Id: I47fdc2568ff93fb88eda5121d45b6f9d86e596a5
Reviewed-on: https://chromium-review.googlesource.com/c/1456096
Commit-Queue: Tamer Tas <tmrts@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59392}
2019-02-06 10:52:20 +00:00
Yang Guo
11ebaa8c82 Reland "[serializer] share class positions tuple across contexts"
This reverts commit b1eb340de4.

Bug: v8:8761
Change-Id: Icd952e16e85a7beb07874cb8979eec4cf1991a14
Reviewed-on: https://chromium-review.googlesource.com/c/1454922
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Commit-Queue: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59391}
2019-02-06 10:43:59 +00:00
Michael Achenbach
8c3b01766b [test] Add missing mozilla test suite to win trybots
TBR=sergiyb@chromium.org

Bug: v8:8790
Change-Id: Iceb77dfa511eebd2802efb5bd4c94fc67131b67e
Reviewed-on: https://chromium-review.googlesource.com/c/1454611
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Reviewed-by: Sergiy Belozorov <sergiyb@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59390}
2019-02-06 09:26:59 +00:00
Michael Lippautz
dfa7e3f7d0 [api] GetHeapStatistics: Only report backing stores as external memory
Whether backing stores are on V8's heap or not is opaque to JavaScript.
This is not true for other external memory such as DOM which is why only
backingstores are considered as on heap.

Bug: chromium:914304
Change-Id: Idfeb9815daeee239a6a5b95077421e555bfe5fda
Reviewed-on: https://chromium-review.googlesource.com/c/1454726
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59389}
2019-02-06 09:25:49 +00:00
Sergiy Belozorov
f71dd204bf [tools] Add -d/--device options to all test launchers
This allows to select device when multiple devices are connected.

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

Bug: chromium:893593
Change-Id: I3dfd8b98251f613f5c93d29acd5035b236731ea6
Reviewed-on: https://chromium-review.googlesource.com/c/1452441
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Sergiy Belozorov <sergiyb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59388}
2019-02-06 09:10:09 +00:00
Tamer Tas
df630e67fd Reland "Reland "[test] refactor testsuite configuration""
This is a reland of 81eec150f6

Original change's description:
> Reland "[test] refactor testsuite configuration"
>
> This is a reland of 7f92ad0ab6
>
> Original change's description:
> > [test] refactor testsuite configuration
> >
> > Every testsuite configuration consist of at least 30% code duplication.
> >
> > The code age ranges from 10 years old to 5 years old. Implementing anything that
> > touches the testsuite code becomes a technical fight to the death.
> >
> > This CL removes all the duplication by refactoring the common functionality.
> >
> > This CL contains structural changes without any logical changes % small bug
> > fixes.
> >
> > R=machenbach@chromium.org
> > CC=yangguo@chromium.org,sergiyb@chromium.org
> >
> > Bug: v8:8174, v8:8769
> > Change-Id: Iee299569caa7abdc0307ecf606136669034a28a2
> > Reviewed-on: https://chromium-review.googlesource.com/c/1445881
> > Commit-Queue: Sergiy Belozorov <sergiyb@chromium.org>
> > Reviewed-by: Michael Achenbach <machenbach@chromium.org>
> > Cr-Commit-Position: refs/heads/master@{#59361}
>
> Bug: v8:8174, v8:8769
> Change-Id: I8e7078cfb875ceb3777e57084e6f8dfac09693e7
> Reviewed-on: https://chromium-review.googlesource.com/c/1454485
> Reviewed-by: Michael Achenbach <machenbach@chromium.org>
> Commit-Queue: Tamer Tas <tmrts@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#59369}

Bug: v8:8174, v8:8790
Change-Id: I38ab9d37bca76057441a970f26e2102e4387a857
Reviewed-on: https://chromium-review.googlesource.com/c/1454724
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59387}
2019-02-06 09:02:09 +00:00
Michael Achenbach
b60906f3cc [test] Skip slow test
TBR=jgruber@chromium.org
NOTRY=true

Bug: v8:8789
Change-Id: I4058cf0ad32b0dfac313fce41f2ee58f65331f9a
Reviewed-on: https://chromium-review.googlesource.com/c/1454610
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59386}
2019-02-06 07:54:09 +00:00
Yang Guo
dcdc79f2ac Ignore --profile-deserialization for flags hash.
When using this flag to diagnose code caching, it would be awesome
to not invalidate the cache due to having this flag enabled.

R=jgruber@chromium.org

Change-Id: I7ca9869e9ea9b3a4ad7da555536aa41742ff2735
Reviewed-on: https://chromium-review.googlesource.com/c/1451817
Commit-Queue: Yang Guo <yangguo@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59385}
2019-02-06 07:25:49 +00:00