Commit Graph

56048 Commits

Author SHA1 Message Date
Seth Brenith
3161a43ca0 Add option to speed up Torque compilation
This change adds a flag v8_enable_fast_torque, which follows the pattern
of v8_enable_fast_mksnapshot and can improve build times by running an
optimized Torque compiler during debug builds. On my machine, this
change improves rebuild time after changing a .tq file by about 7
seconds.

Change-Id: I7c91d1059c614fe34eefe7ee8c3cba7c931d5a50
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1612160
Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61556}
2019-05-15 19:21:55 +00:00
Yang Guo
05c203df2e Add eng review owners as escalation path
R=danno@chromium.org

Bug: v8:9247
Change-Id: I0541f68d4a285df0bdae4ef8b8ee7698f897c4ce
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1612901
Commit-Queue: Yang Guo <yangguo@chromium.org>
Reviewed-by: Daniel Clifford <danno@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61555}
2019-05-15 19:12:10 +00:00
Deepti Gandluri
9d63df4335 Revert "Add test to show the crashing of TimeZone::AdoptDefault"
This reverts commit 9141522739.

Reason for revert: This fails on multiple bots, infra bug let this land - https://logs.chromium.org/logs/v8/buildbucket/cr-buildbucket.appspot.com/8913373605803837584/+/steps/build/0/steps/compile/0/logs/raw_io.output_failure_summary_/0

Original change's description:
> Add test to show the crashing of TimeZone::AdoptDefault
> 
> The ICU DEPS for chromium is landing in
> https://chromium-review.googlesource.com/c/chromium/src/+/1607506
> 
> Bug: chromium:950851
> Change-Id: If16e82d70c319108ead06dd095b22ecda5408a6b
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1601370
> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
> Commit-Queue: Frank Tang <ftang@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#61550}

TBR=adamk@chromium.org,jkummerow@chromium.org,jshin@chromium.org,mathias@chromium.org,ftang@chromium.org

Change-Id: I682119db77c569ad7b619375e54309a4ff530273
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:950851
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1613697
Reviewed-by: Deepti Gandluri <gdeepti@chromium.org>
Commit-Queue: Deepti Gandluri <gdeepti@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61554}
2019-05-15 17:49:40 +00:00
Deepti Gandluri
795ade8860 Revert "Update include path to date.h which was moved in the meanwhile"
This reverts commit 3e118baf00.

Reason for revert: Reverting as ftang@'s CL here will be reverted. 
https://chromium-review.googlesource.com/c/v8/v8/+/1601370, and this was a fix for a bad landing.

Original change's description:
> Update include path to date.h which was moved in the meanwhile
> 
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: chromium:950851
> Change-Id: Ia5e547e7cd7947f91814cb24de3dcf3b822905da
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1611811
> Reviewed-by: Deepti Gandluri <gdeepti@chromium.org>
> Commit-Queue: Igor Sheludko <ishell@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#61552}

TBR=gdeepti@chromium.org,ishell@chromium.org

Change-Id: Ibe1671b1973afae8db6180d3f5471763786bd23d
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:950851
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1613637
Reviewed-by: Deepti Gandluri <gdeepti@chromium.org>
Commit-Queue: Deepti Gandluri <gdeepti@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61553}
2019-05-15 17:47:20 +00:00
Igor Sheludko
3e118baf00 Update include path to date.h which was moved in the meanwhile
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:950851
Change-Id: Ia5e547e7cd7947f91814cb24de3dcf3b822905da
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1611811
Reviewed-by: Deepti Gandluri <gdeepti@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61552}
2019-05-15 17:31:50 +00:00
Igor Sheludko
093afa7b73 [cpu-profiler] Fix includes that broke PrintF() with PRId64
Somehow the "bad" CL managed to pass the CQ:
  https://chromium-review.googlesource.com/c/v8/v8/+/1484461

No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Change-Id: I86d78f75c3430d01c814948815c7b3501929a52a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1611810
Reviewed-by: Deepti Gandluri <gdeepti@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61551}
2019-05-15 17:20:19 +00:00
Frank Tang
9141522739 Add test to show the crashing of TimeZone::AdoptDefault
The ICU DEPS for chromium is landing in
https://chromium-review.googlesource.com/c/chromium/src/+/1607506

Bug: chromium:950851
Change-Id: If16e82d70c319108ead06dd095b22ecda5408a6b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1601370
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Frank Tang <ftang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61550}
2019-05-15 16:59:33 +00:00
Frank Tang
241768b439 Add benchmark test for Intl.Locale
Bug: v8:9153
Change-Id: I48adc554736b19507da318a157ef2f23bf7cbd52
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1610216
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Frank Tang <ftang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61549}
2019-05-15 16:58:28 +00:00
Andrew Comminos
deb3231a23 [cpu-profiler] Implement CPU profiler subsampling/multiplexing
Permit individual calls to CpuProfiler::StartSampling to provide their
own requested sampling interval, to be snapped to the profiler's
sampling interval. Use the greatest common divisor of all sample rates
to determine what sample rate should be chosen for the sampling thread,
and dispatch samples to attached profilers based on their requested
sample periodicity.

Change-Id: I0b076d09761d7176f31725e112578b68ab5da54c
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1484461
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Alexei Filippov <alph@chromium.org>
Reviewed-by: Peter Marshall <petermarshall@chromium.org>
Commit-Queue: Andrew Comminos <acomminos@fb.com>
Cr-Commit-Position: refs/heads/master@{#61548}
2019-05-15 16:48:27 +00:00
Toon Verwaest
a7985022f6 [json] Preallocate mutable heap numbers so object verification doesn't fail
Additionally pass WriteBarrierMode while building the object

Change-Id: Ibc8ad592f822ee3b046406013cc36ae64f6b099b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1613251
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61547}
2019-05-15 16:41:18 +00:00
Z Duong Nguyen-Huu
94b2c12119 Reland of Port ProxyHasProperty to Torque
Refactor CheckHasTrapResult as well.

Spec: https://tc39.github.io/ecma262/#sec-proxy-object-internal-methods-and-internal-slots-hasproperty-p
Bug: v8:6664
Change-Id: Iaa9c1cb46ab4f7c8139dfe1380b3ec807a4719ee
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1610215
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Commit-Queue: Z Nguyen-Huu <duongn@microsoft.com>
Cr-Commit-Position: refs/heads/master@{#61546}
2019-05-15 16:03:22 +00:00
Z Duong Nguyen-Huu
f52e8ee4f4 Add spread call micro-benchmark for frozen array
Bug: v8:6831
Change-Id: If3084304b4759f0c1a6e930d66a45f6c9d51eabd
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1612166
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Z Nguyen-Huu <duongn@microsoft.com>
Cr-Commit-Position: refs/heads/master@{#61545}
2019-05-15 15:59:42 +00:00
Johannes Henkel
2021d4ef2c [DevTools] Switch inspector-test.cc to use the CBOR encoded inspector state.
The main change here is that in isolate-data.h, I'm switching from stateJSON to state.
This routine returns a CBOR encoded state cookie, which is also what we already
use in Chromium (blink).

In inspector-test.cc, I then put this byte vector into a V8 String,
and to make this roundtrip, change the extraction routine to get the
bytes. It's a little weird to store arbitrary bytes inside a v8 string,
but it appears to work fine because these bytes end up in the 8 bit portion,
much like isolatin characters would.

Change-Id: I72a0bdefd85a290f4e91db79be67d86952831685
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1610478
Reviewed-by: Yang Guo <yangguo@chromium.org>
Reviewed-by: Alexei Filippov <alph@chromium.org>
Commit-Queue: Johannes Henkel <johannes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61544}
2019-05-15 15:58:12 +00:00
Maya Lekova
0607f8aeb2 [test] Skip debugger tests failing with JSON parsing
NOTRY=true

Bug: v8:9257
Change-Id: I4713fd90c2a8b544def09d7305fe84d789ed60c4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1613250
Auto-Submit: Maya Lekova <mslekova@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61543}
2019-05-15 15:40:16 +00:00
Mike Stanton
81cd54b749 [ptr-compr] Fix macro assembler test for Windows bot failure
R=ishell@chromium.org

Bug: v8:7703
Change-Id: Iba0ad7d6c6e9c772fc9d9bc081b0c2bf31e23565
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1613249
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Michael Stanton <mvstanton@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61542}
2019-05-15 15:19:02 +00:00
Michael Lippautz
735aa493a2 Update src/base/ OWNERS
Bug: v8:9247
Change-Id: Idb67869f3562e8afc7a744a939402db82bdb1bbd
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1611806
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Auto-Submit: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61541}
2019-05-15 14:42:26 +00:00
Clemens Hammacher
85efe15737 [cleanup] Remove unused format macros plus header
All macros defined in "format-macros.h" are dead now (after
https://crrev.com/c/1613243). This CL removes this header, and includes
<cinttypes> instead wherever we use format macros for the types defined
in <cstdint>.

Plus some drive-by cleanup of includes.

R=mlippautz@chromium.org

Bug: v8:9183
Change-Id: Ic379759b79edb50e38833defb1577cc3af7c8150
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1611800
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61540}
2019-05-15 14:26:25 +00:00
Toon Verwaest
123fbb7773 [json] Don't internalize json string values longer than 10 chars
Internalizing is useful if we expect the string to reoccur many times.
Internalizing too long strings will cost due to hashing, and the resulting
strings will be kept alive for longer. Drop the limit to 10 to be more
conservative.

Change-Id: I2ac2109ca03ab05dbc5c01d4efe6f912b12f65b7
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1611805
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61539}
2019-05-15 14:18:25 +00:00
Toon Verwaest
fdde894576 [json] More feedback-guided json parsing
Use feedback from adjecent array elements to speed up object creation.

Change-Id: Ib5c1b07cc63afb1a4b0cf194144a0ecd31139cb6
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1612898
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61538}
2019-05-15 14:05:17 +00:00
Simon Zünd
0a3e0cc690 [torque] Fix crash when no map is passed to extern class constructor
This CL adds a check and a more descriptive error message when no "map"
is passed when constructing an extern class:

extern class Foo extends HeapObject {...}
const f = new Foo {};

R=sigurds@chromium.org

Bug: v8:7793
Change-Id: I0dfa6d5976e98d572bafcf7a87f701ea97cd6a73
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1611804
Commit-Queue: Simon Zünd <szuend@chromium.org>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61537}
2019-05-15 13:56:05 +00:00
Clemens Hammacher
0fbc34d51b [cleanup] Replace %PRIuS by %zu
The 'z' length modifier for {size_t} in format strings was introduced
with C99, hence it is available in all environments we support.

R=jgruber@chromium.org, mlippautz@chromium.org

Bug: v8:9183
Change-Id: I1bc2abec3f9c7b38186128202fef4719853de7d4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1613243
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61536}
2019-05-15 13:45:59 +00:00
Nico Hartmann
b8c97dd2a8 [torque] Port Boolean constructor to Torque
Add torque implementation of GetDerivedMap

Bug: v8:9240
Change-Id: I9f2203f5c79fad84f67894c9cbaf28e6f7685f58
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1609804
Commit-Queue: Nico Hartmann <nicohartmann@google.com>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61535}
2019-05-15 13:44:56 +00:00
Simon Zünd
d6b51cba23 [torque-ls] Support types in document-wide symbol requests
This CL adds support for all kinds of Types to "textDocument/symbol"
requests. While LSP has support for classes and structs, it does not
have support for generic types. Only classes are marked as such,
while all other types are marked as structs in terms of the LSP.

Special care has to be taken with TypeAliases. Generic call sites
introduce a new scope (similar to namespace scopes), where new
TypeAliases are created for Generic type arguments. These TypeAliases
then point to the specialized type inside this call-site specific
scope. To omit the specialized TypeAliaes from the symbols list,
they are marked using the "is_user_defined" flag.

R=sigurds@chromium.org

Bug: v8:8880
Change-Id: I576d1c677a5255d54f7774aa053f431608a4cd0c
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1613240
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Auto-Submit: Simon Zünd <szuend@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61534}
2019-05-15 13:41:42 +00:00
Toon Verwaest
4b60b40aa7 [json] Make json parsing iterative
This avoids the need to throw range errors when we run out of stack, limiting
us only by available memory.

The main parser loop is implemented by two subloops.

The first subloop finishes whenever it generates primitive values, empty
arrays, or empty objects. If a non-empty object or array is started, the loop
continues to parse its first member.

The second subloop consumes produced values and either adds them to the parent
array or object, or returns it. The second loop finishes whenever a next value
needs to be produced. When the loop itself produces a finished array or object,
the loop continues.

Exceptions are handled by moving the cursor to end-of-input. Upon end-of-input,
the first loop sets the continuation to "kFail". That causes the second loop to
tear down continuation stack and related handle scopes, resulting in an empty
handle.

The CL additionally buffers all named properties and elements so we can
immediately allocate a correctly shaped object. For object elements we'll take
flat array or dictionary encoding depending on what is more efficient.

This means that element handles are now allocated in their parent HandleScope,
rather than having local handlescopes per-property (of big objects); which is
why I've adjusted the handle-count test to not allocate as many properties. In
the future it would be nice to not have to allocate (as many) handles since
almost everything in the JSON graph will survive JSON parsing...

Bug: chromium:710383
Change-Id: Ia3a7fd0ac260fb1c0e5f929276792b2f8e5fc0ca
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1609802
Reviewed-by: Hannes Payer <hpayer@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61533}
2019-05-15 13:40:37 +00:00
Yang Guo
c39cabbcbe Move date-related files
R=bmeurer@chromium.org, ishell@chromium.org, jshin@chromium.org, ulan@chromium.org

Bug: v8:9247
Change-Id: I67b591b613dd066f441e63fd61952728f4036636
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1613247
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61532}
2019-05-15 13:39:34 +00:00
Yang Guo
a3187716d3 Move d8 into a dedicated subdirectory
Bug: v8:9247
Change-Id: I404e34a013b95c6a7cf03dd9ec0732d9ad796bdc
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1613238
Commit-Queue: Yang Guo <yangguo@chromium.org>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61531}
2019-05-15 13:38:32 +00:00
Clemens Hammacher
fb36fd22ad Reland "[wasm][gc] Reenable discarding system pages"
This is a reland of 200a594a63.
The failing DCHECK was wrong, which is fixed now.

Original change's description:
> [wasm][gc] Reenable discarding system pages
>
> On windows, the range to be discarded needs to be split by the
> reservations, analogous to committing. This CL reuses the same logic,
> and reenables discarding pages on all platforms.
>
> R=mstarzinger@chromium.org
>
> Bug: v8:8217
> Change-Id: I11716d6381f765bdfe4cf48502b5cdc1f42cf8ab
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1611682
> Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#61526}

Bug: v8:8217
No-Try: true
Change-Id: I293c638a5bc4678591a9c02704770ab54af39bdb
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1613248
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61530}
2019-05-15 13:37:27 +00:00
Nico Hartmann
9105e5e8a5 [torque-language-server] Add 'new' keyword to syntax highlighting
Bug: v8:8880
Change-Id: I5bd99ca56dfafa71718b12078224bdc90bcfed14
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1613246
Commit-Queue: Nico Hartmann <nicohartmann@google.com>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: Simon Zünd <szuend@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61529}
2019-05-15 13:36:22 +00:00
Michael Starzinger
163f3d0906 [wasm] Simplify interpreter {ThreadImpl::DoStackTransfer}.
R=ahaas@chromium.org
BUG=v8:9183

Change-Id: Id8fbe12e6972ba22ee3974ec5bbbcfc1d4cb7458
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1612906
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61528}
2019-05-15 13:20:52 +00:00
Clemens Hammacher
6c03d6bb7a Revert "[wasm][gc] Reenable discarding system pages"
This reverts commit 200a594a63.

Reason for revert: Fails on windows: https://ci.chromium.org/p/v8/builders/ci/V8%20Win32%20-%20debug/20310

Original change's description:
> [wasm][gc] Reenable discarding system pages
> 
> On windows, the range to be discarded needs to be split by the
> reservations, analogous to committing. This CL reuses the same logic,
> and reenables discarding pages on all platforms.
> 
> R=​mstarzinger@chromium.org
> 
> Bug: v8:8217
> Change-Id: I11716d6381f765bdfe4cf48502b5cdc1f42cf8ab
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1611682
> Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#61526}

TBR=mstarzinger@chromium.org,clemensh@chromium.org

Change-Id: I35bfbec222c4ba9e7b5990c02d004f7247b28131
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:8217
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1611802
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61527}
2019-05-15 12:57:57 +00:00
Clemens Hammacher
200a594a63 [wasm][gc] Reenable discarding system pages
On windows, the range to be discarded needs to be split by the
reservations, analogous to committing. This CL reuses the same logic,
and reenables discarding pages on all platforms.

R=mstarzinger@chromium.org

Bug: v8:8217
Change-Id: I11716d6381f765bdfe4cf48502b5cdc1f42cf8ab
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1611682
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61526}
2019-05-15 12:08:25 +00:00
Yang Guo
c6fdaedbe6 Add OWNERS for src/torque
Bug: v8:9247
Change-Id: I4d2a1f6442b5c187a462f855e4655d9429021d22
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1612908
Reviewed-by: Daniel Clifford <danno@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Commit-Queue: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61525}
2019-05-15 12:07:20 +00:00
Yang Guo
e064e72188 Add OWNERS for docs/
R=hablich@chromium.org, mathias@chromium.org

Bug: v8:9247
Change-Id: I3db662986dd36d4b29c6bd485b911ebf377e7533
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1613237
Reviewed-by: Michael Hablich <hablich@chromium.org>
Commit-Queue: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61524}
2019-05-15 12:06:15 +00:00
Clemens Hammacher
6dcef1d327 [wasm] Refactor splitting ranges by reservations
On windows, when changing permissions for a range of pages, or
committing or discarding a range of pages, we need to split that range
by the reservations and potentially execute several system calls. This
logic is currently implemented for committing memory.
This CL extracts this to a helper function such that we can reuse this
for discarding a range of pages.

R=mstarzinger@chromium.org

Bug: v8:8217
Change-Id: I65673eebe28362975f0165905d20b97ef7947f56
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1611544
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61523}
2019-05-15 11:56:11 +00:00
Tobias Tebbi
a19c3ffb8f Reland: [csa] verify skipped write-barriers in MemoryOptimizer
With very few exceptions, this verifies all skipped write-barriers in
CSA and Torque, showing that the MemoryOptimizer together with some
type information on the stored value are enough to avoid unsafe skipped
write-barriers.

Changes to CSA:
SKIP_WRITE_BARRIER and Store*NoWriteBarrier are verified by the
MemoryOptimizer by default.
Type information about the stored values (TNode<Smi>) is exploited to
safely skip write barriers for stored Smi values.
In some cases, the code is re-structured to make it easier to consume
for the MemoryOptimizer (manual branch and load elimination).

Changes to the MemoryOptimizer:
Improve the MemoryOptimizer to remove write barriers:
- When the store happens to a CSA-generated InnerAllocate, by ignoring
  Bitcasts and additions.
- When the stored value is the HeapConstant of an immortal immovable root.
- When the stored value is a SmiConstant (recognized by BitcastToTaggedSigned).
- Fast C-calls are treated as non-allocating.
- Runtime calls can be white-listed as non-allocating.

Remaining missing cases:
- C++-style iterator loops with inner pointers.
- Inner allocates that are reloaded from a field where they were just stored
  (for example an elements backing store). Load elimination would fix that.
- Safe stored value types that cannot be expressed in CSA (e.g., Smi|Hole).
  We could handle that in Torque.
- Double-aligned allocations, which are not lowered in the MemoryOptimizer
  but in CSA.

Drive-by change: Avoid Smi suffix for StoreFixedArrayElement since this
can be handled by overload resolution (in Torque and C++).

Reland Change: Support pointer compression operands.

R=jarin@chromium.org
TBR=mvstanton@chromium.org

Bug: v8:7793
Change-Id: I84e1831eb6bf9be14f36db3f8b485ee4fab6b22e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1612904
Auto-Submit: Tobias Tebbi <tebbi@chromium.org>
Reviewed-by: Michael Stanton <mvstanton@chromium.org>
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61522}
2019-05-15 11:46:30 +00:00
Benedikt Meurer
444f83d937 [turbofan] Fix missing break in EscapeAnalysis.
In the case of LoadElement in EscapeAnalysis we accidentally always set
the object as escaping, even in the case where the index was a constant
(or had a constant type).

This forced us to always allocate array backing stores even in the
trivial cases like swapping, i.e.

```js
function foo(a, b) {
  [a, b] = [b, a];
  return a - b;
}
```

Now with this change we do proper scalar replacement again, even for the
array backing stores.

Bug: v8:9183
Change-Id: I3b2dcade23e47df032087778aca1292c8b0d69d4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1612907
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61521}
2019-05-15 11:28:54 +00:00
Simon Zünd
9991b408d8 [cleanup] Split stack trace related API cctests into new file
Mechanical change with the exception of one threaded test, that had
to be turned into a normal test to turn green.

R=jgruber@chromium.org

Bug: v8:9183
Change-Id: Ie7c3350415e21f93e8161a3c844cbe165ecd7da5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1612899
Commit-Queue: Simon Zünd <szuend@chromium.org>
Auto-Submit: Simon Zünd <szuend@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61520}
2019-05-15 11:27:04 +00:00
Santiago Aboy Solanes
0ff813c57b [cleanup] MachineType 'rep' variables renamed to 'type'
Bug: v8:9183
Change-Id: Idb1910ae30984f548996651e8b2f153531b8cdb0
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1605729
Reviewed-by: Michael Stanton <mvstanton@chromium.org>
Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61519}
2019-05-15 11:21:53 +00:00
Yang Guo
078cf26ac1 Clean up infra owners
R=tmrts@chromium.org

Bug: v8:9247
Change-Id: I9b34ee96e03d3cbca165452fc8427679cf6e7582
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1612900
Commit-Queue: Yang Guo <yangguo@chromium.org>
Reviewed-by: Tamer Tas <tmrts@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61518}
2019-05-15 11:18:43 +00:00
Yang Guo
37c8976632 Add OWNERS to src/protobuf
R=petermarshall@chromium.org

Bug: v8:9247
Change-Id: Ia78904788bf7523b1ec5aa0494c79d71ee121030
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1609847
Reviewed-by: Peter Marshall <petermarshall@chromium.org>
Commit-Queue: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61517}
2019-05-15 11:17:23 +00:00
Yang Guo
3a16befad9 Move snapshot_toolchain.gni to gni/
R=jgruber@chromium.org
BUG: v8:9253

Change-Id: Ifde76a8f2beb581ac4040deeaae3504e599ab4f9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1612903
Commit-Queue: Yang Guo <yangguo@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61516}
2019-05-15 11:07:24 +00:00
Ulan Degenbaev
d80100b9f7 [heap] Cap the initial old generation size
Currently the initial old generation size is set to the half of the
maximum old generation size. This is problematic for huge heaps.
This patch introduces an upper bound of 512MB (256MB) for x64 (x32).

Bug: chromium:961272
Change-Id: If4a6b839ebe688e5b0bc41749ac34f7a31849e21
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1605731
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Hannes Payer <hpayer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61515}
2019-05-15 10:59:23 +00:00
Maciej Goszczycki
58fea9c1e2 [heap] Enable read-only heap sharing for lite-mode
Bug: v8:7464
Change-Id: I50de5f19f3303625a492faad5da378e2f0d3ed3f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1602699
Reviewed-by: Dan Elphick <delphick@chromium.org>
Commit-Queue: Maciej Goszczycki <goszczycki@google.com>
Cr-Commit-Position: refs/heads/master@{#61514}
2019-05-15 10:05:58 +00:00
Mythri A
61b56e19f8 [lite] Don't set bailout reason to NeverOptimize in lite mode
We used to set disable optimization bits in SFI to NeverOptimize in lite
mode to avoid optimizing in tests. Now, tests that need optimization use
intrinsics to force feedback vector allocation. Hence this is no longer
necessary.

Bug: v8:8394
Change-Id: I0aeaeacc34d838cf15698a9227b6964292b97240
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1611545
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Mythri Alle <mythria@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61513}
2019-05-15 09:43:13 +00:00
Igor Sheludko
a6dcbc545b [heap][ptr-compr] Use Heap::CopyRange() instead of tight copy loops
Also remove unused Factory::CopyFeedbackVector().

Bug: v8:7703
Change-Id: I75e16a55967e5970e4cbe3babae3a09d2a647313
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1611542
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61512}
2019-05-15 09:26:25 +00:00
Jakob Kummerow
94f9c4afec [wasm-c-api] Faster types handling when calling into Wasm
We don't need the full "types" array, just the number of parameters
and the type of the result. Avoiding unnecessary malloc/free calls
significantly cuts down on overhead.

Change-Id: I738f0ee4c269731cf1ff79a56f910e8f7e97c83e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1601505
Commit-Queue: Yang Guo <yangguo@chromium.org>
Auto-Submit: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61511}
2019-05-15 09:24:35 +00:00
Michael Starzinger
946929f406 [wasm] Make interpreter clear reference stack slots.
This makes sure the interpreter clears any stale references from the
reference stack when they are popped/dropped. Otherwise stale values
would unnecessarily increase lifetime of operand stack slots.

R=ahaas@chromium.org
BUG=v8:7581

Change-Id: I6b8be56a815327229a66ea0c97b3646ac64f6461
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1612905
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61510}
2019-05-15 09:19:14 +00:00
Mythri A
97204f8e10 [lite] Don't skip tests that need feedback vector in lite mode
Tests that expect type feedback vector ensure it by using
%EnsureFeedbackVector intrinsic. These tests now work with lazy feedback
allocation as well. Hence it is no longer required to initialize the
shared function info with a special bailout id.

Bug: v8:8394
Change-Id: Iba2f94be7e5651b4faeb8b3bf604d17fb4b146ef
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1609542
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Commit-Queue: Mythri Alle <mythria@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61509}
2019-05-15 09:10:00 +00:00
Benedikt Meurer
c7ca8dacd2 [turbofan] Use CheckHeapObject only for StoreField.
Previously we had to use CheckHeapObject in front of every CheckMaps,
CompareMaps and TransitionElementsKind operation. Now these operators
request HeapObject representation themselves (requiring for CompareMaps
and TransitionElementsKind to remove the kNoDeopt property). This means
we only do CheckHeapObject for StoreField to a field that has HeapObject
representation.

This not only leads to smaller graphs in the compiler, but also removes
most uses of the CheckHeapObject operator, which doesn't express a real
semantic property in the compiler frontend.

Bug: v8:9183, v8:9250
Refs: nodejs/node#27667
Change-Id: Ie3d83de69583b1bed6c1c53444bfc97aaef624bb
Cq-Include-Trybots: luci.chromium.try:linux-rel,win7-rel
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1612902
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61508}
2019-05-15 09:08:55 +00:00
Nico Hartmann
099669ecf3 [js-perf-test] Add additional benchmarks for boolean constructor
Bug: v8:9240
Change-Id: I704e0932b00baf84c4203baa8336809b250855d9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1611681
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@{#61507}
2019-05-15 09:07:15 +00:00