Commit Graph

59348 Commits

Author SHA1 Message Date
Dan Elphick
501739245c [api] Tweak SharedMemoryStatistics Api
Move the API from Isolate to V8 and add better memory fields.

Bug: v8:7464
Change-Id: Ic82c7c74ac8f20a2f2cb896dc0203fdd0b5d8d5f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1905546
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Dan Elphick <delphick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64856}
2019-11-08 12:29:51 +00:00
Michael Starzinger
bfe1328565 [wasm] Remove runtime call support from Liftoff.
This removes the support to emit runtime calls in Liftoff code and uses
WebAssembly runtime stubs instead. Calls to such stubs are smaller and
more efficient. They also use embedded builtins directly instead of the
on-heap {Code} object trampolines. This also removes the last use of a
runtime call that passes a dynamically loaded CEntry builtin from the
macro assembler.

R=clemensb@chromium.org

Change-Id: I9fa9f3b7a2b66cb76a677b70ce3cee49cb340f0f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1903443
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64855}
2019-11-08 11:23:12 +00:00
Clemens Backes
2daa1138e3 [bits] Make bit rotation branchless
A minor optimization to the four bit rotation functions.

Drive-by: Make them constexpr.

R=ahaas@chromium.org

Bug: v8:9810
Change-Id: Ic563310030aa487f976017032291a553705d1ec2
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1903972
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64854}
2019-11-08 10:50:40 +00:00
Clemens Backes
af608d4bd4 [utils] Remove unused classes and functions
This removes dead classes and functions from utils.h.

R=sigurds@chromium.org

Bug: v8:9810, v8:8912
Change-Id: I8e15600f77b8ccc8ce25b4fd25e6a1b4303ad657
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1903969
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64853}
2019-11-08 10:49:37 +00:00
Andreas Haas
08c0abb565 [gm.py] Add wasm-spec-tests and wasm-js as test targets
R=jkummerow@chromium.org

Notry: true
Bug: v8:9810
Change-Id: I3859508de250225b9d8ae322e107079f6dc0c88b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1903974
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64852}
2019-11-08 10:00:00 +00:00
Clemens Backes
fa056cd088 [utils] Move {WhichPowerOf2} to base::bits
{WhichPowerOf2} is basically the same as {CountTrailingZeros}, with a
restriction to powers of two. Since it does not use or depend on any v8
internals, it can be moved to src/base/bits.h.
This CL also changes the implementation to use the CTZ builtin if
available, and falls back to popcnt otherwise.

Drive-by: Make it constexpr, and rename to {WhichPowerOfTwo}.

R=sigurds@chromium.org

Bug: v8:9810, v8:8912
Change-Id: I8368d098f9ab1247f3b9f036f1385a38de10cc6a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1903966
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64851}
2019-11-08 09:45:50 +00:00
Clemens Backes
2a32d96bd2 [utils] Remove BoolToInt helper
This function is trivial, can and be inlined to the single use.
This makes utils.h a tiny little bit smaller.

R=verwaest@chromium.org

Bug: v8:9810, v8:8912
Change-Id: I877f3713530644a1cb9e0f286cf87f55072d33da
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1903444
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64850}
2019-11-08 08:29:15 +00:00
Clemens Backes
77a2b4c18b [wasm] Improve code size estimate for streaming
In streaming compilation, we were computing a way too low code size
estimate, since all {WasmFunction::code} fields were still zero when we
were calling {EstimateNativeModuleCodeSize}. This lead to many separate
code spaces being created during compilation, creating significant
performance and memory overhead.

This CL fixes this by passing the code section length when creating the
{NativeModule}. From this, we can compute the code size estimate just as
before.

Drive-by: Rename "functions_count" to "num_functions" in
{ProcessCodeSectionHeader} to be consistent with the declaration.

R=ahaas@chromium.org

Bug: v8:9950
Change-Id: I30a54c01ed24d0dfecb8a4b6d123015f1803ddeb
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1903439
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64849}
2019-11-08 08:28:11 +00:00
Ulan Degenbaev
fb7676769b [heap] Switch main thread marking visitors to MarkingVisitorBase
Now incremental marker and stop-the-world marker use the same visitor,
which is derived from MarkingVisitorBase. This removes code duplication
and also should reduce binary size.

The marking worklist processing code also changes to not color the
object black before visiting it. Instead the visitor colors the
object black in ShouldVisit method.

Bug: chromium:1019218
Change-Id: I57971122f3c77ad2770b6754d696b79d802ef1a4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1901271
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64848}
2019-11-08 08:21:51 +00:00
v8-ci-autoroll-builder
f3b9d9e55c Update V8 DEPS.
Rolling v8/build: 6f08017..3cf8d94

Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/1944f6e..f9004ee

Rolling v8/third_party/depot_tools: 23247b9..1917f7a

Rolling v8/tools/clang/dsymutil: OWlhXkmj18li3yhJk59Kmjbc5KdgLh56TwCd1qBdzlIC..M56jPzDv1620Rnm__jTMYS62Zi8rxHVq7yw0qeBFEgkC

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

Change-Id: Ie03147c4aaff505fd88c8de6a435db9ae8fdc997
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1905106
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@{#64847}
2019-11-08 03:50:59 +00:00
Ng Zhi An
5e514a9693 [wasm-simd] Implement i64x2 splat extract replace for arm
Bug: v8:9813
Change-Id: Ie99fdbf5307a1515a1838ac6902a5bcd99d11e14
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1900660
Reviewed-by: Deepti Gandluri <gdeepti@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64846}
2019-11-07 21:28:39 +00:00
Clemens Backes
dde3166beb [wasm] Remove one {NewNativeModule} method
This makes the {code_size_estimate} computation explicit in the caller,
and removes one of the two {NewNativeModule} constructors. It turns out
that the calculation is totally off in the streaming calculation phase,
since no function bodies have been parsed yet. So all
{WasmFunction::code} fields are still empty, and we compute an estimate
that is way too low.
This CL prepares the actual fix for that (by computing a better estimate
at specific call sites).

R=ahaas@chromium.org

Bug: v8:9950
Change-Id: I68a891c97e5f65a9c7e73e21684bdfa7e261e216
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1901273
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64845}
2019-11-07 18:07:29 +00:00
Milad Farazmand
43ad81f36b [wasm-simd] Using the correct type from ValueType enum
Change-Id: I145dd2ea5fd2308301ba7e6710f84f276dc70367
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1903809
Reviewed-by: Zhi An Ng <zhin@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Milad Farazmand <miladfar@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#64844}
2019-11-07 17:59:40 +00:00
Santiago Aboy Solanes
1bafcc6b99 [test] MultipleIsolates is only slow when not in pointer compression
Change-Id: Ia6b805c48f71cea7a0f0ada06c9a35713ed49f28
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1903968
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64843}
2019-11-07 16:56:26 +00:00
Nico Hartmann
0fc1f3a9b7 Fixes argument CHECKs in serializer that are too strict
Bug: chromium:1021712
Change-Id: I9523760f2fa11726dd7015058b2267035f3f9f7a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1903442
Commit-Queue: Nico Hartmann <nicohartmann@chromium.org>
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64842}
2019-11-07 16:51:16 +00:00
Clemens Backes
0ede421ba1 [wasm] Fix and extend comments on JS API
R=ahaas@chromium.org

Bug: v8:9810
Change-Id: I9f6d13445c8c577256cabe070f9082d041af3a2d
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1903437
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64841}
2019-11-07 15:29:16 +00:00
Dominic Farolino
d9a81bd55c Fix dir() and table() method lengths
This CL fixes the lengths of the console dir() and table() methods to
match the WHATWG Console Standard and the IDL WPTs.

R=mathias@chromium.org

Bug: chromium:948678
Change-Id: I2c603e202a3e5995eec06dadac09807f76ee9167
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1902968
Reviewed-by: Mathias Bynens <mathias@chromium.org>
Commit-Queue: Dominic Farolino <dom@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64840}
2019-11-07 15:09:36 +00:00
Hannes Payer
3b1f3dd76e Add dinfuehr@ to src/heap/OWNERS
Change-Id: I5c6004e77ffdf76679ecf764d3048917f2890b23
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1903438
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
Commit-Queue: Hannes Payer <hpayer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64839}
2019-11-07 15:00:36 +00:00
Zhao Jiazhong
ca8db078ca [mips][Liftoff] Implement i64 shift with immediate
port 42e8c23 https://crrev.com/c/1899770

Original Commit Message:

  [Liftoff] Implement i64 shift with immediate

  Especially on ia32 and x64, shifts with immediate generate much shorter
  and more efficient code.

Change-Id: Ia7f20db8e3ed88efe8c09e4afc9dbadc8e3b0362
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1903289
Auto-Submit: Zhao Jiazhong <kyslie3100@gmail.com>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64838}
2019-11-07 14:00:45 +00:00
Andreas Haas
40c68c36dc [backingstore] Check maximum size in API creation functions
With this CL we prevent embedders to allocate backing stores that are
bigger than what can be handled by V8.

R=ulan@chromium.org
CC=jkummerow@chromium.org

Bug: chromium:1008840
Change-Id: Ifff5e14c42fbdae187283540a54ffbfeda935574
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1900455
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64837}
2019-11-07 12:40:15 +00:00
Sigurd Schneider
0dfd9ea512 [coverage] Fix coverage with default arguments
In the presence of default arguments, the body of the function gets
wrapped into another block. This caused our trailing-range-after-return
optimization to not apply, because the wrapper block had no source
range assigned. This CL correctly assignes a source range to that block,
which allows already present code to handle it correctly.

Note that this is not a real coverage bug; we've just been reporting
whitespace as uncovered. We're fixing it for consistency.

Originally reported on github.com/bcoe/c8/issues/66

Bug: v8:9952
Change-Id: Iab3905f558eb99126e0dad8072d03d0a312fdcd3
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1903430
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64836}
2019-11-07 12:34:35 +00:00
Dan Elphick
db7140229c [builtins] Make CEntry builtin Code objects non-executable
Make every CEntry_* builtin except
CEntry_Return1_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit
non-executable since they don't seem to be needed. The remaining one is
still required until Linkage::GetCEntryStubCallDescriptor is converted
to use CallBuiltinPointer.

Bug: v8:9338
Change-Id: Id1fcad95958ec3299328f7ed0e322ff2f766cfd4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1897540
Commit-Queue: Dan Elphick <delphick@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64835}
2019-11-07 12:25:25 +00:00
Santiago Aboy Solanes
07f26fc606 [ptr-compr] Remove the DecompressionElimination Reducer
Since the turbo_decompression_elimination flag is removed, there
are several methods in machine-type.h that get simplified, e.g
TypeCompressedTaggedPointer() can be replaced by just
"TaggedPointer()".

Also Removing the creation of Change to/from Compressed nodes.
Removing these Change nodes' logic is left to a follow-up CL.

Bug: v8:7703
Change-Id: Iff1f9aa8361189cf781a26317fd342b942fd5aa4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1897537
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64834}
2019-11-07 11:42:45 +00:00
Santiago Aboy Solanes
2d0d184d85 [turbolizer] Snappier transitions when zooming selections
Bug: v8:7327
Change-Id: I79c55d93b8a9f05b81fcbb1897d946cb56e99370
Notry: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1901270
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64833}
2019-11-07 11:09:44 +00:00
Dominik Inführ
5e97378f92 [heap] Promote young objects by default in MC
Start experiment to promote all young live objects during mark-compact.

The last CL https://crrev.com/c/1879938 got reverted because of a flaky
test, see v8:9192.

Change-Id: I16897f45fffeafbb7e70c21899976a4c026e69ba
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1903432
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64832}
2019-11-07 11:01:14 +00:00
Dan Elphick
276b13cb00 [api] Create SharedMemoryStatistics API
Creates new APIs to get Shared Memory statistics like the size of
read-only space and potentially the memory used by shared array buffers.

Currently all shared memory statistics are zero.

Bug: v8:7464
Change-Id: Ib8d58f885beaa1d65ccef7b64dd4f3db4149bca3
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1900465
Commit-Queue: Dan Elphick <delphick@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64831}
2019-11-07 10:54:36 +00:00
Dominik Inführ
51dbe16ce0 Increase old space size for regress-678917.js
When --always-promote-young-mc is enabled, this test becomes more
flaky. Increase old space size, such that objects fit into the
old generation during mark-compact.

Bug: v8:9192
Change-Id: Iad3b914c7d5b7bafa752f3b6178684a137bd8dad
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1890101
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64830}
2019-11-07 10:19:45 +00:00
Dominik Inführ
0b27777e8e [heap] Reuse SweepAndRetryAllocation function
Reuse sweeping+free list allocation code from
SweepAndRetryAllocation in RawSlowRefillLinearAllocationArea.

Share code such that bugs like the linked one are less likely to
happen.

Bug: chromium:1020981
Change-Id: I0abfaa9f7a8f2b62ad24ca85774130f354104e93
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1901277
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64829}
2019-11-07 09:56:14 +00:00
Clemens Backes
a1e8c6fba8 Reland "[wasm] Remove fixed limit on number of background tasks"
This is a reland of 54379af9b0. Instead
of removing the limit completely, this limits to 128 parallel tasks
now. This avoids some special handling for the previous default value
of -1.

Original change's description:
> [wasm] Remove fixed limit on number of background tasks
>
> After fixing https://crbug.com/v8/8916, background compilation scales
> far beyond 10 threads, especially for TurboFan (where much more work is
> parallelizable). Thus, remove the limit of 10 background compilation
> tasks, and use all available threads instead.
>
> R=mstarzinger@chromium.org
>
> Bug: v8:8916
> Change-Id: I13c30777e3c85b2de7901b5eac3e6a41457a56f9
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1893348
> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
> Commit-Queue: Clemens Backes <clemensb@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#64724}

Bug: v8:8916, chromium:1021442
Change-Id: Ie9a9368c74d26c4595c0e94e914b025e403daaa4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1899991
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64828}
2019-11-07 09:34:33 +00:00
Zhao Jiazhong
cd512c3d83 [mips][Liftoff] Implement i64 popcnt
port d710756 https://crrev.com/c/1895569

Original Commit Message:

  [Liftoff] Implement i64 popcnt

  This is the last remaining missing instruction from the MVP. This CL
  adds support for ia32, x64, arm, and arm64.
  For CPUs which do not support the POPCNT instruction, there exists a
  fallback implementation in C.

Change-Id: I2ebc7bc93c2a915f21139248ac1234146a1e8cb9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1902887
Auto-Submit: Zhao Jiazhong <kyslie3100@gmail.com>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64827}
2019-11-07 09:02:07 +00:00
Zhao Jiazhong
8c0b51a9e5 [mips][Liftoff] Implement i32 shift with immediate
port 9c4ffc3 https://crrev.com/c/1897539

Original Commit Message:

  [Liftoff] Implement i32 shift with immediate

  In fact, shifts are used most often with a fixed shift amount. This CL
  adds special handling for this in Liftoff, to generate shorter and
  faster code.

Change-Id: I71ae0013f88b928188e34a54da9ca93c617fd6e2
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1902888
Auto-Submit: Zhao Jiazhong <kyslie3100@gmail.com>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64826}
2019-11-07 09:01:03 +00:00
Jakob Gruber
98b76b4607 Re-enable mjsunit/big-object-literal in non-debug builds
Runtime of this test has improved since we initially skipped it. Let's
attempt unskipping on all non-debug builds.

Bug: v8:8411
Change-Id: I5d409f7359532e3d7d18f5b0a77765165478d44a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1903426
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Auto-Submit: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64825}
2019-11-07 07:35:55 +00:00
Matheus Marchini
48d964af83 snapshot: add size info for builtins on Posix
Lack of size information can cause debugging and observability tools to
misbehave or to fail. We can see the size for all builtins is zero with
objdump:

  $ objdump -t d8 | grep Builtins_ArgumentsAdaptorTrampoline
  0000000001084a00 l     F .text  0000000000000000              Builtins_ArgumentsAdaptorTrampoline
                                  ^
                                  Size is zero

Tools like bpftrace rely on the function size to guarantee a tracepoint
is added within function boundaries. Without size information, those
tools can't guarantee a tracepoint will be added safely.

Add .size directive for each builtin function, as described in
https://sourceware.org/binutils/docs-2.24/as/Size.html#Size, to fix this
issue. We can see with objdump that the size is properly set:

  $ objdump -t d8 | grep Builtins_ArgumentsAdaptorTrampoline
  00000000010bf820 l     F .text  0000000000000140              Builtins_ArgumentsAdaptorTrampoline

R=bmeurer@chromium.org, hpayer@chromium.org, verwaest@chromium.org, yangguo@chromium.org

Change-Id: I4cd2b0a12b629498dd9d7465cc1002dda37028c7
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1898807
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64824}
2019-11-07 07:23:45 +00:00
v8-ci-autoroll-builder
73110f6e69 Update V8 DEPS.
Rolling v8/build: 7e1e30f..6f08017

Rolling v8/third_party/depot_tools: 2150a69..23247b9

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

Change-Id: I9664886f2fb2771090b865ad89157010b45965e6
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1902488
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@{#64823}
2019-11-07 03:49:33 +00:00
Francis McCabe
7361981276 Mark try.js as a slow test in arm64 simulator
Bug:
Change-Id: I19a549f773d5a6ce9ffc5b869215e3bad9aebac6

Failing test: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20-%20arm64%20-%20sim%20-%20pointer%20compression/3128

Change-Id: I19a549f773d5a6ce9ffc5b869215e3bad9aebac6
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1897248
Commit-Queue: Francis McCabe <fgm@chromium.org>
Reviewed-by: Deepti Gandluri <gdeepti@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64822}
2019-11-06 21:59:13 +00:00
Sathya Gunasekaran
87eee7e983 Revert "[ic] Inline loads for heapnumber and cached string as ArrayIndex"
This reverts commit 0457bed1fa.

Reason for revert: doesn't help perf too much

Original change's description:
> [ic] Inline loads for heapnumber and cached string as ArrayIndex
> 
> Bug: chromium:1016738, chromium:1016709, v8:9449
> Change-Id: I5b50f21b3e40651e16201e63b4a7010b1bf0c639
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1897890
> Reviewed-by: Toon Verwaest <verwaest@chromium.org>
> Reviewed-by: Georg Neis <neis@chromium.org>
> Commit-Queue: Sathya Gunasekaran  <gsathya@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#64766}

TBR=neis@chromium.org,gsathya@chromium.org,verwaest@chromium.org

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

Bug: chromium:1016738, chromium:1016709, v8:9449
Change-Id: I8a68cac329f06fa47516ecd9708f1e91e5d15b77
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1901276
Reviewed-by: Sathya Gunasekaran  <gsathya@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Commit-Queue: Sathya Gunasekaran  <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64821}
2019-11-06 21:13:42 +00:00
Ulan Degenbaev
b33a8508cc [heap]: Make addition of detached contexts robust for GC
The (age, context) pair has to be added atomically in to the weak
array of detached contexts. Otherwise, GC may happen after insertion
of age and observe inconsistent state.

Bug: chromium:1016703
Change-Id: Icb20bed4359904b2d976986a236558542e314bbf
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1895573
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64820}
2019-11-06 17:59:21 +00:00
Ng Zhi An
465c97fe22 [wasm-simd] Implement load_splat and load_extend
Introduce new operator LoadTransform that holds a LoadTransformInfo param,
which describes the kind of load (normal, unaligned, protected), and a
transformation (splat or extend, signed or unsigned).

We have a new method that a full decoder needs to implement, LoadTransform,
which resuses the existing LoadType we have, but also takes a LoadTransform,
to distinguish between splats and extends at the decoder level.

This implements 4 out of the 10 suggested load splat/extend operations
(to keep the cl smaller), and is also missing interpreter support (will
be added in the future).



Change-Id: I1e65c693bfbe30e2a511c81b5a32e06aacbddc19
Bug: v8:9886
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1863863
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64819}
2019-11-06 17:42:22 +00:00
Sathya Gunasekaran
bebe6314b8 [test] Skip slow MultipleIsolates test on arm64
Change-Id: Idc0cd3a96ba329cf8175f22eea60b7614d73d929
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1901272
Commit-Queue: Sathya Gunasekaran  <gsathya@chromium.org>
Reviewed-by: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64818}
2019-11-06 17:08:18 +00:00
Milad Farazmand
99f9d22e40 PPC/s390: [wasm-simd] Implement f64x2 comparisons for arm
Port b6edadc09b

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

Change-Id: I3d4ea2be5f97688022733a36d36f9f86499b962d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1901124
Reviewed-by: Junliang Yan <jyan@ca.ibm.com>
Commit-Queue: Milad Farazmand <miladfar@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#64817}
2019-11-06 16:26:28 +00:00
Clemens Backes
24cfb07591 [Liftoff] Implement i64_rol and i64_ror
For now, both are implemented via a C call, just like i32_rol and
i32_ror. If they turn out to be critical for performance, we can still
implement them via hardware instructions on selected platforms.

R=jkummerow@chromium.org

Bug: v8:9919
Change-Id: I16affdfe397a08ef6a51d310f018b3a099e80e44
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1900454
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64816}
2019-11-06 15:37:03 +00:00
Michael Starzinger
bcd55e15d2 [x64] Remove dead {Assembler::call} method.
R=clemensb@chromium.org

Change-Id: I8dea48c688e827c9793f266a77781faee2c6a415
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1900461
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64815}
2019-11-06 15:29:58 +00:00
Jakob Gruber
802a86a4df [heap] Do not visit the dispatch table
Now that builtins are embedded into the binary unconditionally, GC
visitation can be reduced. The interpreter dispatch table points
directly at embedded instruction starts. It is initialized once in
Isolate::Init, and its contents are immutable afterwards.
Visitation by GC is not needed.

Drive-by: Remove outdated comment on IsWasmRuntimeStub.

Bug: v8:7873
Change-Id: I14edc0beebb31c04f1429346b57ade9e8d838670
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1899773
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64814}
2019-11-06 15:28:53 +00:00
Hans Wennborg
d9186855f1 Use update.py --package= instead of download_lld_mac.py and download_objdump.py
The separate download scripts for extra packages are going away and have been
replaced by update.py's new --package flag.

Bug: chromium:884608
Change-Id: I28f2f83a629a3fcda4a5524c10f9b10dd115e616
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1900462
Commit-Queue: Hans Wennborg <hans@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64813}
2019-11-06 15:13:09 +00:00
Michael Starzinger
125f727c72 [wasm][test] Remove obsolete TODO from interpreter cctest.
The test coverage in question is by now provided by a different set of
mjsunit tests, namely the "mjsunit/wasm/anyref-globals-interpreter"
suite which run all globals tests in --wasm-interpret-all mode.

R=ahaas@chromium.org
TEST=cctest/test-run-wasm-interpreter/ReferenceTypeLocals

Change-Id: I439b1ee74da3c36995bb3d5819e35d4074400868
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1901266
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64812}
2019-11-06 14:53:14 +00:00
Santiago Aboy Solanes
5f84573003 [ptr-compr] Add int comparison cases in DecompressionOptimizer
There is at least one case where a Load output flows into an
In32LessThanOrEqual node without any bitcasts or truncations in the
middle. We have to consider these cases in the reducer.

Bug: v8:7703
Change-Id: I1ed9c41e80c0603fd287d096c3050c5ae27c2b3e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1879945
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64811}
2019-11-06 14:52:09 +00:00
Michael Achenbach
a892854610 [foozzie] Add instruction-scheduling stress to correctness-fuzzing experiments
NOTRY=true

Bug: v8:9946
Change-Id: If5b5470709edeaa13f7dea4ca83948e28356f352
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1901268
Reviewed-by: Georg Neis <neis@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64810}
2019-11-06 14:45:47 +00:00
Michael Starzinger
330445cee4 [test][x64] Test disassembly of indirect call again.
R=clemensb@chromium.org
TEST=cctest/test-disasm-x64/DisasmX64

Change-Id: I011d0d5e25c472c5a62ad73edd42165e55b34e2b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1900460
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64809}
2019-11-06 14:38:41 +00:00
Igor Sheludko
94a8519a9a [tests] Skip tests that timeouts with --force-slow-path pt.2
No-Tree-Checks: true
No-Try: true
Change-Id: Ic756f1716a9667f10970e35992db5399ed54cacc
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1901267
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64808}
2019-11-06 14:28:58 +00:00
Georg Neis
ed0dce9d2f [tests] Exercise Turbofan's instruction scheduling
Turbofan's instruction scheduling is currently only enabled for
mksnapshot and has thus little test coverage. This CL introduces two
new test variants, "instruction_scheduling" and
"stress_instruction_scheduling", and activates them on a selection of
bots.

Change-Id: I5917fc781e289377c58f584c770c91e31765b2de
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1899778
Auto-Submit: Georg Neis <neis@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Reviewed-by: Michael Stanton <mvstanton@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64807}
2019-11-06 14:21:54 +00:00