Commit Graph

57558 Commits

Author SHA1 Message Date
Clemens Hammacher
9f8d52df20 [wasm] Fix non-const references in Liftoff
R=ahaas@chromium.org

Bug: v8:9429, v8:9396
Change-Id: I06657a7e339ed2f2c93f560bfcd3413761ad0733
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1701844
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62716}
2019-07-15 14:32:48 +00:00
Georg Neis
01a80fe30b Reland "Disabe FLAG_turbo_control_flow_aware_allocation again"
This is a reland of a6eabacfee. We
decided that this feature needs more work.

Bug: v8:9088
Change-Id: I937f722e9356be5eca72cdf1edd552d132ee25be
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1701855
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62715}
2019-07-15 14:25:57 +00:00
Jakob Gruber
b67ecd1d2d Add --trace-protector-invalidation flag
This is a convenience flag to trace and debug invalidations. The
assumption used to be that protectors are rarely invalidated, but this
may happen more frequently than expected in practice.

Bug: v8:9463,v8:9466
Change-Id: Ice051593bda647070bc48d535edd03ba96c7dfcd
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1695469
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62714}
2019-07-15 13:35:17 +00:00
Georg Neis
6805395d9b Revert "Temporarily remove --concurrent-inlining from --future"
This reverts commit 060b9ec4a8, as the
issue has been resolved.

Bug: v8:7790
Change-Id: Id8a56ad50a508eacd191f2777cc5afc0b838364f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1700078
Commit-Queue: Georg Neis <neis@chromium.org>
Commit-Queue: Michael Stanton <mvstanton@chromium.org>
Reviewed-by: Michael Stanton <mvstanton@chromium.org>
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Auto-Submit: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62713}
2019-07-15 12:59:20 +00:00
Georg Neis
e5678a6536 [turbofan] Make serializer properly handle resume targets
The bytecode graph builder may insert additional jumps for the
SwitchOnGeneratorState bytecode and for loop headers. This plays into
what the graph builder considers dead/alive. We want the serializer to
process all the bytecodes that the graph builder will process, so the
serializer needs to do something similar.

Bug: v8:7790
Change-Id: I1f1d51f4a8951149e365b3c998cef7f613bb4953
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1647694
Commit-Queue: Georg Neis <neis@chromium.org>
Reviewed-by: Michael Stanton <mvstanton@chromium.org>
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62712}
2019-07-15 12:48:07 +00:00
Georg Neis
b58298803a [turbofan] Move bytecode analysis to the serializer
When --concurrent-inlining is on, run bytecode analysis for all relevant
functions at serialization time, and store the results in the broker.

Change bytecode analysis such that running it for OSR produces information
that subsumes the non-OSR case. This lets us avoid doing and storing two
analyses for the top-level function in case we do OSR and the function
gets inlined into itself.

Bug: v8:7790
Change-Id: I7d5df0b2652e6e5c758c85578e51b4f8d041b0d9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1690959
Commit-Queue: Georg Neis <neis@chromium.org>
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Reviewed-by: Michael Stanton <mvstanton@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62711}
2019-07-15 12:41:57 +00:00
Yang Guo
4ee7697cd2 Remove unused Scope::force_context_allocation_
R=verwaest@chromium.org

Change-Id: Ibbf382ec1f7200142ebccc8eed6fe5dd1c2804bd
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1701846
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62710}
2019-07-15 12:39:27 +00:00
Benedikt Meurer
2aa9474986 [dx] Support some cross-context async stack traces.
When passing promises from other contexts to an `await`, the
--harmony-await-optimization doesn't kick in, and as such the
promise will be wrapped in a "native promise" (from this context).
That means the promises aren't chained immediately, but delayed
via a PromiseResolveThenableJob, which chains these promises on
the next turn of this contexts' microtask queue.

If there's anything happening on the macro task queue in between
this and the point when an exception is raised, the chaining will
have happened and we actually find our way back via the promise
chains. And this CL adds support for exactly that case. For other
cases, it's currently impossible to reconstruct the async stack
unfortunately, but we hope that this will help with the major
use cases, where the developer awaits on I/O.

Bug: v8:7522, v8:8673, v8:9487
Ref: nodejs/node#28680
Change-Id: Icc06c7df12644c2d8d43b6c7580ee06bb8f1024a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1701847
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62709}
2019-07-15 11:57:32 +00:00
Toon Verwaest
8109b4795e [ptr-compr] Remove unnecessary decompression in kArchStoreWithWriteBarrier
The object itself is already decompressed, and we're simply re-decompressing by
nuking the upper bits through sign extension.

Additionally this CL changes the branchless decompression sequence on x64 to be
cmov-based since that's shorter and faster. It's still slower than branchful
though, so we likely won't use it.

Change-Id: Ie6f9d38fb390b7300a236bf85d0db58d1ee959b0
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1701842
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62708}
2019-07-15 11:52:32 +00:00
Clemens Hammacher
56eaec9d49 [wasm] Split jump table and lazy compile table
We had both jump slots and lazy compile slots in the same table. This
increases the space per slot to the maximum of the two, even though we
often do not use lazy compilation and could have smaller jump slots.
This CL splits the two into two separate tables. The lazy compile table
will only be created on demand, and will never be patched.
The jump table now only contains jumps, and is more compact (which
might improve performance because of improved locality).

R=mstarzinger@chromium.org

Bug: v8:9477
Change-Id: Ie182873a1ec612f71d1b54447021a9a8f8ca59db
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1698393
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62707}
2019-07-15 10:37:02 +00:00
Benedikt Meurer
62c34970b7 [objects] Fix debug printing of JSAsyncFunctionObject and JSAsyncGeneratorObject.
Bug: v8:9487
Change-Id: I38e38195c803d048b858acca577ba43fc5c61ac5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1701841
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62706}
2019-07-15 10:33:02 +00:00
Georg Neis
db5969cb5f [turbofan] Avoid some non-const reference arguments
... by making them const or converting them to pointers.

Bug: v8:9429
Change-Id: If4a7832944f5dc35cec04c11087499a552a7469a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1700073
Commit-Queue: Georg Neis <neis@chromium.org>
Auto-Submit: Georg Neis <neis@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62705}
2019-07-15 10:25:22 +00:00
Peter Marshall
29e70b40d7 [cleanup] Remove parsing for ignored options in D8 TraceConfig
We never call GetTraceRecordMode() on the TraceConfig produced in D8
but instead always create the default ring buffer.

That means we ignore the "record_mode" argument supplied in config json
file.

Given we never use this we can remove the parsing code. The same thing
is true for enable_systrace and enable_argument_filter. All of these
are never used in V8 (they were copied from Chrome) but are part of the
public API so this CL just removes our parsing code for them but leaves
them in the API for now.

Bug: v8:8339
Change-Id: Iab5169536e20c19a784a55d013765125dd701773
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1698397
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Peter Marshall <petermarshall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62704}
2019-07-15 10:17:32 +00:00
Clemens Hammacher
2d277529b0 [utils] Fix Malloced implementation
According to the specification, class-specific {operator new} and
{operator delete} should be static methods. Interestingly, if the
{static} keyword is missing, the methods are implicitly static anyway.
This is confusing, so this CL adds the {static} keywords explicitly.
It also removes the redundant {Malloced::New} and {Malloced::Delete}
methods.

R=mlippautz@chromium.org

Bug: v8:9396
Change-Id: I1db7c87b816567cc1a9153d0b18e3dd4ae81dd6f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1700080
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62703}
2019-07-15 09:59:22 +00:00
Georg Neis
87896ff13e Unskip a test in 'future' configuration
This test no longer fails with concurrent inlining.
(Concurrent inlining is actually disabled in 'future' at the moment
but will be turned on again soon.)

Bug: v8:9094
Change-Id: I4d3f8021a7accff8cd670f3fef95a7995f1a9ba7
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1700076
Reviewed-by: Michael Stanton <mvstanton@chromium.org>
Commit-Queue: Michael Stanton <mvstanton@chromium.org>
Auto-Submit: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62702}
2019-07-15 09:58:03 +00:00
Georg Neis
46b1a52ea2 [turbofan] Make a non-const reference argument const
Bug: v8:9429
Change-Id: I4274206875edd61f36ac51c05d53158b6c1e17fd
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1700072
Auto-Submit: Georg Neis <neis@chromium.org>
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62701}
2019-07-15 09:33:07 +00:00
Georg Neis
52e7020aa7 [turbofan] Eliminate a non-const reference argument in scheduler
Bug: v8:9429
Change-Id: I48ae73fbd32b0ea4694bea738c42e34bd921c3c6
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1700074
Auto-Submit: Georg Neis <neis@chromium.org>
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62700}
2019-07-15 09:31:47 +00:00
Nico Hartmann
91154b3706 [turbofan] Non-speculative BigInt operators
This CL introduces new non-speculative operators BigIntAdd
and BigIntNegate. Instead of keeping speculative operators
until effect-control-linearization phase, they are now lowered
to non-speculative variants in the simplified lowering and
surrounded by the necessary checks. This adapts BigInt operators
to the common style of other operators (like Numbers).

Bug: v8:9407
Change-Id: I89ea7aef0d78c67b103971f8f63525b196ad3c0c
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1695467
Commit-Queue: Nico Hartmann <nicohartmann@google.com>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62699}
2019-07-15 08:27:47 +00:00
v8-ci-autoroll-builder
5664228a64 Update V8 DEPS.
Rolling v8/build: 3454c48..0998f8c

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

Change-Id: I821c7151d57d8b67daa49b1ed35198692c292fc1
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1698440
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@{#62698}
2019-07-15 03:34:01 +00:00
jiepan
6bc61c598a [wasm] Fix printing of wasm prefixed opcode
Problem description:
For prefixed WASM opcode, opcode prefix is printed as Unknown, not the opcode itself.

Take v128.load as an example:
before fix                  ->  after fix
Unknown, 0x00, 0x04, 0x00,  ->  kExprS128LoadMem, 0x04, 0x00,

Change-Id: Id0cc5c723d19f60ad4f4f6c6ca338b5658c98c7e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1694613
Commit-Queue: Jie Pan <jie.pan@intel.com>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62697}
2019-07-15 03:22:11 +00:00
v8-ci-autoroll-builder
76ad2c6e2e Update V8 DEPS.
Rolling v8/build: 2c98e63..3454c48

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

Change-Id: Iae143d41177d135ca2d0b4a49bd83ef8563a72b4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1698427
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@{#62696}
2019-07-14 03:34:06 +00:00
v8-ci-autoroll-builder
30ebdb7ec2 Update V8 DEPS.
Rolling v8/build: c989268..2c98e63

Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/1abe66f..982e952

Rolling v8/third_party/depot_tools: 78dec04..d3af699

Rolling v8/tools/clang: 7cefad2..efd0971

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

Change-Id: If8b78b71bc89c03f3b87e87868e363eed85eb63f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1698815
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@{#62695}
2019-07-13 08:32:45 +00:00
Leszek Swirski
e9ff38bbdd Revert "fix: move V8_EXPORT_PRIVATE marks to prevent unresolvable references"
This reverts commit 13a04abacd.

Reason for revert: Breaks v8 roll (https://chromium-review.googlesource.com/c/chromium/src/+/1698024)

Original change's description:
> fix: move V8_EXPORT_PRIVATE marks to prevent unresolvable references
> 
> This change fixes missing symbol errors in the Windows 10 on ARM build
> of Node.js.
> 
> When a whole class is marked for export, all of its members are marked
> as well. This can be a problem when inline members call undefined yet
> inline members of other classes: the exported function will contain a
> reference to the undefined inline function that should be satisfied at
> link time, but because the other function is inline no symbol will be
> produced that will satisfy that reference.
> 
> Clang gets around this by masking inlined class members from export
> using /Fc:dllexportInlines-. This is why b0a2a567 worked.
> 
> Node.js' Windows builds use MSVC and so do not have access to this
> flag. This results in unresolved symbols at link time.
> 
> Bug: v8:9465
> Change-Id: Ief9c7ab6ba35d22f995939eb62a64d6f1992ed85
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1696771
> Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
> Reviewed-by: Jakob Gruber <jgruber@chromium.org>
> Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#62660}

TBR=sigurds@chromium.org,jgruber@chromium.org,ishell@chromium.org,jkunkee@microsoft.com

Change-Id: Ief2ccb35fc19b00975e78a63791a558525d49ee9
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:9465
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1700069
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62694}
2019-07-13 06:38:36 +00:00
Deepti Gandluri
9182f9d7dd [cleanup] Merge DefineAsConstant functions
Change-Id: I9e9cc357cdadf81e8689b54626cff5ccdda2aa41
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1700437
Reviewed-by: Bill Budge <bbudge@chromium.org>
Commit-Queue: Deepti Gandluri <gdeepti@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62693}
2019-07-13 01:11:31 +00:00
Jakob Kummerow
6d73ced600 [wasm-c-api] Drop Isolate::Enter/Exit calls...
...from the Store constructor/destructor. They were preventing embedders
from using several Stores with overlapping but non-nested lifetimes.
Without Isolate::Enter, such use cases are supported; the only consequence
is that Isolate::Current will not work and therefore must not be called;
but it is deprecated and not called from the Wasm C API anyway.

Change-Id: I65eda00243126e189febb0fd8b38a953c4ee078f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1698387
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62692}
2019-07-12 18:51:32 +00:00
Jakob Kummerow
dea2de5c2f [cleanup][wasm-c-api] Drop custom binary reader/writer
The code to create wrapper modules on the fly was dead already.
The code to read wire bytes has been replaced with accesses to
V8's internal decoded form of the same data.

Change-Id: I736c8467df3ded9de08f2d567dbfd5e695dcfb0e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1698384
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62691}
2019-07-12 17:51:01 +00:00
Santiago Aboy Solanes
c7966ad5a0 [test] Add micro-benchmark tests for calls with local vars
Reorganized folder as well.

Bug: v8:9451
Change-Id: I65203aa88791dd05d6ca0127d5b832ccd898aa52
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1695901
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Reviewed-by: Dan Elphick <delphick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62690}
2019-07-12 16:54:01 +00:00
Frank Tang
b9a621cd18 Stage dayPeriod and fractionalSecondDigits options.
Move to stage for
harmony_intl_dateformat_day_period
harmony_intl_dateformat_fractional_second_digits
after ECMA402 SC reach consensus July 11 2019 to treat them as Stage 3.
Aiming to flip to ship for m78. Just get ready before sending out I2S
after m77 branch off in end of July.

Bug: v8:9283, v8:9284
Change-Id: I9bb145827157af9debc75cc4fc3859a60a5a023c
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1699301
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Frank Tang <ftang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62689}
2019-07-12 16:19:21 +00:00
Jakob Kummerow
6f05773467 [wasm-c-api] Add test for traps
Change-Id: I51c25c3e41d11ac2419aac1041fe92192f8fdb9e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1698382
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62688}
2019-07-12 15:31:21 +00:00
Dan Elphick
23583f0aa7 [compiler] Extend stress mode for lazy source positions
Make stress mode collect source positions for functions that weren't
lazily compiled.

Bug: v8:8510
Change-Id: I632f4b39746a7500ced3b7de9840601c4681856e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1700063
Auto-Submit: Dan Elphick <delphick@chromium.org>
Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62687}
2019-07-12 15:19:42 +00:00
Jeremy Roman
23ff6b2fb7 Explicitly reserve those tags which cannot be trivially reused without breaking back compat.
Bug: chromium:982304
Change-Id: I1a313ca67d6e3a9430f74f519a236c7dd4f88418
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1698923
Commit-Queue: Jeremy Roman <jbroman@chromium.org>
Reviewed-by: Simon Zünd <szuend@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62686}
2019-07-12 14:59:01 +00:00
Jakob Kummerow
37cb58b85f [wasm-c-api] Add test with multiple threads
Change-Id: Ie7a8b7fe22bed8092135c0e48cb681fbdd14b9fd
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1698381
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62685}
2019-07-12 14:47:58 +00:00
Nico Hartmann
1b2b1a67d2 [turbofan] Speculative BigIntNegate
This CL adds a speculative operator for BigInt negation that is
lowered to the respective builtin call and is optimized to native
64 bit machine operations if truncated. In particular, this change
allows negative BigInt constants (e.g. -5n) to be lowered.

Bug: v8:9407
Change-Id: Ia98fd6dee18a31ce56efbe537f4352b1582539e7
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1695463
Commit-Queue: Nico Hartmann <nicohartmann@google.com>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62684}
2019-07-12 14:42:49 +00:00
Nico Hartmann
e3b2697e60 [turbofan] Zero-initialize BigInt padding
The code generated for ChangeUint64ToBigInt in the
EffectControlLinearizer did not initialize the optional padding
field of newly allocated BigInts. This padding field is present
on 64 bit builds without pointer compression enabled. This CL
fixes this by 0-filling the padding field if present.

Bug: v8:9407
Change-Id: I511e163e676dc966a3eb6dfb92b5065e36329225
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1695464
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Commit-Queue: Nico Hartmann <nicohartmann@google.com>
Cr-Commit-Position: refs/heads/master@{#62683}
2019-07-12 14:38:59 +00:00
Michael Achenbach
cfe51d6bf1 [test] Add --assert-types flag to linux x64 release builders
Bug: v8:9476
Change-Id: Id3660d40fe219ee0816ac8550ee8affd1be4b95b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1698399
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62682}
2019-07-12 14:30:49 +00:00
Mike Stanton
ecf2e1cf7a [Turbofan] Brokerize tagged templates in the bytecode graph builder
The bytecode graph builder currently creates the tagged template if
it hasn't yet been done. This CL moves that work to serialization time.

Bug: v8:7790
Change-Id: I9571c5ad2f553584869056fb0cf501e03563d6f0
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1687670
Commit-Queue: Michael Stanton <mvstanton@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62681}
2019-07-12 14:09:09 +00:00
Andreas Haas
83cb73f362 Revert "[wasm] Compile JS to WASM wrappers asynchronously"
This reverts commit 9a9aa71ff5.

Reason for revert: https://ci.chromium.org/p/v8/builders/ci/V8-Blink%20Linux%2064/33101

Original change's description:
> [wasm] Compile JS to WASM wrappers asynchronously
> 
> R=​mstarzinger@chromium.org, ahaas@chromium.org
> 
> Bug: v8:9231
> Change-Id: I9e18073bbe25bf8c9c5f9ace102316e6209d0459
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1669699
> Commit-Queue: Thibaud Michaud <thibaudm@chromium.org>
> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
> Reviewed-by: Andreas Haas <ahaas@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#62672}

TBR=mstarzinger@chromium.org,ahaas@chromium.org,thibaudm@chromium.org

Change-Id: I4c66663ca8a3f12f578c451f3c25705cebc753a7
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:9231
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1700066
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62680}
2019-07-12 14:03:51 +00:00
Michael Achenbach
0ce30904c4 Revert "Reland "[csa] add hint to CAST error message to break in mksnapshot""
This reverts commit a10a1a65a2.

Reason: Huge test time regression, see https://crbug.com/v8/9402.

Bug: v8:9402
Change-Id: Ia71309d255ed8d9c3e96a90cc5bf6cb3ad77beaf
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1698400
Auto-Submit: Michael Achenbach <machenbach@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62679}
2019-07-12 14:02:39 +00:00
Santiago Aboy Solanes
25aab0f3f0 [ptr-compr][codegen] Combine load and Pointer decompression when possible
Similar to https://chromium-review.googlesource.com/c/v8/v8/+/1697246 but
for the Pointer case.

The three CLs combined bring good improvements to the code generation,
both in code size and then in runtime.

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:7703
Change-Id: I0903df55f3e19d3ee4dddb3c069ddc27b3265cd3
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1698395
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62678}
2019-07-12 12:37:17 +00:00
Santiago Aboy Solanes
933286fa14 [ptr-compr][codegen] Combine load and Any decompression when possible
Similar to https://chromium-review.googlesource.com/c/v8/v8/+/1697246 but
for the Any case.

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:7703
Change-Id: I99f839faad17da35adac8a084289b1553530d4a2
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1698394
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62677}
2019-07-12 12:27:07 +00:00
Santiago Aboy Solanes
d410df568a [ptr-compr][codegen] Combine load and signed decompression when possible
In essence, it simplifies the pattern (in x64):
  movl register, ___
  movlsxlq register, register
into:
  movlsxlq register, ___

This makes the code smaller and run faster, without compromising.
We can do something similar for Arm64 too.

The cases for Pointer and Any seem to be trickier but there seems to be
room to improve 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:7703
Change-Id: I583bdfafdae9330be0a08ad1dd4c196e7de2f0d5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1697246
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62676}
2019-07-12 12:21:57 +00:00
Mu Tao
64419b074a [mips64][codegen] Remove dead argument to Assember::stop
This CL removes Assember::stop invoking's dead argument accordingly
(https://chromium-review.googlesource.com/c/v8/v8/+/1692925).

R=clemensh@chromium.org, xwafish@gmail.com

Change-Id: I9f4d91f15e3bc9e56815a328326997a273e42fee
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1699841
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62675}
2019-07-12 12:06:27 +00:00
Igor Sheludko
00ed3a2df5 [classes] Properly handle properties count slack
Bug: chromium:979401
Change-Id: I99ab2fd04bd2e23b4d7a494cecc056ec74cb9d04
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1687422
Auto-Submit: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62674}
2019-07-12 11:57:17 +00:00
Ulan Degenbaev
9ebdcced8f [snapshot] Fix clearing of feedback vector in serializer
The serializer clears JSFunctions together with feedback vectors
assuming that there is one to one correspondence between them.

That does not work in the case when there are multiple JSFunctions
sharing the same feedback vector. This patch ensures that all such
JSFunctions are properly cleared.

Bug: v8:7857
Change-Id: Ie441089e12bda5a8be7f9bed90f7be9499938609
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1698383
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62673}
2019-07-12 11:11:13 +00:00
Thibaud Michaud
9a9aa71ff5 [wasm] Compile JS to WASM wrappers asynchronously
R=mstarzinger@chromium.org, ahaas@chromium.org

Bug: v8:9231
Change-Id: I9e18073bbe25bf8c9c5f9ace102316e6209d0459
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1669699
Commit-Queue: Thibaud Michaud <thibaudm@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62672}
2019-07-12 10:56:13 +00:00
Sathya Gunasekaran
cc9964bb65 [ic] Add benchmark for LdaKeyedLoad
Bug: v8:9449
Change-Id: I7c50db92459df2a8a7da7b0bd2efdd2f3bed3e46
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1690952
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Auto-Submit: Sathya Gunasekaran <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62671}
2019-07-12 10:33:11 +00:00
Peter Marshall
3f3625f3cf [cleanup] Reduce frames.h include ball from 686 to ~270
Everyone was getting a copy of this through debug.h.

Bug: v8:9396
Change-Id: I5189cb4bf27a3381768b0be479d7b3d60dec20bb
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1695472
Commit-Queue: Peter Marshall <petermarshall@chromium.org>
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62670}
2019-07-12 10:20:41 +00:00
Sam Clegg
436fcaa032 Fix some python nits in tools/testrunner/standard_runner.py
I noticed the indentation was off in one function, but also fixed
all the other flake8 issues in this file.

Change-Id: I2303ed87da7154484a872315f8355f57621514c4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1697054
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Sam Clegg <sbc@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62669}
2019-07-12 10:17:31 +00:00
Sathya Gunasekaran
0461a2ac29 [ic] Fix private field lookup in generic case
Previously, we didn't have access checks for the megamorphic case cause
we'd never get to this IC state for a receiver that doesn't hold the
right private field. But now with lazy feedback allocation we share
the megamorphic case code paths for the uninitialized loads as well,
which exposes our bug.

Bug: chromium:982702
Change-Id: I419406bcfc52575260a85d05520c1662735e15f8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1697256
Reviewed-by: Mythri Alle <mythria@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62668}
2019-07-12 09:42:11 +00:00
Darius Mercadier
b0abfb4fc7 [heap] Add fast allocation strategy (--gc-freelist-strategy=1)
This CL adds a new FreeList strategy, that can be turned on by using flag
`--gc-freelist-strategy=1`.  It is inspired by FreeListLegacy, and differs from
it in the following ways:
 - Only has 3 categories: Medium, Large and Huge.
 - Any block that would have belong to tiniest, tiny or small in FreeListLegacy
   is considered wasted.
 - Allocation is done only in Huge, Medium and Large (in that order), using a
   first-fit strategy (only the first block of each freelist is ever considered
   though).
 - Performances is supposed to be better than FreeListLegacy, but memory usage
   should be higher (because fragmentation will probably be higher).

Bug: v8:9329
Change-Id: Ib399196788f1dfaa1aeddc3dc721375dd7da65f1
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1697248
Commit-Queue: Darius Mercadier <dmercadier@google.com>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62667}
2019-07-12 09:21:14 +00:00