This shares logic for finding additional resources in JS source code.
Previously the logic was implemented for mjsunit, now it will be used
across all d8-based test cases.
This'll enable adding those test suites for Android testing.
Bug: chromium:866862
Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
Change-Id: I7c89ba141483aaf692a03c0e168edb61bbb7b010
Reviewed-on: https://chromium-review.googlesource.com/1193873
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55503}
This increases the size of a V8BreakIterator instance by a word to store
the breakType function.
The instance to be bound is stored on the context of this builtin function.
This CL removes the AddBoundMethod helper from intl.js
Bug: v8:5751
Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
Change-Id: I4e4df2632990300b91eafda680d414e0b373825b
Reviewed-on: https://chromium-review.googlesource.com/1194803
Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55501}
The AtomicNarrow operations are currently used for wider 64-bit
operations, that only operate on 32-bits of data or less
(Ex:I64AtomicAdd8U). Removing these because this can be handled
in int64-lowering by zeroing the higher order node.
Explicitly zeroing these in code-gen is not
required because -
- The spec requires only the data exchange to be atomic, for narrow
ops this uses only the low word.
- The return values are not in memory, so are not visible to other
workers/threads
BUG:v8:6532
Change-Id: I90a795ab6c21c70cb096f59a137de653c9c6a178
Reviewed-on: https://chromium-review.googlesource.com/1194428
Reviewed-by: Ben Titzer <titzer@chromium.org>
Reviewed-by: Ben Smith <binji@chromium.org>
Commit-Queue: Deepti Gandluri <gdeepti@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55499}
Cloning arrays with Array.prototype.map and for-of push is too slow
for large arrays.
Bug: chromium:878681
Change-Id: I70ba5faad9e19cdc5a39cc64fb1b4bcb3fd0bf48
Reviewed-on: https://chromium-review.googlesource.com/1195363
Commit-Queue: Hai Dang <dhai@google.com>
Reviewed-by: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55496}
This replaces ebx usage in several more interface descriptors.
- IC descriptors already passed most arguments on the stack (updated
their Register accessors to reflect that).
- The allocation site argument appears to be unused in the
ConstructStub descriptor. It can probably be removed in a follow-up.
Drive-by: Rename ArgumentAdaptorDescriptor to
ArgumentsAdaptorDescriptor to match the builtin name.
Bug: v8:6666
Change-Id: I4cdf1775a5b4b74491d6d303c49a8af9b6cd3c03
Reviewed-on: https://chromium-review.googlesource.com/1195367
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55495}
This CL additionally uses IsInRange for token range checks. That only uses one
branch rather than two.
Change-Id: I52c6759ba195b55cb50c2ce9afbdc9b397495633
Reviewed-on: https://chromium-review.googlesource.com/1193875
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55494}
On 32-bit platforms, String::kMaxLength is such that not all BigInts
can be converted to Strings. NoSideEffectsToString, however, used to
assume that this conversion always succeeds. This patch adds a check
for the failure case, and returns "<a very large BigInt>" instead of
crashing.
This change is practically unobservable, because actually formatting
such a huge BigInt to String would take "forever", which is also why
there is no regression test.
Bug: chromium:876628
Change-Id: I1eacdc1cce753ac5d9ca66e61e479043ab576e07
Reviewed-on: https://chromium-review.googlesource.com/1194004
Reviewed-by: Georg Neis <neis@chromium.org>
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55491}
In preparation for kRootRegister support on ia32.
LoadWithVector now passes the vector on the stack.
LoadGlobalWithVector is able to reuse edx (used as ReceiverRegister in
LoadWithVector).
Drive-by: Aliasing DCHECKs and updated unused Register accessors.
Bug: v8:6666
Change-Id: If0e93d22c3c11f764bc0805c3e6a51654cdcc5f9
Reviewed-on: https://chromium-review.googlesource.com/1193891
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55490}
{ThreadInWasmScope} in only used in a single location, which is in a
test. It does not look like many more such places will show up.
R=titzer@chromium.org,
Bug: v8:8015
Change-Id: I89f6f7e2bd13e2882e65f7657d73ba59a6c71757
Reviewed-on: https://chromium-review.googlesource.com/1193446
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Reviewed-by: Ben Titzer <titzer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55486}
It is better not to have V8-specific constants in mjsunit.js because it
also has V8-independent uses, e.g. in the spec tests.
R=gdeepti@chromium.org
Bug: v8:8015
Change-Id: I3b576f093f639c13e673cbd0bd5305c8101d7281
Reviewed-on: https://chromium-review.googlesource.com/1192843
Reviewed-by: Deepti Gandluri <gdeepti@chromium.org>
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55485}
This changes the interface descriptor for the frame dropper trampoline
to not use the kRootRegister (ebx) anymore.
Change-Id: I15df6af57f70d8aeea6c97298b437ad96af19cd4
Bug: v8:6666
Reviewed-on: https://chromium-review.googlesource.com/1193242
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55484}
This makes sure that direct and indirect calls get proper {IfException}
projections attached to them if they appear within a try-block. It also
re-enables most of the corresponding test cases for this.
R=ahaas@chromium.org
TEST=mjsunit/wasm/exceptions
BUG=v8:8091
Change-Id: I111634759651ed47f76850e80c8754751310001b
Reviewed-on: https://chromium-review.googlesource.com/1195365
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55483}
The new node is introduced for literal string addition and calling
String.prototype.concat in the typed lowering phase. It later might get optimized
away during redundancy elimination, keeping the performance of already existing
benchmarks with string addition. In case the operation is about to throw
(due to too long string being constructed) we just deoptimize, reusing
the interpreter logic for creating the error.
Modify relevant mjsunit and unit tests for string concatenation.
Bug: v8:7902
Change-Id: Ie97d39534df4480fa8d4fe3ba276d02ed5e750e3
Reviewed-on: https://chromium-review.googlesource.com/1193342
Commit-Queue: Maya Lekova <mslekova@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55482}
Bug: v8:8066
Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
Change-Id: I5511b6b9272804ebbb61bf2127a2ad51bfc70e28
Reviewed-on: https://chromium-review.googlesource.com/1179319
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Adam Klein <adamk@chromium.org>
Commit-Queue: Frank Tang <ftang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55481}
This CL makes the names of tracing flags related to WASM consistent
with the rest of V8 tracing flags.
R=ahaas@chromium.org
Change-Id: I871fb7b5e27ff7b8f587e08507d15c0719881990
Reviewed-on: https://chromium-review.googlesource.com/1193182
Commit-Queue: Ben Titzer <titzer@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55479}
This CL removed the 2nd scratch register from StackOverflowCheck
on ia32 and lower register pressure at use sites. This will make
it easier to preserve the kRootRegister (ebx) in future CLs.
Bug: v8:6666
Change-Id: I225ffdf155a4547fcec02a033638da094995f181
Reviewed-on: https://chromium-review.googlesource.com/1194122
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55477}
Adds recursive serialization of boilerplate JSObjects. It also hooks up
serialization of FixedArrays (shallow copy of all elements).
Bug: v8:7790
Change-Id: I458133961918617ab7bdae8d14712a4e5a7d9cb5
Reviewed-on: https://chromium-review.googlesource.com/1188903
Reviewed-by: Georg Neis <neis@chromium.org>
Commit-Queue: Jaroslav Sevcik <jarin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55475}
The VMAR syscall signatures are being updated, so migrate to the
temporarily-provided *_old() variants, in advance of the Fuchsia SDK
roll that updates the real APIs.
TBR: hpayer
Change-Id: I10da4df97b122262de04a2417bd91b921f3a63d5
Reviewed-on: https://chromium-review.googlesource.com/1194429
Commit-Queue: Wez <wez@chromium.org>
Reviewed-by: Adam Klein <adamk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55473}
This increases the size of a V8BreakIterator instance by a word to store
the current function.
The instance to be bound is stored on the context of this builtin function.
Bug: v8:5751
Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
Change-Id: I1bdf3d3cd9db5ab16abb644b33b44705ca58684e
Reviewed-on: https://chromium-review.googlesource.com/1194802
Commit-Queue: Ujjwal Sharma <usharma1998@gmail.com>
Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org>
Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55471}
To avoid recursion cost we now more aggressively inline. The many added
branches for this shortcut to work can easily hurt performance as well. Let's
try to remove and see what performance looks like nowadays.
Change-Id: I93e2d57ebebd6adde836f54ac629cc67dd82f143
Reviewed-on: https://chromium-review.googlesource.com/1194062
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55466}
This fixes a race with the aforementioned runtime function where the
global map from Isolate to WasmCompileControls was accessed without
proper synchronization. These are reported by "TSAN isolates".
R=sigurds@chromium.org
TEST=mjsunit/wasm/compilation-limits
Change-Id: Iaeea7f54cbb5051ca0ca97d75543e38ab9f9addc
Reviewed-on: https://chromium-review.googlesource.com/1193243
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55465}
Very large allocations can cause timeouts or crashes on TSAN bots. This
test checks the handling of arrays with length > MaxSmi, so allocates a
very large array. It's unlikely that TSAN will find anything interesting
here that other bots won't catch, so disabling the test.
Bug: v8:8103
Change-Id: I8ea01d418ff088a2b9bd1b1ef938d4f69be1155d
Reviewed-on: https://chromium-review.googlesource.com/1193423
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Commit-Queue: Peter Marshall <petermarshall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55464}
This increases the size of a V8BreakIterator instance by a word to store
the next function.
The instance to be bound is stored on the context of this builtin function.
Bug: v8:5751
Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
Change-Id: Ibdfabe53c7d0790c1ba44d5de8d1c8fc8de517c9
Reviewed-on: https://chromium-review.googlesource.com/1193502
Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55463}
In preparation for kRootRegister support on ia32.
Updated: CallWithSpread, CallWithArrayLike, ConstructWithSpread.
Bug: v8:6666
Change-Id: I41c166aebee99356efa5c175739b2124d5557d58
Reviewed-on: https://chromium-review.googlesource.com/1188563
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55461}
With FLAG_preparser_scope_analysis enabled we now always track
unresolved variables in the preparser. Fix the logic for deciding on
the correct RCS tracing category to be based on what the preparser does.
Change-Id: If691d51e6a2c09e554e4d96c10c37060cc7cca96
Reviewed-on: https://chromium-review.googlesource.com/1193303
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55460}
This increases the size of a V8BreakIterator instance by a word to store
the first function.
The instance to be bound is stored on the context of this builtin function.
Bug: v8:5751
Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
Change-Id: Ib1e8cb8353d0885e0d9bcfdc5fe558c1de0a0738
Reviewed-on: https://chromium-review.googlesource.com/1192823
Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org>
Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55459}
These two builtins are a special case in that their calling convention
must be kept in-sync since they are both generated from
Generate_CallOrConstructVarargs.
ConstructVarargs in particular used all available registers. In order
to free ebx, the calling convention is changed to pass the last
argument on the stack.
As part of this change, the order of the last two arguments is swapped
since the stack parameter must be tagged.
Bug: v8:6666
Change-Id: If1ad14fc09693c36dd63ffebb6f34fcd3f012896
Reviewed-on: https://chromium-review.googlesource.com/1193444
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55458}
This fixes a crash with a predicate used during stack unwinding of
WebAssembly frames during exception handling. The predicate caused an
observable side-effect in JavaScript during unwinding, code that is
inherently unhandlified and is not allowed to be observable.
The fix actually just removes the entire predicate. This is because the
updated proposal causes all JavaScript exceptions to participate in
WebAssembly exception handling, allowing modelling of "finally" language
constructs to perform cleanup independent of the embedders exception
details.
R=ahaas@chromium.org
TEST=mjsunit/regress/wasm/regress-8095
BUG=v8:8095
Change-Id: Ic03bc45e7b7f4562a431ccf910ee9ddcf558aa48
Reviewed-on: https://chromium-review.googlesource.com/1193445
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55457}
This is a reland of 1e5b6d99f4
Original change's description:
> [RCS] Create thread local runtime call stats tables for worker threads
>
> Creating a runtime call stats table for each worker thread task is expensive.
> Instead we create a single table per thread, and use TLS to get the correct one
> when starting a worker thread task.
>
> In order to correctly initialize the parser, scanner and parse-info's runtime
> call stats fields, we move creation of the scanner and parser onto the
> background tasks for BackgroundCompileTask and UnoptimizedCompilationJob.
>
> Change-Id: I36064c7fb43290968620b1985cc02637b16f4232
> Reviewed-on: https://chromium-review.googlesource.com/1187522
> Reviewed-by: Toon Verwaest <verwaest@chromium.org>
> Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#55448}
TBR=verwaest@chromium.org
Change-Id: I7c2f48280651d7632d99ee22d86260c72bc16185
Reviewed-on: https://chromium-review.googlesource.com/1193463
Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55456}
There was preformance regression with one-shot optimizations (
https://bugs.chromium.org/p/chromium/issues/detail?id=876839#c4).
Disable the one shot optimizations by default until the regrssion is fixed.
Change-Id: I031ac2e0151e06fb2116f417ad3d9a3d04da16ac
Reviewed-on: https://chromium-review.googlesource.com/1189823
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Chandan Reddy <chandanreddy@google.com>
Cr-Commit-Position: refs/heads/master@{#55455}