Commit Graph

45685 Commits

Author SHA1 Message Date
Santiago Aboy Solanes
c6af9bb358 [cleanup][turbofan] Updated representation checks
Started as a cleanup of my own CLs but I noticed there were some checks
that I could update as well.

Cq-Include-Trybots: luci.v8.try:v8_linux64_pointer_compression_rel_ng
Cq-Include-Trybots: luci.v8.try:v8_linux64_arm64_pointer_compression_rel_ng
Bug: v8:8977, v8:7703, v8:9183
Change-Id: I19092347e33324c24ff4396fa35c40a311c45799
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1594557
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61380}
2019-05-09 11:57:18 +00:00
Clemens Hammacher
f11129f342 [wasm] Refactor storage of argument vector
The function body decoder stored popped arguments in a field of the
decoder class, which is a non-obvious side channel.
This CL refactors this to return the popped vector directly instead.
In local benchmarks, this has no measurable performance impact.

R=titzer@chromium.org

Bug: v8:9183
Change-Id: I79b28e349e3009b9f01be25f116c4085ca569ca7
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1596732
Reviewed-by: Ben Titzer <titzer@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61379}
2019-05-09 11:29:28 +00:00
Maciej Goszczycki
652e32f9f9 [heap] Make trampoline CodeDataContainers immutable and deduplicate them
Moves all trampoline CodeDataContainers to read-only space, making them
immutable. Containers with no 'kind specific flags' set or 'promise
rejection' flag are deduplicated by replacing them with the new canonical
CodeDataContainers roots.

This saves around 36KB from the snapshot.

    RO_SPACE  NEW_SPACE  OLD_SPACE  CODE_SPACE  MAP_SPACE  LO_SPACE
old    32048          0     225944      149280      20240         0
new    32120          0     189344      149280      20240         0


Bug: v8:7464
Change-Id: Iedd538a86311ef501cd88c90ec75e1308195762f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1601257
Commit-Queue: Maciej Goszczycki <goszczycki@google.com>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Dan Elphick <delphick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61378}
2019-05-09 11:19:08 +00:00
Santiago Aboy Solanes
8090e78ee9 [ptr-compr][CSA] Adding a Change node in OptimizedStoreMap
Since we updated the access builders, in particular AccessBuilder::ForMap(),
the StoreField from CSA's OptimizedStoreMap was missing the corresponding
ChangeTaggedPointerToCompressedPointer node.

Tests were passing, but it was failing to compile with verify CSA enabled.

Cq-Include-Trybots: luci.v8.try:v8_linux64_pointer_compression_rel_ng
Cq-Include-Trybots: luci.v8.try:v8_linux64_arm64_pointer_compression_rel_ng
Bug: v8:8977, v8:7703
Change-Id: I0ddb03eb2ba19b55f9b9cef4eef94e32bc84ef18
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1601506
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61377}
2019-05-09 11:16:48 +00:00
Michael Starzinger
8927256551 [wasm] Fix source positions for rethrown exceptions.
This fixes the source position printed in the stack trace for exceptions
rethrown from within Wasm code. This only affects the message propagated
to the console, not the trace stored as part of the exception object.

Note that there still is a more fundamental issues with preserving the
original message of a caught exception and funneling it through to each
rethrow site, which is still missing. This change just makes sure that
the interpreter and TurboFan are consistent.

R=clemensh@chromium.org
TEST=message/fail/wasm-exception-rethrow
BUG=v8:8091

Change-Id: Iac04149ded3c54f5b23faeb83b1228081bbd3dfa
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1598754
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61374}
2019-05-09 10:44:58 +00:00
Dan Elphick
e0d7f81699 [api] Remove methods deprecated in 7.5 and earlier
Removes:
  * ReturnValue::Set(Persistent)
  * String::NewFromUtf8/NewFromTwoByte/NewExternal overloads that
  returned Locals instead of MaybeLocal
  * String::NewStringType

Now that the old String overloads are gone, the new ones can now have
a default parameter for NewStringType matching the old overloads.

Bug: v8:7289, v8:7281, v8:9183
Change-Id: If66e6d587ac778e015c281b376a9b4d6093f6ec3
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1591605
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Dan Elphick <delphick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61373}
2019-05-09 10:38:38 +00:00
Dan Elphick
f2e652264d Reland "[compiler] Don't collect source positions for the top frame"
Fixed crashes by adding missing call to EnsureSourcePositionsAvailable,
which requires clearing and restoring the pending exception.

> While most source positions were not collected even throwing exceptions,
> the top frame still was always collected as it was used to initialize
> the JSMessageObject. This skips even that frame, by storing the
> SharedFunctionInfo and bytecode offset in the JSMessageObject allowing
> it to lazily evaluate the actual source position.
>
> Also adds tests to test-api.cc that test each of the source position
> functions in isolation to ensure that they don't rely on previous
> invocations to call the source collection function.
>
> Since no source positions are now collected at the point when an
> exception is thrown, the mjsunit/stack-traces-overflow now passes again
> with the flag enabled. (cctest/test-cpu-profiler/Inlining2 is now the
> only failure).

Bug: v8:8510
Change-Id: Ifa5fe31d3db34a6c6d6a9cef3d646ad620dabd81
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1601270
Commit-Queue: Dan Elphick <delphick@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61372}
2019-05-09 10:20:18 +00:00
Santiago Aboy Solanes
7dc6afd498 [ptr-compr][turbofan] Removing LoadStackArgument simplified operator
Going back on https://chromium-review.googlesource.com/c/v8/v8/+/1480382
since now 'tagged' means 'full tagged' again.

I am keeping the access builder since that seems useful to have (as
opposed to building the access builder in the implementation).

Cq-Include-Trybots: luci.v8.try:v8_linux64_pointer_compression_rel_ng
Cq-Include-Trybots: luci.v8.try:v8_linux64_arm64_pointer_compression_rel_ng
Bug: v8:8977, v8:7703, v8:9206
Change-Id: I7c38b090190aa1c3e91c5ab9f729588aeae2dc1b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1594439
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Reviewed-by: Michael Stanton <mvstanton@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61371}
2019-05-09 09:53:18 +00:00
Paolo Severini
0b300d4b3d Reland "Generate unwind info on Win/x64 by default"
The original CL title was updated to reflect CL contents. The
--win64-unwinding-info flag still exists but it is set by default.

This is a reland of efd8c2d975

Original change's description:
> Remove --win64-unwinding-info flag and always generate unwind info on Win/x64
>
> The generation of unwind info to enable stack walking on Windows/x64
> (https://chromium-review.googlesource.com/c/v8/v8/+/1469329) was implemented
> behind a temporary flag, in order to coordinate these changes with the
> corresponding changes in Chromium.
>
> The required changes to Chromium
> (https://chromium-review.googlesource.com/c/chromium/src/+/1474703) have also
> been merged, so we can now remove the flag and enable the generation of stack
> unwinding info by default on Windows/x64.
>
> Bug: v8:3598
> Change-Id: I88814aaeabecc007f5262227aa0681a1d16156d5
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1573138
> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
> Reviewed-by: Jakob Gruber <jgruber@chromium.org>
> Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> Commit-Queue: Paolo Severini <paolosev@microsoft.com>
> Cr-Commit-Position: refs/heads/master@{#61020}

Bug: v8:3598, chromium:958035
Change-Id: Ie53b39f3bb31567797a61e5110685284c266c1f9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1599596
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61368}
2019-05-09 09:09:18 +00:00
Yang Guo
dea40e1a24 Revert "Add more OWNERS for DevTools protocol definitions"
This reverts commit 4faf5a7fe5.

Reason for revert: change of plans.

Original change's description:
> Add more OWNERS for DevTools protocol definitions
> 
> R=​alph@chromium.org
> 
> Change-Id: I615b9274cd0f6128d3f2377ef9dacb6aa1980446
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1601494
> Reviewed-by: Alexei Filippov <alph@chromium.org>
> Reviewed-by: Pavel Feldman <pfeldman@chromium.org>
> Reviewed-by: Dmitry Gozman <dgozman@chromium.org>
> Commit-Queue: Yang Guo <yangguo@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#61365}

TBR=dgozman@chromium.org,alph@chromium.org,pfeldman@chromium.org,yangguo@chromium.org

Change-Id: Ida51f3b315d020abe0b34dceb4e54f7d92971035
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1601501
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61367}
2019-05-09 09:04:23 +00:00
Peter Marshall
5beb3ebbe9 [tracing] Add a JSON consumer for Perfetto tracing data
We pretty much always want tracing data as a JSON file. Implement a
Consumer which converts protos to the JSON trace events format.

This duplicates a lot of the internals of TraceWriter in
trace-writer.cc but we will remove that eventually.

Cq-Include-Trybots: luci.v8.try:v8_linux64_perfetto_dbg_ng
Bug: v8:8339
Change-Id: I85f86562f1b3c4d24ecd755413d1c3f88b292adb
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1541042
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61366}
2019-05-09 09:03:18 +00:00
Yang Guo
4faf5a7fe5 Add more OWNERS for DevTools protocol definitions
R=alph@chromium.org

Change-Id: I615b9274cd0f6128d3f2377ef9dacb6aa1980446
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1601494
Reviewed-by: Alexei Filippov <alph@chromium.org>
Reviewed-by: Pavel Feldman <pfeldman@chromium.org>
Reviewed-by: Dmitry Gozman <dgozman@chromium.org>
Commit-Queue: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61365}
2019-05-09 07:53:48 +00:00
Seth Brenith
7e247b591d Fix gcov build
Gcov builds such as
https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20-%20gcov%20coverage/18276
are failing because they can't find std::copy_if. Including the right
header fixes it.

Change-Id: I3f0e3fabfe1b32cc4492aee64d2b9f23fa4afdcb
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1600431
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61364}
2019-05-09 07:27:39 +00:00
Maya Lekova
96f10b9044 Revert "[heap] Skip read-only space in Heap::Contains"
This reverts commit 2b24cd035a.

Reason for revert: Causes layout test failures
https://ci.chromium.org/p/chromium/builders/try/linux-chromeos-rel/275121
and https://ci.chromium.org/p/chromium/builders/try/win7-rel/86354

Original change's description:
> [heap] Skip read-only space in Heap::Contains
> 
> Bug: v8:7464
> Change-Id: I27e82cdf0f8cc56ff68dcfaecab9644fe74916c7
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1559861
> Commit-Queue: Maciej Goszczycki <goszczycki@google.com>
> Reviewed-by: Dan Elphick <delphick@chromium.org>
> Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#61350}

TBR=ulan@chromium.org,delphick@chromium.org,goszczycki@google.com

Change-Id: I13cc09dd44a10bad854fa861b6e43149babb1b5e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:7464
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1601498
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Commit-Queue: Maya Lekova <mslekova@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61363}
2019-05-09 07:20:56 +00:00
Dan Elphick
aa30ca13fd [turbofan] Fix source positions for inlined functions
Puts back source position collection for inlined functions when
concurrent inlining is not enabled.

Bug: v8:8510
Change-Id: I8e8a7ef15c0854b1e37299a007303b3213988cf6
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1601266
Auto-Submit: Dan Elphick <delphick@chromium.org>
Commit-Queue: Maya Lekova <mslekova@chromium.org>
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61362}
2019-05-09 06:59:11 +00:00
Benedikt Meurer
ef30d69299 [cleanup] Remove obsolete Map::FixProxy().
The implementation of the method is long gone, just the declaration was
left for some reason.

Bug: v8:9183
Change-Id: Id68fc6afa63c3663769f9d8e0a6bc1a7a3aa5e35
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1601497
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Commit-Queue: Yang Guo <yangguo@chromium.org>
Auto-Submit: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61361}
2019-05-09 06:37:38 +00:00
Z Duong Nguyen-Huu
47d32fef2b Port StringPrototypeSubString to Torque
Bug: v8:8996
Change-Id: I63ae821086c42c14a317e866fb4f0f799f4c4f7c
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1597555
Commit-Queue: Z Nguyen-Huu <duongn@microsoft.com>
Reviewed-by: Simon Zünd <szuend@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61360}
2019-05-09 05:56:28 +00:00
tzik
621c5c625a Fix a DCHECK failure on an exception message
A DCHECK in LookupIterator::name hits when we add a indexed property,
as it requires a named property.
This replaces it with GetName to avoid the failure.

Bug: chromium:959727
Change-Id: I1e98b313ec9257db80460a34d691016acbceb3c9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1597372
Commit-Queue: Taiju Tsuiki <tzik@chromium.org>
Reviewed-by: Adam Klein <adamk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61358}
2019-05-09 01:22:13 +00:00
Frank Tang
c2f746881c [Intl] Stage harmony_intl_date_format_range
Bug: v8:7729
Change-Id: Ide6422a9315f56ada584156124037039ea591086
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1600368
Reviewed-by: Adam Klein <adamk@chromium.org>
Reviewed-by: Mathias Bynens <mathias@chromium.org>
Commit-Queue: Frank Tang <ftang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61357}
2019-05-08 23:59:18 +00:00
Johannes Henkel
d4206d50a1 [DevTools] Extract UTF8<->UTF16 routines from string-16{.h,.cc}.
This will allow me to reuse the routines for the
inspector_protocol/encoding/encoding_test, rather than copy them.
I've already verified that this works.

Change-Id: I5b61e4f48c2d00d9d0a5305c9790093c66b3c765
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1600360
Commit-Queue: Johannes Henkel <johannes@chromium.org>
Reviewed-by: Dmitry Gozman <dgozman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61355}
2019-05-08 21:20:33 +00:00
Hannes Payer
6e40260381 [heap] Retire SkipList and use CodeObjectRegistry instead.
Bug: v8:9093
Change-Id: If899e36d4fbef711118ff8d7730ff9acd118d8b3
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1599600
Reviewed-by: Yang Guo <yangguo@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Hannes Payer <hpayer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61354}
2019-05-08 20:35:16 +00:00
Aleksei Koziatinskii
b901591015 inspector: added Debugger.setInstrumentationBreakpoint method
There are two possible type:
- scriptParsed - breakpoint for any script,
- scriptWithSourceMapParsed - breakpoint for script with
  sourceMappingURL.

When one of the breakpoints is set then for each matched script
we add breakpoint on call to top level function of that script.

Node: https://github.com/nodejs/node/issues/24687

R=dgozman@chromium.org

Bug: chromium:887384,chromium:724793,chromium:882909
Change-Id: I9c08b2a2a5ba7006adfedd85fc92ae191517af00
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1354245
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Reviewed-by: Dmitry Gozman <dgozman@chromium.org>
Reviewed-by: Alexei Filippov <alph@chromium.org>
Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61353}
2019-05-08 20:34:11 +00:00
Andrew Comminos
89ed6b764a [cpu-profiler] Add parameter to limit profiler samples taken
To prevent OOMs for leaked CPU profilers, add the option to limit the
maximum number of samples that are included in a CPU profile.

Bug: chromium:956688
Change-Id: I119d0622e7d39c187f8e09e2d49dec91fd724ecb
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1588412
Commit-Queue: Andrew Comminos <acomminos@fb.com>
Reviewed-by: Peter Marshall <petermarshall@chromium.org>
Reviewed-by: Alexei Filippov <alph@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61352}
2019-05-08 20:12:02 +00:00
Z Duong Nguyen-Huu
7275c9c8e2 Port Proxy SetProperty trap builtin to Torque
Spec: https://tc39.github.io/ecma262/#sec-proxy-object-internal-methods-and-internal-slots-set-p-v-receiver
Bug: v8:6664
Change-Id: Ieddb645669a72d78ff9c0a45267165de3c5276f1
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1585269
Commit-Queue: Z Nguyen-Huu <duongn@microsoft.com>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61351}
2019-05-08 18:38:27 +00:00
Maciej Goszczycki
2b24cd035a [heap] Skip read-only space in Heap::Contains
Bug: v8:7464
Change-Id: I27e82cdf0f8cc56ff68dcfaecab9644fe74916c7
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1559861
Commit-Queue: Maciej Goszczycki <goszczycki@google.com>
Reviewed-by: Dan Elphick <delphick@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61350}
2019-05-08 18:21:47 +00:00
Seth Brenith
d4e0b5aee5 [torque] Add support for conditionally-included class fields
This change introduces a new decorator syntax @ifdef which can be used
on any class fields in .tq files, and updates SharedFunctionInfo to use
it as an example.

Bug: v8:7793
Change-Id: I690ae2a10d6cab044eedf5b931e4f95e757ed469
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1536985
Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
Reviewed-by: Hannes Payer <hpayer@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61349}
2019-05-08 17:25:02 +00:00
Z Duong Nguyen-Huu
e69460e649 Sealed array should handle store out of bounds in optimized code
Bug: chromium:959747
Change-Id: I2518a35508b97ae1c2df7f30c1c2b9755ba6f495
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1597116
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Z Nguyen-Huu <duongn@microsoft.com>
Cr-Commit-Position: refs/heads/master@{#61348}
2019-05-08 17:19:02 +00:00
Michael Starzinger
e4c5cab536 [wasm] Restrict expected frame types for {Code} objects.
The involved code kinds should no longer appear as part of frames for
{Code} objects since they have been moved to {WasmCode} for quite a
while now.

R=jkummerow@chromium.org

Change-Id: Iadc4ef668ebb56bf418fb706c3f118d9c3b553bd
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1598755
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61347}
2019-05-08 16:10:22 +00:00
Milad Farazmand
0553ebda9f PPC/s390: [cctest] Add V8_EXPORT_PRIVATE to arm/arm64 ports
Port 1a7d847cfa

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

Change-Id: I13df37162f26a32512ac4897e4f6657db28d0fb6
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1600756
Reviewed-by: Junliang Yan <jyan@ca.ibm.com>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Commit-Queue: Junliang Yan <jyan@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#61346}
2019-05-08 15:45:12 +00:00
Toon Verwaest
44382e945a [parser] Clear is_parenthesized on ThisExpression when accessing it
Otherwise (this) will leak into a later this=> making it seem like a valid
arrow function head.

Bug: chromium:941703
Change-Id: I5c3ff70f1d525ec0da53b401a0bfec4c1ee7812f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1601260
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61345}
2019-05-08 15:44:06 +00:00
Ulan Degenbaev
84435fafd5 [heap] Skip never-evacuate pages from sweeper limit accouting
If concurrent sweeping is not making progress, then the slow path of allocation
tries to sweep one page before allocating a new page. If that one page happens
to be a never-evacuate page, then sweeping it will not produce any free space.

This is problematic for tests that disable page allocation by setting the
force_oom flag. Such tests become sensitive to the number of pages marked
as never-evacuate (i.e. pages that were deserialized from the snapshot).

Bug: v8:9205
Change-Id: If19a036b67319a5a2170f378f2c07ffa01bb7b27
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1601259
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61344}
2019-05-08 15:27:17 +00:00
Tom Tan
50b56e1036 [arm64] Remove x18 from saved_register list for deoptimization
Below change canceled removing x18 from restore_list for deoptimization
entries, but it also doesn't remove it from the saved_register list
which causes x18 be restored incorrectly when deopt happens.

https://chromium-review.googlesource.com/c/v8/v8/+/1583762

Bug: chromium:893460
Change-Id: Iccb950150a07119a3642dc42f044e94eb49db76e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1600674
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61342}
2019-05-08 15:07:07 +00:00
Balaram Makam
779e9e0660 [intl] Remove redundant flattening of strings.
Patch from Chukwuchebem Orakwue <c.orakwue@samsung.com>

Change-Id: Ic5b302f4965b0f032839ef06e1221f56c37f76a1
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1582055
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61341}
2019-05-08 15:05:27 +00:00
Mythri A
6a932d416c Also reset interrupt budget on feedback cell when flushing bytecode
Bug: v8:8394, v8:8395
Change-Id: I1cbb87b67bef4d469abde99070b7870e2b8d0c90
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1601149
Commit-Queue: Mythri Alle <mythria@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61340}
2019-05-08 15:03:49 +00:00
Santiago Aboy Solanes
46062a15de [ptr-compr][turbofan] Removing LoadMessage/StoreMessage simplified operators
Going back on https://chromium-review.googlesource.com/c/v8/v8/+/1445978
since now 'tagged' means 'full tagged' again.

Cq-Include-Trybots: luci.v8.try:v8_linux64_pointer_compression_rel_ng
Cq-Include-Trybots: luci.v8.try:v8_linux64_arm64_pointer_compression_rel_ng
Bug: v8:8977, v8:7703
Change-Id: I3e39d631cc720a28577dad482dadfcc8332b6b18
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1593301
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: Michael Stanton <mvstanton@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61339}
2019-05-08 14:54:43 +00:00
Jakob Kummerow
a58a937189 [wasm-c-api] Introducing WasmCapiFunction
For faster calls from Wasm to C-API functions, passing parameter
values directly instead of through JavaScript wrapper objects.

Change-Id: I31e7d1622dedaf3154483306ab159427ac167663
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1591601
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61338}
2019-05-08 14:28:06 +00:00
Pierre Langlois
0d8ec36b36 [ic] Do not decode instructions to detect deoptimized code.
This fixes a crash when using --trace-ic on Arm64 debug. For a given return
address, the assembler's `target_address_from_return_address()` method will
displace it to give you the call-site address. However, this is fragile because
it needs to decode the instruction stream to distinguish between different call
sequences. So it triggered an assertion on Arm64 because we now use BL for
builtin to buitin calls.

We only use this when tracing IC states to detect if the caller is a deoptimized
function. But to do this it doesn't matter if the address we have is the return
or the call-site address. So we can just remove the need for the fragile
Assembler method.

As a drive-by, also remove `return_address_from_call_start()` which was doing
the opposite and was unused.

Change-Id: I5988d17eadd1652ed85d662e62bc4c579665dd31
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1594566
Commit-Queue: Pierre Langlois <pierre.langlois@arm.com>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61337}
2019-05-08 14:13:28 +00:00
Frederik Gossen
b040067455 [wasm] Fix flaking DCHECK in {CompileLazy}
Lazy compilation no longer asserts the non-existence of code. Code may
exist when tiering finishes (and publishes code) after {CompileLazy}
started execution and before it reached the DCHECK.

Bug: v8:9211
Change-Id: I03ed44da7e16f1e4b4dca4b314a56cf6828bf1a4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1596447
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Commit-Queue: Frederik Gossen <frgossen@google.com>
Cr-Commit-Position: refs/heads/master@{#61336}
2019-05-08 14:12:23 +00:00
Nico Hartmann
2d21b6e9fd Replace ToBoolean's runtime call for BigInt by CSA code
Bug: v8:9213
Change-Id: If1299bb11a238b7732dde6931a79b991119cec2e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1596730
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Commit-Queue: Nico Hartmann <nicohartmann@google.com>
Cr-Commit-Position: refs/heads/master@{#61335}
2019-05-08 14:11:18 +00:00
Sigurd Schneider
ad010efaa4 [torque] Refactor annotation handling
This CL introduces an AnnotationSet to unify annotation handling. Grammar
rules now accept a list of annotations (via annotations Symbol), where an
annotation is an Identifier starting with '@'. The new class AnnotationSet
can be used to restrict the allowed annotations and query presence of annotations
in the Make* functions.

Bug: v8:7793
Change-Id: Iad5435d4a94a3bea99aca76c23d2cffffe78a97f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1601142
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: Simon Zünd <szuend@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61334}
2019-05-08 14:10:13 +00:00
Toon Verwaest
ed833ff5f0 [runtime] Remove iterating string hasher
Flatten cons strings into a buffer instead, as we already did for strings
larger than 64 anyway.

Change-Id: Ida7afb9f7ceb38505d67bedfdfbc43c8b4d8c303
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1599428
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61333}
2019-05-08 13:06:53 +00:00
Clemens Hammacher
f3f3f289fc [wasm][gc] Temporarily disable discarding pages
The {DiscardSystemPages} call occasionally fails on win32, thus disable
it until the error is found.

R=mstarzinger@chromium.org

Bug: v8:8217, chromium:960707
Change-Id: Idf77dd8e85d3d38cc12a9f4d2db5cc98eb2c7d08
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1601150
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61331}
2019-05-08 12:49:53 +00:00
Santiago Aboy Solanes
af5e926317 Reland "[ptr-compr][turbofan] Calling the non-compressed Tagged loads and stores"
This is a reland of 3c51043860

TBR=jarin@chromium.org

Original change's description:
> [ptr-compr][turbofan] Calling the non-compressed Tagged loads and stores
>
> This CL changes the instruction selector so that we use the normal load
> and store, instead of the one that (de)compresses.
>
> Also removed "return;"s and "break;"s that were unnecessary.
>
> Cq-Include-Trybots: luci.v8.try:v8_linux64_pointer_compression_rel_ng
> Cq-Include-Trybots: luci.v8.try:v8_linux64_arm64_pointer_compression_rel_ng
> Bug: v8:8977, v8:7703
> Change-Id: I4f2a82bfc4d300dd56300f394f59c3f9da242ba8
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1593296
> Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
> Reviewed-by: Michael Stanton <mvstanton@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#61304}

Bug: v8:8977, v8:7703
Change-Id: I3a587662248fad0d633b543ec03f1aba88410ff1
Cq-Include-Trybots: luci.v8.try:v8_linux64_pointer_compression_rel_ng
Cq-Include-Trybots: luci.v8.try:v8_linux64_arm64_pointer_compression_rel_ng
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1601151
Reviewed-by: Santiago Aboy Solanes <solanes@chromium.org>
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61330}
2019-05-08 12:39:23 +00:00
Benedikt Meurer
d9f35f058f [tracing] Fix SharedFunctionInfo::ToTracedValue().
Pass the FunctionLiteral to `SharedFunctionInfo::ToTracedValue()` and
take the source position from that for logging, as the SFI itself might
not have a way to get to the source position in the beginning (currently
that's the case for functions that are marked for eager compilation).

Tbr: ulan@chromium.org
Bug: chromium:956848, v8:8598, v8:9039
Change-Id: I05c31c7d48734f1f301930ba455d3d5a77b9df13
Doc: bit.ly/v8-tracing-signals
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1601146
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61329}
2019-05-08 12:31:25 +00:00
Z Duong Nguyen-Huu
bf47bfd1fc Refactor holey and packed elements-kind check
Bug: v8:6831
Change-Id: Idbfc2ddb46e258eee2ef23528531b666a532d72c
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1599775
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Z Nguyen-Huu <duongn@microsoft.com>
Cr-Commit-Position: refs/heads/master@{#61328}
2019-05-08 12:22:35 +00:00
Michael Starzinger
175ff6f36e [wasm][cleanup] Simplify DisjointAllocationPool constructors.
R=clemensh@chromium.org

Change-Id: I4ef23446609e0b276877aedaccbd738497f2853f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1601145
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61327}
2019-05-08 12:10:06 +00:00
Toon Verwaest
2876c3f0d2 [runtime] We cannot trust byteness of slice/thin/cons strings
MakeExternal can change byteness of strings without updating wrappers; hence we
cannot trust byteness of wrappers. Unwrap the string before checking encoding.

Bug: chromium:960680

Change-Id: I95d2bca906141c0d8b3de8fdac44b9fdb2ef2c43
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1601140
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61326}
2019-05-08 11:56:25 +00:00
Santiago Aboy Solanes
2e1fe0760a [ptr-compr][wasm] Adding TypeCompressedTaggedXXX uses
We are changing all heap Tagged loads and stores to used the Compressed
representation. From this point forward,
MachineType::TypeCompressedTaggedXXX has to be used instead of
MachineType::TaggedXXX.

This function was added in the middle of my CLs and therefore was not
included in my wasm CL.

Cq-Include-Trybots: luci.v8.try:v8_linux64_pointer_compression_rel_ng
Cq-Include-Trybots: luci.v8.try:v8_linux64_arm64_pointer_compression_rel_ng
Bug: v8:8977, v8:7703
Change-Id: If3973d436ae04520b36d0f442b7886a58ac901ae
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1601137
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61325}
2019-05-08 11:51:14 +00:00
Clemens Hammacher
c19ff9027f Revert "[wasm][gc] Use SetPermissions to discard pages"
This reverts commit cc71d5ca52.

Reason for revert: gc-stress failures, e.g. https://ci.chromium.org/p/v8/builders/ci/V8%20Linux%20-%20gc%20stress/22357

Original change's description:
> [wasm][gc] Use SetPermissions to discard pages
> 
> On 32bit windows, DiscardSystemPages fails sometimes (see bug). We don't
> have a reproducer, so this is a purely speculative fix.
> {SetPermissions} has some platform-specific logic to also discard the
> pages. Specifially, on windows it uses {VirtualFree} instead of
> {DiscardVirtualMemory}.
> {SetPermissions} is also semantically stronger, since it forbids any
> further access to the pages.
> 
> R=​mstarzinger@chromium.org
> 
> Bug: v8:8217, chromium:960707
> Change-Id: I8b3325264c86aff8d6e7c6b01c22ae410e87faf4
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1601134
> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
> Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#61321}

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

Change-Id: Ib2d534a6906ea5d390d08943ea71e1f8799278e8
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:8217, chromium:960707
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1601147
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61324}
2019-05-08 11:34:26 +00:00
Maciej Goszczycki
b672d08990 Reland "[heap] Set read-only space's and its pages' heap_ to null."
Seems like the CodeBuilder CL actually caused this.

This is a reland of 964edc251f

Original change's description:
> [heap] Set read-only space's and its pages' heap_ to null.
>
> Various small changes are required to enable this.
>
> HeapObject::GetReadOnlyRoots no longer uses the Space's heap when
> possible (see comment in ReadOnlyHeap::GetReadOnlyRoots definition).
> This requires that ReadOnlyRoots be construct-able using a raw pointer
> to the read-only space's roots array.
>
> Global read-only heap state is now cleared by tests where appropriate
> and extra DCHECKs in ReadOnlyHeap::SetUp should make catching future
> issues easier.
>
> String padding is now always cleared just before read-only space is
> sealed when not deserializing.
>
> Change-Id: I7d1db1c11567be5df06ff7066f3a699125f8b372
> Bug: v8:7464
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1535830
> Commit-Queue: Maciej Goszczycki <goszczycki@google.com>
> Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> Reviewed-by: Dan Elphick <delphick@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#61188}

Bug: v8:7464
Change-Id: If75bbd16c2e2af5b80cd60811dfd7866f8be8309
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1599186
Commit-Queue: Maciej Goszczycki <goszczycki@google.com>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Dan Elphick <delphick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61323}
2019-05-08 11:24:43 +00:00