Commit Graph

56305 Commits

Author SHA1 Message Date
Clemens Hammacher
b851d753c9 Revert "Make LoadElimination aware of const fields (Part 2; stores)"
This reverts commit e588ff10e5.

Reason for revert: consistently crashes layout tests: https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8-Blink%20Linux%2064/32225

Original change's description:
> Make LoadElimination aware of const fields (Part 2; stores)
> 
> Adds const information to store field accesses and uses it in load elimination
> 
> Change-Id: I00765c854c95c955dabd78557463267b95f75eef
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1611543
> Reviewed-by: Georg Neis <neis@chromium.org>
> Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
> Commit-Queue: Georg Schmid <gsps@google.com>
> Cr-Commit-Position: refs/heads/master@{#61796}

TBR=jarin@chromium.org,neis@chromium.org,tebbi@chromium.org,bmeurer@chromium.org,gsps@google.com

Change-Id: Ia299c36b197c2aad7cfd953b06de06f4536ddb74
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627975
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61813}
2019-05-24 06:28:17 +00:00
Simon Zünd
2b0ac2fb9f [array] Move Array#sort pre-processing to Torque
This CL removes the "PrepareElementsForSort" runtime function, and
replaces it with a simpler version in Torque. The biggest difference
is that certain sparse configurations no longer have a fast-path.

The Torque pre-processing step replaces the existing Torque mechanism that
copied already pre-processed elements into the "work" FixedArray. The Torque
compacting works as follows:
  - Iterate all elements from 0 to {length}
    - If the element is the hole: Do nothing.
    - If the element is "undefined": Increment undefined counter.
    - In all other cases, push the element into the "work" FixedArray.

Then the "work" FixedArray is sorted as before. Writing the elements from
the "work" array back into the receiver, after sorting, has three steps:
  1. Copy the sorted elements from the "work" FixedArray to the receiver.
  2. Add previously counted number of "undefined" to the receiver.
  3. Depending on the backing store either delete properties or
     set them to the Hole up to {length}.

Bug: v8:8714
Change-Id: I14eccb7cfd2e4618bce2a85cba0689d7e0380ad2
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1619756
Commit-Queue: Simon Zünd <szuend@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61812}
2019-05-24 06:18:45 +00:00
Simon Zünd
afb0d4bcad Add missing header to fix Linux64 gcov bot
Linux64 gcov bot currently fails to compile:
https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20-%20gcov%20coverage/18582

Introducing CL: https://crrev.com/c/1624216

TBR=jgruber@chromium.org

Bug: v8:9103
Change-Id: Ic5dbfca99a9893d64ba73f878824b48b0f83e4af
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627972
Commit-Queue: Simon Zünd <szuend@chromium.org>
Reviewed-by: Simon Zünd <szuend@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61811}
2019-05-24 06:16:44 +00:00
Simon Zünd
ae954a4c7f Revert "Update V8 DEPS."
This reverts commit 03994e5709.

Reason for revert: Overcautious revert for
https://ci.chromium.org/p/v8/builders/ci/Mac%20V8%20FYI%20Release%20(Intel)/5377

Original change's description:
> Update V8 DEPS.
> 
> Rolling v8/build: 97564df..ae3ffb0
> 
> Rolling v8/buildtools: 6884242..0218c0f
> 
> Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/4d346fb..63ab0c8
> 
> Rolling v8/third_party/depot_tools: 181e44c..a541b28
> 
> TBR=machenbach@chromium.org,sergiyb@chromium.org,tmrts@chromium.org
> 
> Change-Id: I5e372a33baf38c0b127b77568976b983ab546bc3
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1628115
> 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@{#61809}

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

Change-Id: I95159172ea8114477cc52413edb5b8f740bd69e1
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627974
Reviewed-by: Simon Zünd <szuend@chromium.org>
Commit-Queue: Simon Zünd <szuend@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61810}
2019-05-24 05:58:37 +00:00
v8-ci-autoroll-builder
03994e5709 Update V8 DEPS.
Rolling v8/build: 97564df..ae3ffb0

Rolling v8/buildtools: 6884242..0218c0f

Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/4d346fb..63ab0c8

Rolling v8/third_party/depot_tools: 181e44c..a541b28

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

Change-Id: I5e372a33baf38c0b127b77568976b983ab546bc3
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1628115
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@{#61809}
2019-05-24 03:43:44 +00:00
Francis McCabe
0ef1982ff5 Revert "Reland "[torque] move class tests to unittests""
This reverts commit c33a1ef227.

Reason for revert: fails win32 test:
https://ci.chromium.org/p/v8/builders/ci/V8%20Win32%20-%20nosnap%20-%20shared/33658

Original change's description:
> Reland "[torque] move class tests to unittests"
> 
> This is a reland of f589d56101
> 
> Now with an ASAN-container-overflow false positive workaround:
> Somehow ASAN was unhappy about a simple
> std::vector<std::string>::push_back.
> Increasing the std::vector capacity before doing the push_back
> strangely fixes the problem.
> 
> Original change's description:
> > [torque] move class tests to unittests
> >
> > This avoids the generation of fake external classes.
> >
> > Bug: v8:7793
> > Change-Id: I9744b299d3ec474d72b298b4f6143f95e345d1d9
> > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1625991
> > Reviewed-by: Simon Zünd <szuend@chromium.org>
> > Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
> > Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
> > Cr-Commit-Position: refs/heads/master@{#61778}
> 
> TBR: szuend@chromium.org, sigurds@chromium.org
> Bug: v8:7793
> Change-Id: Ifa1958e4d6e850ba27632aa95c7efaf5ca4bfefa
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627970
> Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
> Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#61807}

TBR=sigurds@chromium.org,tebbi@chromium.org,szuend@chromium.org

Change-Id: I079e3ccf2c7a4778e3e6aabee85313ab5a070ee3
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:7793
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1626834
Reviewed-by: Francis McCabe <fgm@chromium.org>
Commit-Queue: Francis McCabe <fgm@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61808}
2019-05-23 21:38:23 +00:00
Tobias Tebbi
c33a1ef227 Reland "[torque] move class tests to unittests"
This is a reland of f589d56101

Now with an ASAN-container-overflow false positive workaround:
Somehow ASAN was unhappy about a simple
std::vector<std::string>::push_back.
Increasing the std::vector capacity before doing the push_back
strangely fixes the problem.

Original change's description:
> [torque] move class tests to unittests
>
> This avoids the generation of fake external classes.
>
> Bug: v8:7793
> Change-Id: I9744b299d3ec474d72b298b4f6143f95e345d1d9
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1625991
> Reviewed-by: Simon Zünd <szuend@chromium.org>
> Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
> Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#61778}

TBR: szuend@chromium.org, sigurds@chromium.org
Bug: v8:7793
Change-Id: Ifa1958e4d6e850ba27632aa95c7efaf5ca4bfefa
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627970
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61807}
2019-05-23 20:57:11 +00:00
Jaroslav Sevcik
00be36ec7c [test] Add missing resources to the ObjectFreeze perf test
Bug: chromium:963925
Change-Id: I92c6899ac188e0f3248e1cee93b1a7e28001e29b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627540
Reviewed-by: Sergiy Belozorov <sergiyb@chromium.org>
Commit-Queue: Sergiy Belozorov <sergiyb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61806}
2019-05-23 18:19:41 +00:00
Francis McCabe
2451ea88ca Revert "[torque] move class tests to unittests"
This reverts commit f589d56101.

Reason for revert: failing win64 asan
https://ci.chromium.org/p/v8/builders/ci/V8%20Win64%20ASAN/8653

Original change's description:
> [torque] move class tests to unittests
> 
> This avoids the generation of fake external classes.
> 
> Bug: v8:7793
> Change-Id: I9744b299d3ec474d72b298b4f6143f95e345d1d9
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1625991
> Reviewed-by: Simon Zünd <szuend@chromium.org>
> Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
> Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#61778}

TBR=sigurds@chromium.org,tebbi@chromium.org,szuend@chromium.org

Change-Id: I762f29a0d3212d2eabfafa48c0e46940d0e6f835
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:7793
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1625863
Reviewed-by: Francis McCabe <fgm@chromium.org>
Commit-Queue: Francis McCabe <fgm@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61805}
2019-05-23 17:48:04 +00:00
Igor Sheludko
ae348e30ed [ptr-compr] Introduce StrongTaggedValue and TaggedValue
... which represent potentially compressed Object and MaybeObject
values respectively. They provide methods for checking the smi/weak
tags which don't require decompression and conversion to Smi/HeapObject
combined with tag checks.

The new classes should help to write a bit more efficient runtime (C++)
code for the cases when we don't need the full decompressed value
immediately.

Drive-by-fix: fix ptr-compr build after Object::operator->() removal.

Bug: v8:7703
Change-Id: I7a3d747ab6679120a2cca14e45b0d8bcf33fc496
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1624786
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61804}
2019-05-23 17:43:12 +00:00
Ross McIlroy
a3a18a736e [Android] Don't apply offset to library start address for libs mapped from APK.
On Android, we mmap the .so directly from the APK, therefore the file offset
in this case refers to the offset of the .so in the APK, not the offset in
the .so file itself. As such, moving the start position of the library based
on this gives incorrect results when later symbolizing the addresses based on
the .so.

TBR=ulan@chromium.org

Change-Id: I16f78c91106dc85334a8b0034c96b19442af7b05
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627545
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61803}
2019-05-23 16:56:24 +00:00
Jaroslav Sevcik
a7e5504d83 [cleanup] Stop using the now-unused deopt_count from feedback vector.
Unfortunately, we still have to keep the field because GC mole and Torque
do not support platform specific padding well
(see http://crbug.com/v8/9287).

Bug: v8:9183
Change-Id: I2210be4b8174c97bc82145605f9b862aac3bdc37
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1624791
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Commit-Queue: Jaroslav Sevcik <jarin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61802}
2019-05-23 16:34:54 +00:00
Michael Lippautz
aa1b81b697 [heap] Fix global memory scheduling
Rework limit computation:
- Model controller as static classes based on traits.
- Compute growing factors for both controllers and pick the
  larger growing factor for both controllers.
- Factor out limit computation in its own function.

Bug: chromium:948807
Change-Id: Id466a66d7aa573de91ad388ea9218e9f6721d19a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627534
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61801}
2019-05-23 16:20:24 +00:00
Clemens Hammacher
e448740e2a [wasm] Use PRIxPTR for printing addresses
Avoid casting to {void*} just for printing with "%p". Instead, use the
standard "PRIxPTR", prefixed with "0x". This allows to directly print
addresses.

Drive-by: Remove other unneeded pointer casts; "%p" accepts any pointer
          type.

R=mstarzinger@chromium.org

Bug: v8:9183
Change-Id: I38c9575babaf04689fbd4568c90d593c5a591540
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627339
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61800}
2019-05-23 16:06:46 +00:00
Peter Marshall
9a2e4693a0 [tracing] Add a perfetto consumer base class
Split the JSONConsumer into a base case and subclass so that we can
implement different consumers without needing to repeat the code that
deals with the finished semaphore and endpoint setters/getters.

This makes it possible to add a test consumer that just holds the trace
events in memory in a later CL.

This CL re-uses the existing perfetto-consumer.h file to some extent,
but it was accidentally leftover from a previous CL where we stopped
using it and switched to the JSON consumer instead.

Cq-Include-Trybots: luci.v8.try:v8_linux64_perfetto_dbg_ng
Bug: v8:8339
Change-Id: I56c305833c8937da76a8e6defbe7a52c59b25106
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1621938
Commit-Queue: Peter Marshall <petermarshall@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61799}
2019-05-23 15:52:46 +00:00
Clemens Hammacher
93526b8543 [wasm][gc] Lower limit to trigger GC
Since we currently require at least 1 MB of code to be potentially
dead, we will never trigger GC for small modules.
This CL lowers the threshold to 64 kB (plus 10% of committed code
space), which has basically no effect on large modules, but ensures
that we also run GCs on small modules.

R=mstarzinger@chromium.org

Bug: v8:8217
Change-Id: Ie76787af5ec7deb2e335303c2a98b81aeae6d4ef
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627341
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61798}
2019-05-23 15:31:36 +00:00
Frederik Gossen
0eae59594f [wasm-hints] Add tool to inject compilation hints into Wasm modules
The python script allows to inject hints into a Wasm module. Hints are
injected into a newly created custom section named "compilationHints"
that is used by the compiler to determine its compilation strategy. The
section is placed after the functions section and before the code
section.

Bug: v8:9003
Change-Id: I531c57e4269ff9ae42b95be3515d2409627d6fb9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1619865
Commit-Queue: Frederik Gossen <frgossen@google.com>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61797}
2019-05-23 15:16:46 +00:00
Georg Schmid
e588ff10e5 Make LoadElimination aware of const fields (Part 2; stores)
Adds const information to store field accesses and uses it in load elimination

Change-Id: I00765c854c95c955dabd78557463267b95f75eef
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1611543
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Commit-Queue: Georg Schmid <gsps@google.com>
Cr-Commit-Position: refs/heads/master@{#61796}
2019-05-23 15:06:47 +00:00
Clemens Hammacher
cf138bd3d4 [wasm][gc] Reset dead code counter when triggering GC
The {new_potentially_dead_code_size_} counter is used to decide when to
trigger the next GC. Without resetting, we will trigger lots of GCs
once the counter hits the limit, see
"V8.WasmModuleNumberOfCodeGCsTriggered" counter.

R=mstarzinger@chromium.org

Bug: v8:8217
Change-Id: I046b84d1f67f8cadb02fd3f876bb8c645e24edee
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627340
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61795}
2019-05-23 15:02:46 +00:00
Andreas Haas
5cf5992a56 [wasm] Initialize IFT only for table 0
The indirect function table only exists for table 0 at the moment.
Therefore we should initialize it only for table 0.

R=mstarzinger@chromium.org

Bug: chromium:964607
Change-Id: I88a3a5cb5ebec7f0456adc2cebdf5cc499b22761
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1624804
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61794}
2019-05-23 14:55:46 +00:00
Milad Farazmand
157b9181f4 s390: [cleanup] Avoid {Object::operator->}
Port 878ccb33bd

Original Commit Message:

    This CL was generated by an automatic clang AST rewriter using this
    matcher expression:

      callExpr(
        callee(
          cxxMethodDecl(
            hasName("operator->"),
            ofClass(isSameOrDerivedFrom("v8::internal::Object"))
          )
        ),
        argumentCountIs(1)
      )

    The "->" at the expression location was then rewritten to ".".

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

Change-Id: Ibe92f0332da0e478f213880462b4d3460f8260c0
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627569
Reviewed-by: Junliang Yan <jyan@ca.ibm.com>
Commit-Queue: Milad Farazmand <miladfar@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#61793}
2019-05-23 14:47:16 +00:00
Michael Starzinger
32e48cf510 [wasm] Support {WebAssembly.Function} object construction.
This makes the WebAssembly function constructor return a proper function
object. Note that the returned object is not yet callable, only the
prototype structure is in place.

R=jkummerow@chromium.org
TEST=mjsunit/wasm/type-reflection
BUG=v8:7742

Change-Id: If6a3d0ae7078b5526606eef1b8fd4815353b850b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627343
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61792}
2019-05-23 14:32:44 +00:00
Clemens Hammacher
be62dcc2c0 [wasm] Publish Liftoff code before starting TurboFan
The previous logic published whenever a TurboFan function was
*finished*. Since we compile big functions first, the first TurboFan
compilation can take quite some time, and we will only publish
previously compiled Liftoff functions once that first TurboFan
compilation is done.
This CL changes that logic to publish all previous results *before*
starting a TurboFan compilation.

Drive-by: Add some trace events for interesting events.

R=ahaas@chromium.org

Bug: v8:8916, chromium:966351, chromium:944755
Change-Id: I669d6ea16bdc3f29685df153a7ed45875c28a843
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627532
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61791}
2019-05-23 14:22:24 +00:00
Yang Guo
dec3298d9c Move utility code to src/utils
NOPRESUBMIT=true
TBR=mstarzinger@chromium.org

Bug: v8:9247
Change-Id: I4cd6b79a1c2cba944f6f23caed59d4f1a4ee358b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1624217
Commit-Queue: Yang Guo <yangguo@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61790}
2019-05-23 14:13:34 +00:00
Michaël Zasso
f89e555956 [api] Fix compilation issue with macOS
Fixes the following error caught by the Node.js CI:

../deps/v8/src/api.cc:8943:10:
  error: no viable conversion from returned value of type
  'unique_ptr<v8::internal::MicrotaskQueue, default_delete<v8::internal::MicrotaskQueue>>'
  to function return type
  'unique_ptr<v8::MicrotaskQueue, default_delete<v8::MicrotaskQueue>>'

  return microtask_queue;
         ^~~~~~~~~~~~~~~

Change-Id: Ic09dab46bb8f87a2b3b59f5836e0883bfe0e9681
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627533
Commit-Queue: Michaël Zasso <mic.besace@gmail.com>
Commit-Queue: Yang Guo <yangguo@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61789}
2019-05-23 13:54:14 +00:00
Toon Verwaest
5cf05dca69 [json] Restore string two-to-one-byte conversion during internalization
This was accidentally dropped when unifying the internalization code.

Change-Id: I2fd7127f85f0e3e9abd1ae834130f0c9da37363e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627529
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61788}
2019-05-23 13:42:44 +00:00
Jakob Gruber
7b38639496 [mksnapshot] Remove target OS defines
These were added to support specific cross-compile scenarios that
should now be covered by the --target-os and --target-arch flags.

Bug: v8:9103
Change-Id: I848f4f39cecc83f9ec8529c4f8855662059e3dc5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1624219
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Peter Marshall <petermarshall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61787}
2019-05-23 13:31:54 +00:00
Clemens Hammacher
c8e6a633ed Remove d8 from .gitignore
We now have a src/d8 directory, and having "d8" in .gitignore makes git
ignore all new files in this directory, and also hides the directory in
some IDEs.

R=yangguo@chromium.org

No-Try: true
Change-Id: I3106378417c1fe9ebc369275eb52d5438cee8825
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627530
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61786}
2019-05-23 13:21:45 +00:00
Jakob Gruber
649d759f82 [mksnapshot] Split out platform embedded file writers
Split out embedded file writers for AIX, Windows, and macOS. These are
no longer selected by compile-time defines (e.g. V8_OS_WIN,
V8_TARGET_ARCH_X64) but by --target-os and --target-arch runtime
flags.

Bug: v8:9103
Change-Id: I5d5cac15e48b5c743d74f8a382606a6194ba7865
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1624216
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Peter Marshall <petermarshall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61785}
2019-05-23 12:47:49 +00:00
Simon Zünd
2b7ab6ad3e [stack-trace] Add additional fields to StackFrameInfo
This CL adds all fields to StackFrameInfo that are necessary to
stringify a stack trace frame. This is another step towards
disentangling symbolizing and serializing:

  - Symbolization collects all the necessary strings, numbers and
    flags for a stack trace frame.
  - Serialization turns the symbolized stack trace frame into a
    string.

Drive-by: Moves the lazy initialization of StackFrameInfo into the
private getter.

Bug: v8:8742
Change-Id: Ic3e0fb6b3d0f0e260014af44380f1f30216b1b26
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627346
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Simon Zünd <szuend@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61784}
2019-05-23 12:36:10 +00:00
Peter Marshall
4861df10b8 [tracing] Fix perfetto tests
I accidentally broke this with the last CL because the FYI bot does not
block landing.

Add initialization of perfetto when building with perfetto enabled.

Cq-Include-Trybots: luci.v8.try:v8_linux64_perfetto_dbg_ng
Bug: v8:8339
Change-Id: I10378b72bff731fac6caa75df37a355df4b804dc
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627345
Auto-Submit: Peter Marshall <petermarshall@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Peter Marshall <petermarshall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61783}
2019-05-23 12:30:59 +00:00
Jakob Gruber
302a49c6b3 [logging] Systematically emit CodeCreateEvents for builtins
Introduce a single point to emit CodeCreateEvents for all builtins in
Isolate::Init. At this location, we cover both the case of builtin generation
(e.g. in mksnapshot) and deserialized builtins (in standard builds),
whereas previously we only emitted events post-builtin-generation.

In order to preserve behavior for bytecode handler events, pack the bytecode
and operand scale into our existing builtin metadata table.

Drive-by: Update way-out-of-date comment in the static initializer
check.

Bug: v8:8674
Change-Id: Iced8f73568e920846cde6f7b0a9c1e61844258ad
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627337
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Reviewed-by: Dan Elphick <delphick@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61782}
2019-05-23 11:55:36 +00:00
Georg Neis
c2f029af5c [turbofan] Teach serializer about soft deopts
When encountering uninitialized feedback, mark the environment as dead
such that we skip over the following bytecodes. Start full processing
again when we reach a bytecode that is either a jump target or an
exception handler entry. For now, don't support this optimization when
compiling for OSR.

Bug: v8:7790
Change-Id: I8177b7fa31ea43d205a2708310b0b0e67302001e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1621930
Commit-Queue: Georg Neis <neis@chromium.org>
Reviewed-by: Michael Stanton <mvstanton@chromium.org>
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61781}
2019-05-23 11:36:11 +00:00
Peter Marshall
d5688b1f23 Reland "[tracing] Add a configurable output stream for perfetto tracing"
This is a reland of a03ed62679

Removed the added test which was failing on win32. The test was unrelated
to the CL; we can add it later.

Original change's description:
> [tracing] Add a configurable output stream for perfetto tracing
>
> Add the ability to provide perfetto with an output stream for the JSON
> consumer rather than hardcode it. D8 will use this interface exclusively
> once the old trace controller is removed.
>
> Also add a test for scope-managed trace events and their duration - this
> was leftover from a previous CL.
>
> Cq-Include-Trybots: luci.v8.try:v8_linux64_perfetto_dbg_ng
> Bug: v8:8339
> Change-Id: I1c45e17e528b549a4cfdaecabd33c7ac4ab4af77
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1611801
> Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> Reviewed-by: Jakob Gruber <jgruber@chromium.org>
> Commit-Queue: Peter Marshall <petermarshall@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#61753}

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

Bug: v8:8339
Change-Id: I3442a4d111e12947c107e7d0c226ae934acd06e4
Cq-Include-Trybots: luci.v8.try:v8_linux64_perfetto_dbg_ng
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627334
Reviewed-by: Peter Marshall <petermarshall@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Peter Marshall <petermarshall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61780}
2019-05-23 11:35:07 +00:00
Georg Neis
ee687e4325 [turbofan] Remove obsolete always-on flag --inline-into-try
Change-Id: Ib1233607236c991af0125f0197b9f89b10b4519d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1625990
Commit-Queue: Georg Neis <neis@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61779}
2019-05-23 11:31:56 +00:00
Tobias Tebbi
f589d56101 [torque] move class tests to unittests
This avoids the generation of fake external classes.

Bug: v8:7793
Change-Id: I9744b299d3ec474d72b298b4f6143f95e345d1d9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1625991
Reviewed-by: Simon Zünd <szuend@chromium.org>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61778}
2019-05-23 11:00:31 +00:00
Georg Neis
b509f21ec1 [turbofan] Be consistent about printing ObjectRefs
We were sometimes printing the data pointer, and sometimes the handle
location. This CL always uses the existing operator<< overload to print
ObjectRefs, which currently means printing the data pointer.

Bug: v8:7790
Change-Id: Ic5e2dad075678d2250bc0bcb170046d055680572
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1625989
Reviewed-by: Michael Stanton <mvstanton@chromium.org>
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Auto-Submit: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61777}
2019-05-23 10:59:27 +00:00
Clemens Hammacher
e1933eb647 Add recent code rewrite to .git-blame-ignore-revs
R=leszeks@chromium.org

No-Try: true
Bug: v8:9183
Change-Id: I9372bdc5d3789a1bbc50ef2737577c4f60173bce
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627342
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61776}
2019-05-23 10:38:45 +00:00
Frederik Gossen
842557322d [wasm-hints] Add tool to read Wasm compilation hints
The python script allows to read the custom section "compilationHints"
from a Wasm module. It prints all hints to standard out.

Bug: v8:9003
Change-Id: Ife8173e3267557d8adf4b6739f45060d386f25dd
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1619764
Commit-Queue: Frederik Gossen <frgossen@google.com>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61775}
2019-05-23 09:57:53 +00:00
Clemens Hammacher
0adf11f709 Fix compile errors on tsan and no-i18n
This fixes compile errors after https://crrev.com/c/1624788.

TBR=jkummerow@chromium.org

No-Try: true
Bug: v8:9183, v8:3770
Change-Id: I982e77e86389163f1549bbb02621b17972bbc158
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627336
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61774}
2019-05-23 09:35:11 +00:00
Peter Marshall
626b952562 [cleanup] Remove name from ElementsAccessor
This is only used by ElementsKindToString(!).

Implement ElementsKindToString with a big 'ol switch. The compiler
will give us an error if we forget an ElementsKind.

Bug: v8:9183
Change-Id: I1ed73ecac33aa7318a97f31794473d9afa16961c
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1624802
Commit-Queue: Peter Marshall <petermarshall@chromium.org>
Reviewed-by: Simon Zünd <szuend@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61773}
2019-05-23 09:29:15 +00:00
Benedikt Meurer
130f919217 [test] Make tests pass with the GC fuzzer.
The tests need to properly hold on to the original fast-mode map,
otherwise the GC might clear that, and so the NormalizedMapCache
lookup would fail due to that.

Bug: chromium:963411, v8:9114, v8:9183, v8:9267
Change-Id: Ic41ed363959a5c182c74097767dc14c366076e17
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627333
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61772}
2019-05-23 09:08:45 +00:00
Benedikt Meurer
99a927c692 [api] Remove obsolete FunctionTemplate::SetHiddenPrototype().
The `FunctionTemplate::SetHiddenPrototype()` API was deprecated
beginning of the year and all uses in Node.js and Chrome have been
removed appropriately. This removes the implementation of the method
and the bit in the `FunctionTemplateInfo`, but retains the bit in
the Map for now. That will be cleaned up as a second step later.

Bug: v8:9183, v8:9267
Change-Id: I9aa2fc484b3321f4f42a29a0a38d72a6d30054a7
Cq-Include-Trybots: luci.chromium.try:linux-rel,win7-rel
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627329
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61771}
2019-05-23 09:05:56 +00:00
Benedikt Meurer
5b46f5736f [cleanup] Remove the Map::IsDictionaryMap() method.
There's a `Map::IsDictionaryMap()` method in addition to the
`Map::is_dictionary_map()`, which apparently do very different things:
The former checks whether the instance type of the Map is in a certain
range (FIRST_DICTIONARY_TYPE to LAST_DICTIONARY_TYPE), while the latter
checks the `is_dictionary_map` bit (which means that the backing store
for the properties of a JSObject is in slow mode). To make matters worse
there's also `CodeStubAssembler::IsDictionaryMap()`, which does the bit
check similar to `Map::is_dictionary_map()`. And to make matters even
worse the FIRST_DICTIONARY_TYPE to LAST_DICTIONARY_TYPE range also
contains instance types for classes that aren't subclass of `Dictionary`
(despite a comment stating the opposite).

So in conclusion it's best to remove the confusing
`Map::IsDictionaryMap()` method, which is anyways wrong, and just test
explicitly for `NameDictionary`, `NumberDictionary` or
`GlobalDictionary` in the appropriate places.

Bug: v8:9183
Change-Id: If35f73261e3cc96938ebf499bf32be3ec725288b
Cq-Include-Trybots: luci.chromium.try:linux-rel,win7-rel
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627330
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61770}
2019-05-23 09:02:26 +00:00
Yang Guo
a0c3797461 Move more relevant files to src/objects
TBR=bmeurer@chromium.org,leszeks@chromium.org

Bug: v8:9247
Change-Id: I8d14d0192ea8c705f8274e8e61a162531826edb6
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1624220
Reviewed-by: Yang Guo <yangguo@chromium.org>
Reviewed-by: Hannes Payer <hpayer@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61769}
2019-05-23 08:52:30 +00:00
Clemens Hammacher
d95f82e6e7 [cleanup] Remove {operator->} on Object and subtypes
For consistency, {Object} members should only be accessed via ".".
CL https://crrev.com/c/1624209 cleaned up the code base already. This
CL removes the now dead operator.

R=jkummerow@chromium.org

Bug: v8:9183, v8:3770
Change-Id: I599dcd49d79bfc68f970fe872b64b3b2680cddd5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1624788
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61768}
2019-05-23 08:44:34 +00:00
Yang Guo
7b12e3b94b Remove some unused string constant
R=szuend@chromium.org

Change-Id: I7d8eb6f26dd0cecd749a66cd2b240ff27cbba985
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1621927
Commit-Queue: Yang Guo <yangguo@chromium.org>
Reviewed-by: Simon Zünd <szuend@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61767}
2019-05-23 08:34:04 +00:00
Yang Guo
b72941e8b0 Move src/callable.h to src/codegen
Bug: v8:9247
Change-Id: Iaed837e146603c37b0ad64605405c442154cf1b0
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1624222
Commit-Queue: Yang Guo <yangguo@chromium.org>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61766}
2019-05-23 08:18:05 +00:00
Sigurd Schneider
9aa8b51704 [runtime] Remove explicit OneByte/TwoByte from InternalizeString
The type of the argument makes it clear what we're internalizing, and this
allows us to choose either one based on a template parameter.

Change-Id: I6d7865e7fdef364f6cf10ff9267034df182d7539
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1624212
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61765}
2019-05-23 08:02:32 +00:00
Clemens Hammacher
878ccb33bd [cleanup] Avoid {Object::operator->}
This CL was generated by an automatic clang AST rewriter using this
matcher expression:

  callExpr(
    callee(
      cxxMethodDecl(
        hasName("operator->"),
        ofClass(isSameOrDerivedFrom("v8::internal::Object"))
      )
    ),
    argumentCountIs(1)
  )

The "->" at the expression location was then rewritten to ".".

R=jkummerow@chromium.org
TBR=mstarzinger@chromium.org,verwaest@chromium.org,yangguo@chromium.org

Bug: v8:9183, v8:3770
No-Try: true
No-Tree-Checks: true
Change-Id: I0a7ecabdeafe51d0cf427f5280af0c7cab96869e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1624209
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Yang Guo <yangguo@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61764}
2019-05-23 07:52:07 +00:00