The macros take implicit local arguments and make the tests harder to
read. Remove the macros and add a helper to get size directly given
this is the only use of the helper that returns the whole list.
Remove the typedef of vector of trace events, because it is only used
in two places now and is also called 'list' not vector.
Use unique pointers for the ownership of MockTraceObject.
Change-Id: Iec495c436cf7326224137321a84035c817622eaa
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1538131
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Commit-Queue: Peter Marshall <petermarshall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60443}
The --type_info_threshold is no longer supported for a long time and
doesn't do anything useful nowadays, so no point in having that around.
Drive-by-fix: Remove the FeedbackVector::ComputeCounts() logic, since
it's dead code anyways by now.
Bug: v8:8834
Change-Id: I05f7517b3b82e34c0a83357337a456ab9c9f1f42
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1538128
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60442}
{FrameArray} needs a way to keep {WasmCode} alive from a JS container.
This CL instruces {GlobalWasmCodeRef}, which is the equivalent to a
global handle: It increments the {WasmCode} reference counter on
construction and decrements it on destruction.
The {GlobalWasmCodeRef} is held in a {Managed} from JS.
R=titzer@chromium.org
Bug: v8:8217
Change-Id: I5604a666840c27078db63c8618412ca412525be1
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1533862
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Ben Titzer <titzer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60441}
It otherwise does not compile on macOS when V8_TRACE_FEEDBACK_UPDATES
is enabled.
Change-Id: Ie3abaf901a9e28a02aaebd1de96448ce097bd0d2
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1537295
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Joyee Cheung <joyee@igalia.com>
Cr-Commit-Position: refs/heads/master@{#60439}
This adds support to ref-count uses of WasmCode, and introduces a
{WasmCodeRefScope} to be used whereever WasmCode objects need to be
kept alive, e.g. because a pointer is passed around.
Future CLs will introduce proper scopes in the whole code base and
enable the DCHECK that's currently commented out.
R=titzer@chromium.org
Bug: v8:8217
Change-Id: I1659a0e9d57cd22fe70e6f2661d0d8af9f0906c7
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1526005
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Ben Titzer <titzer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60438}
Before this change we had essentially two optimization limits, one hard
limit in the TurboFan pipeline (128KiB), and a soft limit in the runtime
profiler (60KiB). The hard limit was only relevant to --always-opt and
other internal test infrastructure, and the soft limit was always
enforced on regular JavaScript, but didn't properly disable further
optimization for the function (so for example --trace-opt would
continuesly report attempts to optimize the function).
Now with this change we only have the hard limit, set to 60KiB, in the
TurboFan pipeline and use that consistently.
Bug: v8:8598
Change-Id: I9e2ae7cb67de4a2256d3a7b9c3aee3dab60c2ec1
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1538127
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Commit-Queue: Jaroslav Sevcik <jarin@chromium.org>
Auto-Submit: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60436}
Use the existing macros to load MemoryStart and MemorySize from the
instance.
R=titzer@chromium.org
Change-Id: Iaa597fedcfc4581503d7cdf2fb94da6e285cc545
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1538122
Reviewed-by: Ben Titzer <titzer@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60434}
This extends the existing PipelineStatistics in the TurboFan pipeline
(also used for Wasm) to emit trace events for the various phases of the
(optimized) compilation. This works for "disabled-by-default-v8.compile"
and "disabled-by-default-v8.wasm" categories.
We also rename the existing phase names to match the naming convention
for the V8 trace events (starting with either "V8.TF" or "V8.Wasm") to
make it easy to spot and categorize them in the trace viewer.
This can be seen in action here
https://i.paste.pics/a33c0e3942ff707af44f67ed4bac46b0.png
taken from a run of Octane/TypeScript.
Bug: v8:8598
Change-Id: Id40092ee8afc8d998532f8641780052769cad320
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1538121
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Reviewed-by: Peter Marshall <petermarshall@chromium.org>
Reviewed-by: Ben Titzer <titzer@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60433}
This CL adds handling for cleaning up weakmap (EphemeronHashTable)
keys during scavenge, even if the weakmap resides in oldspace.
Change-Id: If8d711c050ddbcae4dd6e8da549e0c0d08ba47b2
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1523787
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60432}
Both js-to-wasm-wrapper-cache-inl.h and wasm-import-wrapper-cache-inl.h
do not include any inl headers, thus they can be plain headers. If they
ever need to include inl headers again, we should split out the
respective functions into a separete inl header to follow the usual
pattern to have *both* a plain header *and* an inl header.
R=mstarzinger@chromium.org
Bug: v8:8834
Change-Id: I1b1b917a8e2c47f1354522479f8c57475bee6244
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1535826
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60431}
Add tracing support for the %StackGuard() and %Interrupt() runtime calls
and the individual actions performed in StackGuard::HandleInterrupts().
This includes:
- "V8.GCHandleGCRequest" (in "disabled-by-default-v8.gc") when the
GC_REQUEST bit is set.
- "V8.WasmGrowSharedMemory" (in "disabled-by-default-v8.wasm") when
the GROW_SHARED_MEMORY bit is set.
- "V8.TerminateExecution" (in "v8.execute") when the
TERMINATE_EXECUTION bit is set.
- "V8.GCDeoptMarkedAllocationSites" (in "disabled-by-default-v8.gc")
when the DEOPT_MARKED_ALLOCATION_SITES bit is set.
- "V8.InstallOptimizedFunctions" (in "disabled-by-default-v8.compile")
when the INSTALL_CODE bit is set.
- "V8.InvokeApiInterruptCallbacks" (in "v8.execute") when the
API_INTERRUPT bit is set.
Now we also emit a trace event "V8.MarkCandidatesForOptimization" (in
"disabled-by-default-v8.compile") in addition to the above from the
RuntimeProfiler when we mark candidates for optimization at the end
of each stack check.
An example of the "V8.InstallOptimizedFunctions" in action (in the
trace viewer) can be seen here:
https://i.paste.pics/094a04af035eedc0690cd4079afa28f1.png
This supersedes the previously introduced --trace-interrupts CLI flag,
which is thus removed as part of this change.
Bug: v8:8598
Change-Id: I3c3375d00b07cbe700b6912097d7264031ace802
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1538116
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Peter Marshall <petermarshall@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60428}
In the implementation of WebAssembly.compileStreaming and
WebAssembly.instantiateStreaming, we did not handle the case where the
input, which is a Promise, gets rejected. When this Promise got
rejected, the Promise returned by compileStreaming remained pending
forever.
With this CL, the rejection object of the input Promise gets forwarded
to the result Promise.
I also extended the --wasm-test-streaming flag to provide
WebAssembly.compileStreaming and WebAssembly.instantiateStreaming
in d8. The difference to the Chrome versions of these function is
that d8 does not know about Response objects. That's why in d8
compileStreaming and instantiateStreaming expect a Promise to an
ArrayBuffer or a TypedArray and not to a Response object.
Cq-Include-Trybots: luci.chromium.try:linux-blink-rel
Bug: chromium:943487
Change-Id: I77f789e9ae5d50ae9c9bc92bf27dbfe338fe0f13
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1535817
Reviewed-by: Ben Titzer <titzer@chromium.org>
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60427}
1) Pass {std::shared_ptr} by reference if a copy might not be needed.
This applies both to accessors as well as constructing methods.
This change often saves one atomic increment and decrement of the
internal reference counter.
2) Use {std::make_shared} directly to improve memory management of the
{std::shared_ptr}. This saves one dynamic memory allocation on all
known implementations.
R=titzer@chromium.org
Bug: v8:8834
Change-Id: I1a951deb135082745885bc981662a8d6d6fb1a71
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1532333
Reviewed-by: Ben Titzer <titzer@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60425}
This is used to convert files with binary proto data to the Trace Event
.json format for use with the chrome://tracing viewer.
Change-Id: Ib5478f6aa2326b5e085506859f4a7f30f95c79f5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1535823
Commit-Queue: Peter Marshall <petermarshall@chromium.org>
Reviewed-by: Mathias Bynens <mathias@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60422}
Inside V8 the TraceID class sits in v8::internal::tracing instead of
trace_event_internal namespace (as in Chrome).
Bug: v8:8834
Change-Id: I9464e6145c4fd4c794ac3f50052a5fa1b068aeed
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1535834
Auto-Submit: Benedikt Meurer <bmeurer@chromium.org>
Commit-Queue: Peter Marshall <petermarshall@chromium.org>
Reviewed-by: Peter Marshall <petermarshall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60421}
Remove a special case on mac hosts that was needed when is_clang wasn't
the default on Win, but is unnecessary now and gets in the way.
Bug: chromium:801780,chromium:495204
Change-Id: I8d6783c73e0c240704830a46304482e3ce94418b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1534634
Reviewed-by: Adam Klein <adamk@chromium.org>
Commit-Queue: Nico Weber <thakis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60415}
- Changes min and max sequences to propagate NaNs and signed
zeroes.
- Note that NaN propagation must preserve canonical NaNs. This is
achieved by always returning canonical NaNs. This is also
consistent with the WebAssembly scalar math spec.
Bug: v8:8639
Change-Id: I04fdefabc54ea60f4d02e2081c32444a02dd6a83
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1524634
Commit-Queue: Bill Budge <bbudge@chromium.org>
Reviewed-by: Deepti Gandluri <gdeepti@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60414}
The "V8.OptimizeCode" trace event (in "disabled-by-default-v8.compile"
category) didn't include the setup of the OptimizedCompilationJob, which
is quite expensive already and should be accounted for properly.
Bug: v8:8598
Change-Id: Ieec139c8d555d02edfbc52e904ee214d1007afbd
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1533871
Reviewed-by: Peter Marshall <petermarshall@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60413}
Process feedback and hints for Lda/StaNamed bytecodes w.r.t. access on
the global proxy. This stores the property cells (or their absence) on
the JSGlobalProxyData.
Bug: v8:7790
Change-Id: Iadedea5494611c1b2ed38b6ce75687e084cc27f9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1499499
Commit-Queue: Jaroslav Sevcik <jarin@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60411}
We were hitting a DCHECK in WaitFor() when rel_time was negative. This
was caused when GetNext() recalculated the wait time for a delayed
task. In the first part of the loop we moved all delayed tasks which
have passed their deadline into the immediate task queue. At the
bottom of the loop we assume that all delayed tasks in the queue
have a deadline in the future, but this isn't always the case as we
use a new 'now' value for the calculation, and time could have elapsed.
Fix this by using one 'now' value for an iteration of the loop.
Bug: v8:9030
Change-Id: Ia49fb571f3c7c7d9f15c6a464ee0a9db814a7f03
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1535820
Commit-Queue: Peter Marshall <petermarshall@chromium.org>
Reviewed-by: Hannes Payer <hpayer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60409}
This is a reland of 1ca088652d
Original change's description:
> Reland "[regalloc] Introduce deferred fixed ranges"
>
> This is a reland of b176931311
>
> Original change's description:
> > [regalloc] Introduce deferred fixed ranges
> >
> > Fixed ranges are used to express register constraints in the
> > allocator. This change splits these fixed ranges into one for
> > normal code and deferred code. The former are handeled as before
> > whereas the latter are only made visible while allocating
> > registers for deferred code.
> >
> > This prevents forward looking decisions in normal code to be
> > impacted by register constraints from deferred code.
> >
> > Change-Id: I67d562bb41166194e62765d5ab051bc961054fc7
> > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1477742
> > Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
> > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
> > Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
> > Cr-Commit-Position: refs/heads/master@{#60322}
>
> Change-Id: I1a31150256eb5608db985b144aab7ea457169d0d
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1530810
> Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#60364}
Change-Id: If4a956716e7e4de132f706be2c395cdfdc04ec94
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1532328
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60408}
This CL changes the case of the variable name I introduced in a previous CL.
Change-Id: I6d44eaf8361fa7e021c1107af49ce85238165449
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1535821
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Sven Sauleau <ssauleau@igalia.com>
Cr-Commit-Position: refs/heads/master@{#60407}
In the int64 lowering pass some parameter nodes are considered special
and don't require any transformation. For instance the Wasm instance.
With the experimental-wasm-bigint proposal, two new special parameters
are going through the pass, this CL avoids transforming them.
Change-Id: Ie99ffaff125b9ef8c56e1883aac9e18e4072fc3e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1532336
Auto-Submit: Sven Sauleau <ssauleau@igalia.com>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Sven Sauleau <ssauleau@igalia.com>
Cr-Commit-Position: refs/heads/master@{#60404}
Just the outermost wrapper function (which does almost nothing).
Bug: v8:8976
Change-Id: I8137f86bde5e10ba7edd5051e7c86bfc631bfe94
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1528531
Commit-Queue: Peter Wong <peter.wm.wong@gmail.com>
Reviewed-by: Simon Zünd <szuend@chromium.org>
Reviewed-by: Peter Wong <peter.wm.wong@gmail.com>
Cr-Commit-Position: refs/heads/master@{#60402}
Bug: v8:8996
Change-Id: Iffe8fe46536ae6749e8dcad1e0e441c3626cba95
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1527558
Commit-Queue: Peter Wong <peter.wm.wong@gmail.com>
Reviewed-by: Simon Zünd <szuend@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60401}
ReduceArrayIndexOfIncludes didn't account for kUnreliableReceiverMaps.
Will think about a more robust mechanism for this.
Bug: chromium:944062
Change-Id: Ib2bdaf4399225de4413e12c5684f58dfe524a2cd
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1532331
Commit-Queue: Jaroslav Sevcik <jarin@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60400}
Most of the mjsunit/wasm/table-copy.js tests have been ported to
cctests, so they can be tested with all execution tiers.
Bug: v8:8965
Change-Id: I448719be30a4b2bddb9e2cffb4c74d3134db2f50
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1529548
Commit-Queue: Ben Smith <binji@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60396}
The original config will be removed after infra-side change will land and start
using new configs.
R=machenbach@chromium.org, tmrts@chromium.org
Bug: chromium:923304
Change-Id: I5323f0d01724cef2472592bd8e5beb15de232346
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1533863
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Sergiy Belozorov <sergiyb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60395}