Commit Graph

64472 Commits

Author SHA1 Message Date
Michael Lippautz
96618d094c heap-snapshot: Add detachedness field
Adds a field that can be propagated by embedders. The field holds
the detachedness state of DOM objects but can be used in general
by embedder to indicate which objects are for sure part of interesting
application logic and which objects are not. This field is then
processed properly by the DevTools front end.

Bug: chromium:1110816
Change-Id: I53a172208cd69ce2ba2ed9524d36b6512aae7d30
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2332174
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69780}
2020-09-09 14:42:41 +00:00
Leszek Swirski
76d684cc82 Reland "[serializer] Change deferring to use forward refs"
This is a reland of 81577a79e1

The revert was due to an missing dependency in the incremental build,
fixed in https://crrev.com/c/2400987.

Original change's description:
> [serializer] Change deferring to use forward refs
>
> Now that we have forward references, we can replace the body deferring
> mechanism with forward references to the entire pointer.
>
> This ensures that objects are always deserialized with their contents
> (aside from themselves maybe holding forward refs), and as a result we
> can simplify the CanBeDeferred conditions which encode the constraint
> that some objects either need immediately have contents, or cannot be
> deferred because their fields are changed temporarily (e.g. backing
> store refs).
>
> This also means that objects with length fields (e.g. arrays) will
> always have those length fields deserialized when the object is
> deserialized, which was not the case when the body could be deferred.
> This helps us in the plan to make GC possible during deserialization.
>
> Bug: v8:10815
> Change-Id: Ib0e5399b9de6027765691e8cb47410a2ccc15485
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2390643
> Reviewed-by: Jakob Gruber <jgruber@chromium.org>
> Commit-Queue: Leszek Swirski <leszeks@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#69760}

Tbr: jgruber@chromium.org
Bug: v8:10815
Change-Id: I235076a97c5dfa58513e880cc477ac72a28b29e9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2400992
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69779}
2020-09-09 14:39:21 +00:00
Omer Katz
c99147c65e cppgc, heap: Don't eagerly allocate worklist segments
Bug: chromium:1056170
Change-Id: I75a6b5f52bfe8dd71abc086e5d1e060759ad7fc0
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2391254
Commit-Queue: Omer Katz <omerkatz@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69778}
2020-09-09 14:35:51 +00:00
Jakob Gruber
d68fb4733e [nci] Don't clobber interrupt budget after runtime profiler
The %BytecodeBudgetInterruptFromCode call resets the interrupt budget;
prior to this CL we'd overwrite the value immediately after returning
from runtime, resulting in repeated runtime calls.

Drive-by: Add the interrupt budget to FeedbackCell's debug print.

Bug: v8:8888
Change-Id: I2c98b839b8630a9e14df3d8a724e03c5afbec687
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2400991
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Auto-Submit: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Mythri Alle <mythria@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69777}
2020-09-09 14:01:05 +00:00
Leszek Swirski
0ed32e646d [build] Make run_mkgrokdump explicitly dep on run_mksnapshot
tools/debug_helper:run_mkgrokdump used to only depend on mkgrokdump.
However, the snapshot can change without affecting the mkgrokdump
binary itself. So, if the mkgrokdump binary doesn't change, then
run_mkgrokdump doesn't run, even if the snapshot changed.

This could cause mysterious test failures in incremental builds, in
particular for tests testing the contents of heap-constants-gen.cc.

Now, we make run_mkgrokdump depend on run_mksnapshot_default
directly, so that snapshot updates force an mkgrokdump run.

Change-Id: Ia3871e1b4fa15ec2dbc0bc5463afdb427cb39c61
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2400987
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Auto-Submit: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69776}
2020-09-09 13:46:32 +00:00
Georg Neis
fb481bc948 [turbofan] Make fewer assumptions about children of a serialized object
1) Strengthen the ObjectData::As* cast methods to check that the kind
is kSerializedHeapObject, because otherwise the data object is not
a subclass instance and the cast is invalid.

2) Fix errors revealed by (1) and pave way for moving away from
serialization. These changes are mechanical except for a needed
refactoring of ContextRef::previous.

Details regarding (2):

Change (1) revealed a large number of places where we incorrectly casted
object data. This went unnoticed so far because in the end we accessed
the object through the corresponding ObjectRef interface which did the
right thing depending on the data kind.

These bugs were introduced when kUnserializedReadOnlyHeapObject was
added, but they also affect the new kNeverSerializedHeapObject and would
become show stoppers as we move more objects to the latter kind. The CL
fixes all the issues that I found except one:

There's still one place left where we assume a particular subclass
instance for now (marked with a TODO). This is not a bug at the moment
but will cause CHECK failures once we move the corresponding object type
to never-serialized. A rewrite of map serialization might be needed to
resolve that.

Note:
With the changes in (2) we lose some type safety in the implementation
of the *Data classes. With some extra work that could be avoided.
However, I think it's not worth it because (i) these classes are
expected to be removed (and in the meantime to not change much), and
(ii) their wrapper *Ref classes still ensure type safety.

Bug: v8:7790
Change-Id: I9a5d03fa2f61e03c9c0ab4ac7f9869603d5be1d9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2398537
Reviewed-by: Santiago Aboy Solanes <solanes@chromium.org>
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Auto-Submit: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69775}
2020-09-09 13:37:24 +00:00
Omer Katz
55009830c5 cppgc, heap: Merge worklist implementations
Bug: chromium:1056170
Change-Id: Ibf561b663c74f9448139fd99945e5f4aea26419b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2390776
Commit-Queue: Omer Katz <omerkatz@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69774}
2020-09-09 13:05:55 +00:00
Sathya Gunasekaran
6f0094d864 [ic] Remove unused IC::saved_state()
Bug: v8:10582
Change-Id: I89597bb31d1a0aa50672e8f579f5011da6be29e3
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2400981
Reviewed-by: Mythri Alle <mythria@chromium.org>
Commit-Queue: Sathya Gunasekaran  <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69773}
2020-09-09 13:02:24 +00:00
Mythri A
d3d14d73e1 [turboprop] Fix compact elements kind to correctly encode smi kinds
Bug: v8:10582
Change-Id: I4f86af0a2a190a52885fea5cc42c9e9983372119
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2398530
Reviewed-by: Sathya Gunasekaran  <gsathya@chromium.org>
Commit-Queue: Mythri Alle <mythria@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69772}
2020-09-09 12:57:54 +00:00
Gus Caplan
74ede07103 Fix PerformCastCheck on v8::Data (again)
See crrev.com/c/2383030

PerformCheckCast<Data>() itself should not invoke Data::Cast(), since
there is no such method and every publicly available value can be
casted to it anyway. This is an issue in e.g.
GetDataFromSnapshotOnce<Data>().

Change-Id: I4acbff86ffd4537b744dafc588733428e792b4bd
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2399052
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Gus Caplan <snek@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69771}
2020-09-09 12:36:16 +00:00
Sathya Gunasekaran
92236da279 Revert "Reland "[test][d8] Add d8.log.getAndStop helper""
This reverts commit 23531d823c.

Reason for revert: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20GC%20Stress%20-%20custom%20snapshot/33007?

Original change's description:
> Reland "[test][d8] Add d8.log.getAndStop helper"
> 
> This is a reland of 95aa697b2f
> 
> Original change's description:
> > [test][d8] Add d8.log.getAndStop helper
> >
> > The new helper function allows us to write tests for log parsing
> > without the need to first generating a log file. This makes it easier
> > to spot errors when the log format changes.
> >
> > - Add d8 global variable
> > - Add file_name accessor to Logger and Log classes
> > - Change OS::LogFileOpenMode to w+ / wb+
> > - Use separate Log::WriteLogHeader method
> > - Remove unused logger_ instance variable from Log
> >
> > Bug: v8:10644
> > Change-Id: Ifc7e35aa4e91b3f01f0847843263946e085944c3
> > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2387563
> > Commit-Queue: Camillo Bruni <cbruni@chromium.org>
> > Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
> > Reviewed-by: Toon Verwaest <verwaest@chromium.org>
> > Reviewed-by: Sathya Gunasekaran  <gsathya@chromium.org>
> > Cr-Commit-Position: refs/heads/master@{#69715}
> 
> Bug: v8:10644
> 
> TBR=verwaest@chromium.org
> 
> Change-Id: I54741344834d88a376b74e2e3a2047e880a94624
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2396081
> Commit-Queue: Camillo Bruni <cbruni@chromium.org>
> Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
> Reviewed-by: Sathya Gunasekaran  <gsathya@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#69769}

TBR=mlippautz@chromium.org,cbruni@chromium.org,gsathya@chromium.org,verwaest@chromium.org

Change-Id: I493315e0d6498f0fa9bed3409725bb52d554b53a
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:10644
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2400982
Reviewed-by: Sathya Gunasekaran  <gsathya@chromium.org>
Commit-Queue: Sathya Gunasekaran  <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69770}
2020-09-09 11:46:16 +00:00
Camillo Bruni
23531d823c Reland "[test][d8] Add d8.log.getAndStop helper"
This is a reland of 95aa697b2f

Original change's description:
> [test][d8] Add d8.log.getAndStop helper
>
> The new helper function allows us to write tests for log parsing
> without the need to first generating a log file. This makes it easier
> to spot errors when the log format changes.
>
> - Add d8 global variable
> - Add file_name accessor to Logger and Log classes
> - Change OS::LogFileOpenMode to w+ / wb+
> - Use separate Log::WriteLogHeader method
> - Remove unused logger_ instance variable from Log
>
> Bug: v8:10644
> Change-Id: Ifc7e35aa4e91b3f01f0847843263946e085944c3
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2387563
> Commit-Queue: Camillo Bruni <cbruni@chromium.org>
> Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
> Reviewed-by: Toon Verwaest <verwaest@chromium.org>
> Reviewed-by: Sathya Gunasekaran  <gsathya@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#69715}

Bug: v8:10644

TBR=verwaest@chromium.org

Change-Id: I54741344834d88a376b74e2e3a2047e880a94624
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2396081
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Sathya Gunasekaran  <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69769}
2020-09-09 11:20:34 +00:00
Victor Gomes
a49a9710db [BUILD] GN flag to disable arguments adaptor frame
Change-Id: I0840a8fb34e8ef068580ad74e40e87c0bb56c1af
Bug: v8:10201
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2400278
Commit-Queue: Victor Gomes <victorgomes@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Auto-Submit: Victor Gomes <victorgomes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69768}
2020-09-09 09:59:14 +00:00
Omer Katz
b7b3abe83a cppgc: Replace worklist implementation with new worklist
This CL migrates cppgc to use Ulan's new worklist implementation.

Since there is no central segments array anymore, we cannot rely on
getting the same view (now renamed to Local) given the same task id.
To avoid creating many short lived segments (e.g. for write barriers)
marking state now holds local views for all worklists and provides
access to them.

Bug: chromium:1056170
Change-Id: Id19fe1196b79ed251810e91074046998dc2a9177
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2390771
Commit-Queue: Omer Katz <omerkatz@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69767}
2020-09-09 09:51:59 +00:00
Sathya Gunasekaran
80b1d7ff24 [inspector] Skip another pause-on-oom-wide test
Flaky: https://logs.chromium.org/logs/v8/buildbucket/cr-buildbucket.appspot.com/8869650907931155856/+/steps/OptimizeForSize__flakes_/0/logs/pause-on-oom-wide/0

Bug: v8:10876
Change-Id: I3750dd049300cb9eed10a7d0952fac77066bbcb3
TBR: solanes@chromium.org
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2400341
Commit-Queue: Sathya Gunasekaran  <gsathya@chromium.org>
Reviewed-by: Santiago Aboy Solanes <solanes@chromium.org>
Reviewed-by: Sathya Gunasekaran  <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69766}
2020-09-09 09:43:14 +00:00
Zhao Jiazhong
6bd1e5a971 [mips][super property speed] Add an IC for super property loads
Port 3d40ec8d99
https://crrev.com/c/2349297

Change-Id: If362e7592ee81e1e428c4757c3ca03768ad366b4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2398767
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Zhao Jiazhong <zhaojiazhong-hf@loongson.cn>
Cr-Commit-Position: refs/heads/master@{#69765}
2020-09-09 09:24:08 +00:00
Martin Bidlingmaier
43862c2c6d [regexp] Fix assert about unicode in experimental engine
Follow up to 3f4f4a0: "[regexp] Handle zero-length matches in
experimental engine".

We want to assert an equivalence, not an implication in the boring
direction.

Bug: v8:10765
Change-Id: Ia7b4851feb1f5f621d687779d0cae0e28433f00e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2398536
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Martin Bidlingmaier <mbid@google.com>
Cr-Commit-Position: refs/heads/master@{#69764}
2020-09-09 08:30:56 +00:00
Sathya Gunasekaran
cb1a96e58f Revert "[serializer] Change deferring to use forward refs"
This reverts commit 81577a79e1.

Reason for revert: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20-%20shared/10544

Original change's description:
> [serializer] Change deferring to use forward refs
> 
> Now that we have forward references, we can replace the body deferring
> mechanism with forward references to the entire pointer.
> 
> This ensures that objects are always deserialized with their contents
> (aside from themselves maybe holding forward refs), and as a result we
> can simplify the CanBeDeferred conditions which encode the constraint
> that some objects either need immediately have contents, or cannot be
> deferred because their fields are changed temporarily (e.g. backing
> store refs).
> 
> This also means that objects with length fields (e.g. arrays) will
> always have those length fields deserialized when the object is
> deserialized, which was not the case when the body could be deferred.
> This helps us in the plan to make GC possible during deserialization.
> 
> Bug: v8:10815
> Change-Id: Ib0e5399b9de6027765691e8cb47410a2ccc15485
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2390643
> Reviewed-by: Jakob Gruber <jgruber@chromium.org>
> Commit-Queue: Leszek Swirski <leszeks@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#69760}

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

Change-Id: I7a93a59217a2b38e2157c0f7ffc7ac648590a8d6
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:10815
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2398535
Reviewed-by: Sathya Gunasekaran  <gsathya@chromium.org>
Commit-Queue: Sathya Gunasekaran  <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69763}
2020-09-09 07:42:32 +00:00
Sathya Gunasekaran
79e4420c30 Revert "[serializer] Remove new space"
This reverts commit 1c7618abad.

Reason for revert: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20-%20shared/10544

Original change's description:
> [serializer] Remove new space
> 
> The new space is unused in the snapshot, as we convert all new objects
> to old space objects when serializing. This means we can get rid of
> the snapshot new space entirely, and as a result get rid of the write
> barrier checks.
> 
> This also rejiggles the order of the general spaces enum so that the new
> spaces are at the end, and can be truncated off for the SnapshotSpace
> enum.
> 
> As a drive by, fix a bug in an unrelated test-api test which this patch
> exposed.
> 
> Change-Id: If67ff8be5bf03104a3ffae7df707c22460bba3a1
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2390762
> Commit-Queue: Leszek Swirski <leszeks@chromium.org>
> Reviewed-by: Jakob Gruber <jgruber@chromium.org>
> Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#69761}

TBR=jgruber@chromium.org,leszeks@chromium.org,dinfuehr@chromium.org

Change-Id: Iaf2362d8cd3a17d8410030aca0dd2250c5a0a7af
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2398533
Reviewed-by: Sathya Gunasekaran  <gsathya@chromium.org>
Commit-Queue: Sathya Gunasekaran  <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69762}
2020-09-09 07:40:02 +00:00
Leszek Swirski
1c7618abad [serializer] Remove new space
The new space is unused in the snapshot, as we convert all new objects
to old space objects when serializing. This means we can get rid of
the snapshot new space entirely, and as a result get rid of the write
barrier checks.

This also rejiggles the order of the general spaces enum so that the new
spaces are at the end, and can be truncated off for the SnapshotSpace
enum.

As a drive by, fix a bug in an unrelated test-api test which this patch
exposed.

Change-Id: If67ff8be5bf03104a3ffae7df707c22460bba3a1
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2390762
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69761}
2020-09-09 07:33:40 +00:00
Leszek Swirski
81577a79e1 [serializer] Change deferring to use forward refs
Now that we have forward references, we can replace the body deferring
mechanism with forward references to the entire pointer.

This ensures that objects are always deserialized with their contents
(aside from themselves maybe holding forward refs), and as a result we
can simplify the CanBeDeferred conditions which encode the constraint
that some objects either need immediately have contents, or cannot be
deferred because their fields are changed temporarily (e.g. backing
store refs).

This also means that objects with length fields (e.g. arrays) will
always have those length fields deserialized when the object is
deserialized, which was not the case when the body could be deferred.
This helps us in the plan to make GC possible during deserialization.

Bug: v8:10815
Change-Id: Ib0e5399b9de6027765691e8cb47410a2ccc15485
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2390643
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69760}
2020-09-09 07:20:14 +00:00
Martin Bidlingmaier
f2a832cadd [regexp] Support more quantifiers in experimental engine
Previously to this commit only quantifiers of the form /<x>*/, i.e.
arbitrarily often greedy repetition, were implemented.  Now a much
larger class is supported, e.g. + and ? and their non-greedy variants.
Because it came up repeatedly during the implementation, the commit also
adds the Label and DeferredLabel classes to patch JMP and FORK target
addresses more easily.

Still not supported are the following quantifiers:
- Possessive quantifiers, where I'm not entirely sure whether they could
  be implemented in principle. Re2 doesn't support them.
- Quantifiers with large but finite numbers for min and max numbers of
  repetitions, as in e.g. /<x>{9000, 90000}/. These are currently
  limited to some small value. This is because the body of such
  repetitions is unrolled explicitly, so the size of the bytecode is
  linear in the number of repetitions.

Cq-Include-Trybots: luci.v8.try:v8_linux64_fyi_rel_ng
Bug: v8:10765
Change-Id: Id04d893252588abb0f80c3cb33cfc707f6601ea0
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2387575
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69759}
2020-09-09 06:17:31 +00:00
v8-ci-autoroll-builder
9f9c477629 Update V8 DEPS.
Rolling v8/build: 2dc8141..9c1d422

Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/69e45dc..dc9083e

Rolling v8/third_party/depot_tools: 9218ba2..fb6d901

Rolling v8/third_party/zlib: aec16ef..898c6c0

Rolling v8/tools/clang: 03bacc3..97d6ab3

TBR=machenbach@chromium.org,tmrts@chromium.org,v8-waterfall-sheriff@grotations.appspotmail.com

Change-Id: I3ce0abf36f3641e948f57e37a3f6f7f9cb45836b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2398861
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@{#69758}
2020-09-09 03:52:41 +00:00
Ng Zhi An
e394b7d227 [wasm-simd][scalar-lowering] Enable F64x2 tests for scalar lowering
Add in f64x2 opcodes to simd scalar lowering, this allows us to enable
most of the f64x2 test cases with quite little changes - the significant
change is to make sure the comparisons return a Int64 node.

Bug: v8:10507
Change-Id: I8c8920d37c0cd0841dafcdb0310b6340b3c16189
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2399051
Reviewed-by: Bill Budge <bbudge@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69757}
2020-09-08 22:55:17 +00:00
Ng Zhi An
33e6ac5d48 [wasm-simd][scalar-lowering] Lower simd before int64
SIMD lowering can result in int64 nodes (from i64x2), and int64 nodes
won't create SIMD nodes. So run SIMD lowering first, then int64
lowering.

Bug: v8:10507
Change-Id: Id720d98eda0bcd9ab441df687f974fd84bf9118c
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2393497
Reviewed-by: Bill Budge <bbudge@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69756}
2020-09-08 21:49:27 +00:00
Ng Zhi An
ff9cc7e03b [wasm-simd][scalar-lowering] Fix v128.const lowering
v128.const was incorrectly always lowered to 4 word32 nodes, regardless
of what the lowered type was set to be.

In the test case, v128.const was consumed by i8x16.eq, so the lowered
typed of v128.const node was set to SimdType::kInt8x16, but it was still
lowered as a SimdType::kInt32x4, and then later crashes when lowering
the comparisons.

Bug: v8:10507
Change-Id: I24f16c94968cd8b6c7cd5d400d1a0046da3d47da
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2391919
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Reviewed-by: Bill Budge <bbudge@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69755}
2020-09-08 19:13:55 +00:00
Andreas Haas
1554c7eed8 Revert "[wasm][liftoff] Emit safepoints for externref values on the stack"
This reverts commit 10348e8eb6.

Reason for revert: https://crbug.com/1125951

Original change's description:
> [wasm][liftoff] Emit safepoints for externref values on the stack
> 
> With this CL we emit safepoint maps for externref values on the Liftoff
> value stack. With that there is support for externref parameters and
> locals in Liftoff, as well as for intermediate values of type
> externref.
> 
> R=​thibaudm@chromium.org
> 
> Bug: v8:7581
> Change-Id: I2df0a8d00b2da33fe06ff474b039cca4c7be726d
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2387571
> Commit-Queue: Andreas Haas <ahaas@chromium.org>
> Reviewed-by: Thibaud Michaud <thibaudm@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#69725}

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

Change-Id: I4cdf7fedfc91cd99302d5cb05e242dbb032c5803
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:7581
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2398529
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69754}
2020-09-08 18:48:17 +00:00
Peter Kvitek
6b3e8e693e [DevTools] Re-implemented Profiler.getRuntimeCallStats.
The original Profiler.getRuntimeCallStats implementation retrieved
a bunch of V8 Counters instead of runtime call counters. This
functionality is now available through the new APIs:
enableCounters, disableCounters and getCounters.

The getRuntimeCallStats API now retrieves real V8 Runtime Call Stats.

Change-Id: I702f60a6c43773f5c41b6861be3f9435975c370f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2380853
Commit-Queue: Peter Kvitek <kvitekp@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69753}
2020-09-08 18:32:05 +00:00
Seth Brenith
abb7cdc91f [regalloc] Loop-top values can be backedges too
When counting which backedges conflict with a loop-top phi value, we
should include values introduced at the start of the loop.

I don't expect this change to make performance differences on its own,
but it is a step toward changing the heuristic so that we're less likely
to introduce unnecessary load/store pairs across the backedge.

Bug: v8:10606
Change-Id: I299e388b0b964573119ba0b775d50f398c467c46
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2385715
Reviewed-by: Thibaud Michaud <thibaudm@chromium.org>
Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
Cr-Commit-Position: refs/heads/master@{#69752}
2020-09-08 17:18:12 +00:00
Ng Zhi An
3219b29d41 [liftoff][wasm-simd] Check SIMD support for more operations
We need to also check SIMD support for v128.const and i8x16.shuffle,
these are separate functions, not part of the SimdOp or SimdLaneOp.

This was discovered while running some JS tests when trying to stage
SIMD.

Bug: v8:10835
Change-Id: I51c6e65cc9397058e0be83cf4116ab4bfe4c4ec9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2391332
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Zhi An Ng <zhin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69751}
2020-09-08 17:10:02 +00:00
Milad Farazmand
1e39d196ff PPC/s390: [super property speed] Add an IC for super property loads
Port 3d40ec8d99

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

Change-Id: I978aa3a15e9c71e1907f49a5b22b6a01a96c5f1e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2399038
Reviewed-by: Junliang Yan <jyan@ca.ibm.com>
Commit-Queue: Milad Farazmand <miladfar@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#69750}
2020-09-08 17:02:52 +00:00
Leszek Swirski
5e244175cc [cleanup] Generate FeedbackVector with Torque
Change FeedbackVector into a Torque-generated class, simplifying its
C++ implementation. As a drive-by, also get rid of the lower-cased,
integer-indexed slot accessors, and replace the calls that needed this
integer index with FeedbackSlot (potentially with a new WithOffset
adjustment for extra data slots).

Change-Id: Ie4f7e99b462ef95419edab46b4ac7ceecae9a05f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2398638
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Auto-Submit: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69749}
2020-09-08 16:24:57 +00:00
Shu-yu Guo
98c3f98f9b Revert "[Heap] ScavengerCollector use Jobs."
This reverts commit 9e8c54f830.

Reason for revert: Data races (https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20TSAN/33100)

Original change's description:
> [Heap] ScavengerCollector use Jobs.
> 
> No yielding is necessary since the main thread Join()s.
> 
> max concurrency is determined based on either
> remaining_memory_chunks_ or global pool size
> (copied_list_ + promotion_list_)
> 
> Change-Id: Ie30fa86c44d3224b04df5d79569bce126ce7d96b
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2354390
> Commit-Queue: Etienne Pierre-Doray <etiennep@chromium.org>
> Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#69746}

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

Change-Id: I206397c6086cf18d5e08cf615bdaaf0f34c6d36b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2398852
Reviewed-by: Shu-yu Guo <syg@chromium.org>
Commit-Queue: Shu-yu Guo <syg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69748}
2020-09-08 16:23:54 +00:00
Milad Farazmand
08c26b80e5 PPC/s390: [wasm][liftoff] Emit safepoints for externref values on the stack
Port 10348e8eb6

Original Commit Message:

    With this CL we emit safepoint maps for externref values on the Liftoff
    value stack. With that there is support for externref parameters and
    locals in Liftoff, as well as for intermediate values of type
    externref.

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

Change-Id: I369c0e2e7fb1c4681101a149b01e1a9580051d45
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2398845
Reviewed-by: Junliang Yan <jyan@ca.ibm.com>
Reviewed-by: Joran Siu <joransiu@ca.ibm.com>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Milad Farazmand <miladfar@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#69747}
2020-09-08 15:52:12 +00:00
Etienne Pierre-doray
9e8c54f830 [Heap] ScavengerCollector use Jobs.
No yielding is necessary since the main thread Join()s.

max concurrency is determined based on either
remaining_memory_chunks_ or global pool size
(copied_list_ + promotion_list_)

Change-Id: Ie30fa86c44d3224b04df5d79569bce126ce7d96b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2354390
Commit-Queue: Etienne Pierre-Doray <etiennep@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69746}
2020-09-08 15:29:02 +00:00
Gus Caplan
e091d5b2f5 [Torque] Port some (Shared)ArrayBuffer APIs
Bug: v8:9891
Change-Id: I04a1eaedc1e3e012a4779671025c8b71d1c6a56e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2391909
Commit-Queue: Gus Caplan <snek@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69745}
2020-09-08 15:06:02 +00:00
Sathya Gunasekaran
b45693010f Revert "[wasm][liftoff] Support for most externref globals"
This reverts commit e43ec59b4e.

Reason for revert: https://logs.chromium.org/logs/v8/buildbucket/cr-buildbucket.appspot.com/8869719317069732832/+/steps/Check_-_d8/0/logs/externref-globals-liftoff/0

Original change's description:
> [wasm][liftoff] Support for most externref globals
> 
> With this CL we add support for all externref globals except for
> imported mutable globals.
> 
> R=​thibaudm@chromium.org
> 
> Bug: v8:7581
> Change-Id: I63cb26f8ad6f4b8fc1c276e223c5d45745122ebf
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2396086
> Commit-Queue: Andreas Haas <ahaas@chromium.org>
> Reviewed-by: Thibaud Michaud <thibaudm@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#69741}

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

Change-Id: I19d191862aa91a116ea84a4a59a3a0a8036fcb49
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:7581
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2398643
Commit-Queue: Sathya Gunasekaran  <gsathya@chromium.org>
Reviewed-by: Sathya Gunasekaran  <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69744}
2020-09-08 14:18:05 +00:00
Santiago Aboy Solanes
cc138679c1 [compiler] Replace HeapNumberData with direct reads
Bug: v8:7790
Change-Id: I0194178cd73715b2a7e229dd7ce52a67c2280881
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2382312
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Nico Hartmann <nicohartmann@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69743}
2020-09-08 14:06:47 +00:00
Santiago Aboy Solanes
bfc5127afa [compiler] Add extra synchronization to source position table's get/set
Original CL by neis@: http://crrev.com/c/v8/v8/+/2362693/1

Bug: v8:7790, v8:10853
Fixed: v8:10853
Change-Id: If0bd45e9dfb00f8ef1a358953dab1f5e1c9ae29e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2387960
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Nico Hartmann <nicohartmann@chromium.org>
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69742}
2020-09-08 14:05:42 +00:00
Andreas Haas
e43ec59b4e [wasm][liftoff] Support for most externref globals
With this CL we add support for all externref globals except for
imported mutable globals.

R=thibaudm@chromium.org

Bug: v8:7581
Change-Id: I63cb26f8ad6f4b8fc1c276e223c5d45745122ebf
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2396086
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Reviewed-by: Thibaud Michaud <thibaudm@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69741}
2020-09-08 13:55:22 +00:00
Andreas Haas
6565eb09c8 [wasm] Increase cost of return-call in the interpreter
The wasm interpreter is slow on an arm simulator build with asan when
it comes to return calls. An infinite return-call recursion therefore
caused a timeout on ClusterFuzz. With this CL we increase the costs of
return calls, and thereby avoid the timeout.

R=clemensb@chromium.org

Bug: chromium:1124899
Change-Id: If88e060779fbe2569e289e60170cf487dd31d7db
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2397615
Reviewed-by: Thibaud Michaud <thibaudm@chromium.org>
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69740}
2020-09-08 13:54:17 +00:00
evih
64b5926497 [wasm] Reverse the evaluation of params in js-to-wasm generic wrapper
The parameters should be processed and evaluated in an increasing order
(starting with the 1st param).
Before we started with the last (n-th) parameter which was not correct.

Bug: v8:10701, chromium:1124940
Change-Id: I8e0d8b1f0c53832c8f2d09551879c1a4413e1598
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2396085
Reviewed-by: Thibaud Michaud <thibaudm@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Eva Herencsárová <evih@google.com>
Cr-Commit-Position: refs/heads/master@{#69739}
2020-09-08 13:36:15 +00:00
Zhao Jiazhong
5286799c13 [mips][execution] Add argument count to the standard frame
Port a2fd94f014
https://crrev.com/c/2312783

Original Commit Message:

  This adds the argument count (as intptr) to the standard frame.
  StandardFrames are now in the same shape as OptimizedFrames.

  The argument count in the stack will be used to tear down the
  arguments when we remove the arguments adaptor frame.

Change-Id: I5cff9874735c1bdbd685deb0d829e57f1ee07ac2
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2393323
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Zhao Jiazhong <zhaojiazhong-hf@loongson.cn>
Cr-Commit-Position: refs/heads/master@{#69738}
2020-09-08 13:29:35 +00:00
Santiago Aboy Solanes
ee80176181 [compiler] Replace FixedDoubleArrayData with direct reads
It does a direct access iff the FLAG_turbo_direct_heap_access is
enabled. Otherwise, it uses the Data classes as it did before.

Bug: v8:7790
Change-Id: I4f42e5734fdb2c91dbe9ef08869aec621c9d04c3
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2382311
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Nico Hartmann <nicohartmann@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69737}
2020-09-08 13:17:15 +00:00
Martin Bidlingmaier
3f4f4a0dcc [regexp] Handle zero-length matches in experimental engine
Cq-Include-Trybots: luci.v8.try:v8_linux64_fyi_rel_ng
Bug: v8:10765
Change-Id: I9e23fb5ba8a21aa1ddf96ab7936058f671bcc9ae
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2397895
Commit-Queue: Martin Bidlingmaier <mbid@google.com>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69736}
2020-09-08 12:45:27 +00:00
Marja Hölttä
3d40ec8d99 [super property speed] Add an IC for super property loads
Bug: v8:9237
Change-Id: I06d7e74ba0360334e6fa65c19f24548e220e4c69
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2349297
Commit-Queue: Marja Hölttä <marja@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69735}
2020-09-08 12:28:05 +00:00
Z Nguyen-Huu
7b8cce7724 [v8windbg] Cast resource as ExternalStringResourceBase*
Cast resource field in ExternalString as

v8: :String::ExternalStringResourceBase* would give us more info.
Change-Id: Iae97b477f400f58365e2381b7230d2226d490aa7
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2388742
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Seth Brenith <seth.brenith@microsoft.com>
Cr-Commit-Position: refs/heads/master@{#69734}
2020-09-08 12:08:15 +00:00
Martin Bidlingmaier
bc4174cc3b [regexp] Check capture_count before using experimental engine
Sometimes the parser throws away redundant parts of the AST while
parsing.  For example, the regexp /(?:(?=(f)o))?f/ is (almost)
equivalent to just /f/ because the optional block (...)? is zero-length.
The parser notices this and returns the same tree as for /f/.  However,
there is a capture inside the (...)? block (which is never recorded
because the quantifier containing it can only match zero-width, which is
considered failure), so in this case it doesn't suffice to check that
the regexp AST doesn't contain captures.

Cq-Include-Trybots: luci.v8.try:v8_linux64_fyi_rel_ng
Bug: v8:10765
Change-Id: I6145849d95b3522a397eadd2bae63d1d8e880f28
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2397896
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Martin Bidlingmaier <mbid@google.com>
Cr-Commit-Position: refs/heads/master@{#69733}
2020-09-08 11:52:35 +00:00
Sathya Gunasekaran
b5fe40aab1 [inspector] Skip failing test
TBR: solanes@chromium.org
Bug: v8:10876
Change-Id: Ifd00704ea6328c0f470a2e33f37fb7a7e423435a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2397897
Reviewed-by: Santiago Aboy Solanes <solanes@chromium.org>
Reviewed-by: Sathya Gunasekaran  <gsathya@chromium.org>
Commit-Queue: Sathya Gunasekaran  <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69732}
2020-09-08 11:29:05 +00:00
Thibaud Michaud
d5e0d1f78d [wasm][debug] Handle OSR edge case
When the top frame is paused at a breakpoint, and this breakpoint is
being removed or was already removed, introduce a "dead breakpoint" in
the new code. This ensures that:
- The source position for the new frame is correct, otherwise it would
just pick the source position of the previous call,
- The offset between the source position and return address is the same
in the new and old code, which is necessary for OSR to find the correct
return address.

R=clemensb@chromium.org

Bug: v8:10337
Change-Id: I400886ff14846d3973d0634592c05960c05de738
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2377686
Commit-Queue: Thibaud Michaud <thibaudm@chromium.org>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69731}
2020-09-08 10:39:04 +00:00