Commit Graph

52535 Commits

Author SHA1 Message Date
Igor Sheludko
21c415735c [ptr-compr] Use EmbedderDataSlot for accessing embedder fields in JSObjects
and make the slot occupy two tagged words when pointer compression is enabled.

Tbr: bmeurer@chromium.org
Bug: v8:7703
Change-Id: Idcd3385cc7d5299d9bdaf6a69c7bd0591099f0bb
Reviewed-on: https://chromium-review.googlesource.com/c/1346489
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57693}
2018-11-21 16:11:03 +00:00
Daniel Clifford
74a0ad7dda [torque] Implement intrinsics support
Also add the first intrinsic and usage of it: %RawCast

Bug: v8:7793
Change-Id: Id1e3288e8bab6adb510731076a39590e8fd156be
Reviewed-on: https://chromium-review.googlesource.com/c/1344152
Commit-Queue: Daniel Clifford <danno@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57692}
2018-11-21 16:04:03 +00:00
Tobias Tebbi
d8c471ffa1 [torque] change formatter to emit LF newlines on Windows
Otherwise, it will always replace LF with CRLF, which is not what you
want if you follow the Chromium instructions for Windows, that is,
configure git with core.autocrlf = false.

Change-Id: I30fcfc471cde79d5c80d05ce582a8507cf5810b5
Reviewed-on: https://chromium-review.googlesource.com/c/1345150
Reviewed-by: Daniel Clifford <danno@chromium.org>
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57691}
2018-11-21 15:42:03 +00:00
Sergiy Byelozyorov
7d9f525bab [tools] Whitespace CL
TBR=sergiyb@chromium.org

Bug: chromium:903688
Change-Id: I72b57d45286ae28c44bad0edffeb56e9142767d1
Reviewed-on: https://chromium-review.googlesource.com/c/1346494
Reviewed-by: Sergiy Byelozyorov <sergiyb@chromium.org>
Commit-Queue: Sergiy Byelozyorov <sergiyb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57690}
2018-11-21 15:37:31 +00:00
Yang Guo
c1065d5eed Update wasm/futex test's expectation wrt predictability
TBR=aseemgarg@chromium.org

Change-Id: Iabb0a1d5ac065f97baf9b44815f0c5df37b426b5
Reviewed-on: https://chromium-review.googlesource.com/c/1346493
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57689}
2018-11-21 15:36:01 +00:00
Sigurd Schneider
b28637b4fe [turbofan] Apply duct-tape to load elimination
Load elimination is running together with to dead code elimination, the
latter of which might eliminate allocations (in particular FinishRegion
nodes). These are treated as alias nodes by load elimination, and load
elimination does not immediatelly learn that a node has been disconnected.
This causes load elimination to access the inputs of dead code eliminated
nodes while resolving renames, which causes nullptr dereferences.

This CL modifies load elimination to not resolve to a nullptr alias but
simply stop before that.

Change-Id: If4cef061c7c0e25f353727c9e27f790439b0beb5
Bug: chromium:906406
Reviewed-on: https://chromium-review.googlesource.com/c/1346491
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57688}
2018-11-21 15:23:01 +00:00
Stephan Herhut
1a36ac0191 [regalloc] Add debugging helper to print ranges
Adds support to render the live ranges as ascii diagram. This is
similar in nature to what the c1visualizer would produce.

Also, print the visualization when tracing the register allocator.

Change-Id: Ib6a43f67ba356e9a80cacaddfdbd6d589c685483
Reviewed-on: https://chromium-review.googlesource.com/c/1346114
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Commit-Queue: Stephan Herhut <herhut@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57687}
2018-11-21 15:21:17 +00:00
Hannes Payer
49c7b308d9 [serializer] Tenure young large object in the serializer.
Bug: chromium:852420
Change-Id: I54d1708991468bb062d9e7b246e724594f252e5e
Reviewed-on: https://chromium-review.googlesource.com/c/1346369
Commit-Queue: Hannes Payer <hpayer@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57686}
2018-11-21 14:18:26 +00:00
Sergiy Byelozyorov
e7ff6989c3 [tools] Trigger linux32 perf trybot on swarming
TBR=machenbach@chromium.org

No-Try: true
Bug: chromium:616879
Change-Id: I7a567060d4bbfdd5cbd8cc92a828b051ce8ddb8c
Reviewed-on: https://chromium-review.googlesource.com/c/1346332
Commit-Queue: Sergiy Byelozyorov <sergiyb@chromium.org>
Reviewed-by: Sergiy Byelozyorov <sergiyb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57685}
2018-11-21 14:07:44 +00:00
Toon Verwaest
2eab4de35d [parser] Further simplify ParseAssignmentExpression
This moves is_async and parenthesized_formals tracking out of the
ParseAssignmentExpression header. Instead we set flags on the parser for the
next arrow function: next_arrow_function_kind_ that defaults to kArrowFunction
and next_arrow_formals_parenthesized_ which defaults to false.

If we end up recognizing an async arrow head, we update
next_arrow_function_kind_ to kAsyncArrowFunction. If we detect (...) followed
by => or async(...) followed by => we set next_arrow_formals_parenthesized_ to
true. When we start parsing the arrow continuation we consume the values and
reset them to default for the next arrow function.

Change-Id: Ia22c0068fea0f175fafc568b7339813fd10c3b5a
Reviewed-on: https://chromium-review.googlesource.com/c/1345996
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57684}
2018-11-21 13:53:26 +00:00
Toon Verwaest
a04862021e [zone] Use 32kb instead of 1MB as high zone page size
It seems that allocating smaller pages is actually quite a bit faster than
larger pages, probably because they can be cached by malloc. Let's see what the
bots say.

In a follow-up I'll check whether the segment-pool is actually beneficial or
whether we should just remove it.

This also drops SegmentSize::kLarge as a way to make compilation deterministic.
Turns out that by now we need >8mb anyway, and the previous 1mb wasn't enough.
At the same time the compiler was fixed to not rely on virtual addresses of
zone objects anymore, and there's a bot checking whether the snapshot is
determistic.

Change-Id: I38cbb0d209d68b3671fd38763b42714811f4223e
Reviewed-on: https://chromium-review.googlesource.com/c/1346370
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57683}
2018-11-21 13:38:17 +00:00
Toon Verwaest
57e1e72a16 [parser] Simplify CheckAndRewriteReferenceExpression
Use the parser's IsValidReferenceExpression as a likely-succeeding precheck.
Slightly optimizes IsEvalOrArguments in the preparser and IsIdentifier for the
parser (we now have FailureExpression everywhere); and replaces
IsObjectLiteral||IsArrayLiteral by IsValidPattern.

Change-Id: I7e9684485c0ce454e640800566eb4b0a24c6bfc8
Reviewed-on: https://chromium-review.googlesource.com/c/1345995
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57682}
2018-11-21 13:18:58 +00:00
tzik
1d726111ab Implement Faster MicrotaskQueue Step 2
This is an implementation of https://bit.ly/v8-faster-microtask-queues
step 2.

This CL overhauls MicrotaskQueue class, the previous one is on V8 heap,
and the new one is on C++ heap.

Benchmark:
This CL improves a benchmark score around promise by 5~23%.
https://github.com/v8/promise-performance-tests
https://docs.google.com/spreadsheets/d/1HtwZGzUAGJYg87VmYhV9hLdvfddlCtC6Oz0iOj-WwQA/edit#gid=1952666737

Bug: chromium:887920, v8:7253
Change-Id: I1f26e02c45ae60ae39d1ccc168daa98bca4663d9
Reviewed-on: https://chromium-review.googlesource.com/c/1290751
Commit-Queue: Taiju Tsuiki <tzik@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Reviewed-by: Adam Klein <adamk@chromium.org>
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57681}
2018-11-21 13:10:07 +00:00
Sergiy Byelozyorov
8b4ff0d7cc [tools] Update builder name as old builder is deprecated
R=efoo@chromium.org, machenbach@chromium.org

Bug: chromium:868202
Change-Id: I5c0860894c96a8ce14e74cb048f786908db88269
Reviewed-on: https://chromium-review.googlesource.com/c/1344150
Commit-Queue: Sergiy Byelozyorov <sergiyb@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57680}
2018-11-21 13:03:05 +00:00
Igor Sheludko
ea9f847d36 [ptr-compr] Introduce EmbedderDataSlot
an abstraction that hides the details about how embedder data fields are
encoded in EmbedderDataArrays and JSObjects.

Bug: v8:7703
Change-Id: Ic9f6d9511bec557c6671aa6488b9545e353f968c
Reviewed-on: https://chromium-review.googlesource.com/c/1344155
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57679}
2018-11-21 12:30:13 +00:00
Clemens Hammacher
5065c20a7e Revert "[iwyu] Add missing includes"
This reverts commit e8a22a7065.

Reason for revert: Depends on another reverted CL: https://crrev.com/c/1337585

Original change's description:
> [iwyu] Add missing includes
> 
> This fixes a presubmit error:
> https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Presubmit/454
> 
> It also adds another missing include.
> 
> R=​machenbach@chromium.org
> CC=​caitp@igalia.com
> 
> Bug: v8:7490
> Change-Id: I915a5bf431073410a67ff08471fd5e6974e31aa1
> No-Try: true
> No-Tree-Checks: true
> Reviewed-on: https://chromium-review.googlesource.com/c/1346111
> Reviewed-by: Michael Achenbach <machenbach@chromium.org>
> Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#57671}

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

Change-Id: Id01d5ff327bc50f8d21a4092ba881f5d5e982a92
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:7490
Reviewed-on: https://chromium-review.googlesource.com/c/1346117
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57678}
2018-11-21 11:54:26 +00:00
Clemens Hammacher
6abd6f3dd4 Revert "[builtins] Implement Object.fromEntries"
This reverts commit a5336471f2.

Reason for revert: Fails nosnap debug tests: https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux%20-%20nosnap%20-%20debug/21838

Original change's description:
> [builtins] Implement Object.fromEntries
> 
> Adds the Object.fromEntries() method behind
> --harmony-object-from-entries.
> 
> 
> Includes an initial implementation of the new experimental builtin
> Object.fromEntries implemented by Daniel Clifford, and
> has been modified by Caitlin Potter to support a fast case to skip
> the iterator protocol when it can be done unobservably in common cases.
> 
> There are some incidental changes: A number of CSA macros have been
> updated to use TNodes, and some Context arguments have been
> re-arranged to be implicit in Torque.
> 
> 
> There are also a number of mjsunit tests written mirroring and
> expanding on the test262 tests.
> 
> BUG=v8:8021
> 
> Change-Id: I1c12bee8a2f98c6297b77d5d723910a5e3b630cc
> Co-authored-by: Daniel Clifford <danno@chromium.org>
> Co-authored-by: Caitlin Potter <caitp@igalia.com>
> Reviewed-on: https://chromium-review.googlesource.com/c/1337585
> Commit-Queue: Daniel Clifford <danno@chromium.org>
> Reviewed-by: Daniel Clifford <danno@chromium.org>
> Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#57667}

TBR=danno@chromium.org,caitp@igalia.com,tebbi@chromium.org

Change-Id: Id0cd8b16131f151a42dffbaca7e59ab17c68ab23
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:8021
Reviewed-on: https://chromium-review.googlesource.com/c/1346116
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57677}
2018-11-21 11:51:44 +00:00
Georg Neis
aded5516ae [turbofan] Be more verbose when failing monotonicity check.
R=jarin@chromium.org

Bug: chromium:906567
Change-Id: I280569e09529457814ebc1cb8f299a80aa40a6c4
Reviewed-on: https://chromium-review.googlesource.com/c/1345992
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57676}
2018-11-21 11:35:42 +00:00
Camillo Bruni
9a2298a997 [tools] Improve and clean up map procesor
- Show spinner while parsing input
- Show color boxes next transition types
- Support drag-n-drop of v8.log files

No-Try: true
Change-Id: I360d62960e9ec05fbab388ee2ca55baf4e2c6b78
Reviewed-on: https://chromium-review.googlesource.com/c/1345151
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57675}
2018-11-21 11:21:59 +00:00
Camillo Bruni
3272a85ef5 [tools] Fix V8 heap-stats loading spinner
No-Try: true
Change-Id: I078279bef7141c0255025efebfd3a39a57fc3bf7
Reviewed-on: https://chromium-review.googlesource.com/c/1345149
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57674}
2018-11-21 11:20:19 +00:00
Ulan Degenbaev
841c40b76a [heap] Clean up TypedSlotSet.
This extracts the parts of the TypedSlotSet that are used only
sequentially into a separate class called TypedSlots.

The new class will be used in the concurrent marker to keep track of
typed slots locally and then to merge them to the main remembered set
during finalization of marking.

The patch also cleans up atomics in the Iterate and ClearInvalidSlots
methods that can run concurrently to each other.

Bug:v8:8459

Change-Id: Id7a63041f7b99218381e5e9e1999210cab9c4369
Reviewed-on: https://chromium-review.googlesource.com/c/1340247
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Hannes Payer <hpayer@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57673}
2018-11-21 11:14:47 +00:00
Yang Guo
359fdff085 [d8] do not serialize again when consuming code cache
R=leszeks@chromium.org

Change-Id: Iebf284d3ac041eecb8cfb832c7331febb1ccf089
Reviewed-on: https://chromium-review.googlesource.com/c/1346069
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57672}
2018-11-21 11:02:04 +00:00
Clemens Hammacher
e8a22a7065 [iwyu] Add missing includes
This fixes a presubmit error:
https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Presubmit/454

It also adds another missing include.

R=machenbach@chromium.org
CC=caitp@igalia.com

Bug: v8:7490
Change-Id: I915a5bf431073410a67ff08471fd5e6974e31aa1
No-Try: true
No-Tree-Checks: true
Reviewed-on: https://chromium-review.googlesource.com/c/1346111
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57671}
2018-11-21 10:57:24 +00:00
Sigurd Schneider
61951b16e6 [turbolizer] Use fewer event handlers
Instead of attaching an event handler to every line in the code view,
attach it only to the container and find the lineNumber based on the event
target element.

Notry: true
Change-Id: I1920f7a200cf2f5ffaf259c0aaa04d6fb6698d2d
Bug: v8:7327
Reviewed-on: https://chromium-review.googlesource.com/c/1346110
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57670}
2018-11-21 10:51:14 +00:00
Igor Sheludko
9bcb5eb590 [ptr-compr][cleanup] Refactor XxxSlot implementations
and prepare for adding an EmbedderDataSlot which will occupy two tagged slots.

Bug: v8:8477, v8:8238, v8:7703
Change-Id: I8aa0a0c9b64835ad7f847033bcc55dd3b3c43563
Reviewed-on: https://chromium-review.googlesource.com/c/1344153
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57669}
2018-11-21 10:44:57 +00:00
Clemens Hammacher
ed4b4cd482 Use static RegisterName function instead of RegisterConfiguration
Register names are static, so we do not need to access them via
RegisterConfiguration. This saves a lot of RegisterConfiguration
object creations.

R=mstarzinger@chromium.org

Bug: v8:8238
Change-Id: I295ad4d4b13fe948c70490687b7e3e9b48e70af9
Reviewed-on: https://chromium-review.googlesource.com/c/1342517
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57668}
2018-11-21 10:24:13 +00:00
Caitlin Potter
a5336471f2 [builtins] Implement Object.fromEntries
Adds the Object.fromEntries() method behind
--harmony-object-from-entries.


Includes an initial implementation of the new experimental builtin
Object.fromEntries implemented by Daniel Clifford, and
has been modified by Caitlin Potter to support a fast case to skip
the iterator protocol when it can be done unobservably in common cases.

There are some incidental changes: A number of CSA macros have been
updated to use TNodes, and some Context arguments have been
re-arranged to be implicit in Torque.


There are also a number of mjsunit tests written mirroring and
expanding on the test262 tests.

BUG=v8:8021

Change-Id: I1c12bee8a2f98c6297b77d5d723910a5e3b630cc
Co-authored-by: Daniel Clifford <danno@chromium.org>
Co-authored-by: Caitlin Potter <caitp@igalia.com>
Reviewed-on: https://chromium-review.googlesource.com/c/1337585
Commit-Queue: Daniel Clifford <danno@chromium.org>
Reviewed-by: Daniel Clifford <danno@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57667}
2018-11-21 10:05:42 +00:00
Jakob Gruber
b84766b388 [ia32,root] Remove root register verification
Verification has served its purpose now that kRootRegister is fully
supported on ia32.

Bug: v8:6666
Change-Id: I037617bf900f161c221228107c9f1352d4815d87
Reviewed-on: https://chromium-review.googlesource.com/c/1296130
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57666}
2018-11-21 09:54:55 +00:00
Toon Verwaest
8da2afaa77 Revert "[parser] Use memcmp for keyword checks"
This reverts commit 5616f91a7a.

Reason for revert: Tanks performance on codeload/ia32 by >1%

Original change's description:
> [parser] Use memcmp for keyword checks
> 
> Small readability increase for the keyword check magic, using memcmp
> instead of a chain of raw comparisons. Could allow better codegen for
> memcmp-aware compilers, though in practice seems to have little effect
> on generated code.
> 
> Change-Id: I91020fe67cebc9270c61c4c678e15217e436afff
> Reviewed-on: https://chromium-review.googlesource.com/c/1340291
> Reviewed-by: Toon Verwaest <verwaest@chromium.org>
> Commit-Queue: Leszek Swirski <leszeks@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#57595}

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

# Not skipping CQ checks because original CL landed > 1 day ago.

Change-Id: Ifd4070efb3e692eb70e5d8b3adb04d7d7e45ef0e
Reviewed-on: https://chromium-review.googlesource.com/c/1345994
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57665}
2018-11-21 09:38:45 +00:00
Benedikt Meurer
b5a443c267 Reland "[turbofan] Improve NumberMultiply typing rule."
This is a reland of 585b4eef6a without
any changes.

Original change's description:
> [turbofan] Improve NumberMultiply typing rule.
>
> The NumberMultiply typing rule gave up in the presence of NaN inputs,
> but we can still infer useful ranges here and just union the result
> of that with the NaN propagation (similar for MinusZero propagation).
> This way we can still makes sense of these ranges at the uses.
>
> Bug: v8:8015
> Change-Id: Ic4c5e8edc6c68776ff3baca9628ad7de0f8e2a92
> Reviewed-on: https://chromium-review.googlesource.com/c/1261143
> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
> Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#56539}

Tbr: bmeurer@chromium.org
Bug: v8:8015
Change-Id: I32e5c2f439a1186891ca3393ee53a2a766585839
Reviewed-on: https://chromium-review.googlesource.com/c/1345993
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57664}
2018-11-21 09:32:15 +00:00
Michael Achenbach
28af9d7e90 Update V8 DEPS.
Rolling v8/build: 1f137f3..a2bfd53

Rolling v8/buildtools: 13a00f1..da9b294

Rolling v8/test/wasm-js/data: 5aaea96..e822213

Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/1e54003..d115075

Rolling v8/third_party/depot_tools: 7da982a..e47ac15

Rolling v8/tools/swarming_client: 7f463e6..b6e9e23

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

Change-Id: Icf622c3e49371ba965f08e15d0177697f04c55e5
Reviewed-on: https://chromium-review.googlesource.com/c/1344806
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Reviewed-by: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#57663}
2018-11-21 09:16:25 +00:00
Yuki Shiino
f379bb117f Make Isolate::GetIncumbentContext() work fine with ASAN
When ASAN is enabled, the previous implementation of
Isolate::GetIncumbentContext didn't work well due to mixture of fake
and real stack frames.

This patch converts an address in the fake stack frame to an address
in the real stack frame so that we can compare two addresses.

Bug: chromium:888867, chromium:866610
Change-Id: Iccf570b8555f2fbdc737b12894a2784ffdb31602
Reviewed-on: https://chromium-review.googlesource.com/c/1343709
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Commit-Queue: Yuki Shiino <yukishiino@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57662}
2018-11-21 05:40:08 +00:00
Igor Sheludko
8708d46cc3 Revert "[cleanup] Move methods to V8_DEPRECATED"
This reverts commit a6e3cdd9b5.

Reason for revert: https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Android%20GN%20%28dbg%29/14259

Original change's description:
> [cleanup] Move methods to V8_DEPRECATED
> 
> Updates ObjectTemplate::NewInstance and FunctionTemplate::GetFunction
> from V8_DEPRECATED_SOON to V8_DEPRECATED, now that they're unused in
> chrome.
> 
> Bug: v8:7294, v8:7295, v8:8238
> Change-Id: Ic7cb2c410ff812f73cfd108551f2a1a20722df07
> Reviewed-on: https://chromium-review.googlesource.com/c/1344151
> Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> Commit-Queue: Dan Elphick <delphick@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#57657}

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

Change-Id: I98a49bd0467f068b0122314ce2d0564dd174c2c5
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:7294, v8:7295, v8:8238
Reviewed-on: https://chromium-review.googlesource.com/c/1344120
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57661}
2018-11-20 18:07:37 +00:00
Clemens Hammacher
eeb99d31ab [wasm][fuzzer] Remove unused return value
R=ahaas@chromium.org

Bug: v8:8238
Change-Id: I7a7de894aa7bf074cbe732f40e16b10060fa37dd
Reviewed-on: https://chromium-review.googlesource.com/c/1344149
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57660}
2018-11-20 17:15:35 +00:00
Igor Sheludko
81a654e7a0 [api][cleanup] Replace kApiPointerSize with kApiTaggedSize or kApiSystemPointerSize
This CL also disables fast access to the embedder fields when pointer compression is enabled.

Bug: v8:8477, v8:8238
Change-Id: I368bd87184590f8befdc882817497f75f0024569
Reviewed-on: https://chromium-review.googlesource.com/c/1344117
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57659}
2018-11-20 17:13:36 +00:00
Clemens Hammacher
41b34f2a55 [wasm][fuzzer] Fix detection of traps
Instead of returning 0xDEADBEEF, return a struct with proper
information. Otherwise a function returning 0xDEADBEEF would be
misidentified as trapping in the interpreter.

R=ahaas@chromium.org

Bug: chromium:906997
Change-Id: I92fc3a9972d76d2f8a5b313bf6be6eb027cfc1e9
Reviewed-on: https://chromium-review.googlesource.com/c/1344111
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57658}
2018-11-20 17:05:51 +00:00
Dan Elphick
a6e3cdd9b5 [cleanup] Move methods to V8_DEPRECATED
Updates ObjectTemplate::NewInstance and FunctionTemplate::GetFunction
from V8_DEPRECATED_SOON to V8_DEPRECATED, now that they're unused in
chrome.

Bug: v8:7294, v8:7295, v8:8238
Change-Id: Ic7cb2c410ff812f73cfd108551f2a1a20722df07
Reviewed-on: https://chromium-review.googlesource.com/c/1344151
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Dan Elphick <delphick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57657}
2018-11-20 17:04:47 +00:00
Tobias Tebbi
41ad531f4f [turbofan] in-block scheduling: schedule non-effect-chain nodes late
By giving higher priority to processing non-effect-chain nodes, this
changes the scheduling inside of basic blocks to place nodes before the
latest possible effect chain node.

Change-Id: I8b130904a1bb2360b995eb9de4f471a911a4e388
Reviewed-on: https://chromium-review.googlesource.com/c/1337743
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57656}
2018-11-20 16:38:08 +00:00
Daniel Clifford
280776f85c Incremental Torque type cleanup
Includes creating Oddball-specific types.

Change-Id: Ib5d80dfe95838b2deb0a2fcae67c349940970252
Reviewed-on: https://chromium-review.googlesource.com/c/1342930
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Commit-Queue: Daniel Clifford <danno@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57655}
2018-11-20 16:26:27 +00:00
Toon Verwaest
4547a5b177 [d8] Load js source files by memory mapping them
Change-Id: I13dbdbedf3d7bdc3488e9a6c3d4a1b0becfedd74
Reviewed-on: https://chromium-review.googlesource.com/c/1344116
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Hannes Payer <hpayer@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57654}
2018-11-20 16:20:37 +00:00
Michael Starzinger
2e1b4e95af [assembler] Remove redundant assembler-arch-inl.h file.
R=clemensh@chromium.org

Change-Id: Ic56f6181a17520f54b9cab5dc3d106db56f1ede9
Reviewed-on: https://chromium-review.googlesource.com/c/1344115
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57653}
2018-11-20 16:12:43 +00:00
Georg Neis
93e63f78a6 [cleanup] Unify comments on context extension slot.
R=bmeurer@chromium.org

Change-Id: I215faf30fcd6c0a7c67a4969ec9255dd11b9be08
Reviewed-on: https://chromium-review.googlesource.com/c/1344112
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57652}
2018-11-20 16:03:58 +00:00
Michael Starzinger
fed7bb501e [test] Add cctest for i-cache coherency assumptions.
This test cases ensures that it is possible to maintain a coherent
instruction cache by using {Assembler::FlushICache} in any order with
respect to changing page permissions via {SetPermissions}.

R=ulan@chromium.org
TEST=cctest/test-icache
BUG=v8:6792

Change-Id: I1778bbbe94b40856d9732a9990a931b5a956a439
Reviewed-on: https://chromium-review.googlesource.com/c/1344113
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57651}
2018-11-20 15:59:26 +00:00
Sergiy Byelozyorov
281a320fa2 Revert "[tools] Re-land: Add retries when trying to discover the device"
This reverts commit f401cd4b2c.

Reason for revert: did not help

Original change's description:
> [tools] Re-land: Add retries when trying to discover the device
> 
> This is an experimental change that may help mitigate the issue.
> 
> TBR=machenbach@chromium.org
> 
> No-Try: true
> No-Tree-Checks: true
> Bug: chromium:893593
> Change-Id: Idf15a63006c2c7ba2c31482e5103b2a0b1d64510
> Reviewed-on: https://chromium-review.googlesource.com/c/1339401
> Commit-Queue: Sergiy Byelozyorov <sergiyb@chromium.org>
> Reviewed-by: Sergiy Byelozyorov <sergiyb@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#57558}

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

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: chromium:893593
Change-Id: I30c529a627d1e6fa52099939c5c209110e9d0eb9
Reviewed-on: https://chromium-review.googlesource.com/c/1342931
Reviewed-by: Sergiy Byelozyorov <sergiyb@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Sergiy Byelozyorov <sergiyb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57650}
2018-11-20 15:30:58 +00:00
Georg Neis
e64f7c0ae0 Reland "[turbofan] Use feedback when reducing global loads/stores."
This is a reland of 9c91b6877a after
fixing undefined behavior in numeric conversion that caused trouble
on arm32.

Original change's description:
> [turbofan] Use feedback when reducing global loads/stores.
>
> We already record the script context location or the property cell
> as feedback of the global load/store IC, so Turbofan doesn't need
> to do the lookups again.
>
> Change-Id: I6cbd2937de344729cd8e146b4ff85ddf3de6a56e
> Reviewed-on: https://chromium-review.googlesource.com/c/1335691
> Commit-Queue: Georg Neis <neis@chromium.org>
> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#57555}

Change-Id: Ic2d09025de02f92199755ac860bb9e91fa08f4ec
Reviewed-on: https://chromium-review.googlesource.com/c/1340043
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57649}
2018-11-20 15:03:47 +00:00
Mythri
4237fc378c Preparation for feedback-free V8: Use feedback vector only when valid
This cl updates:
1. Adds a new feedback cell map to specify that no feedback is
collected
2. Checks if feedback vectors are valid before using then when
creating closures
3. Runtime profiler to only tier up functions with feedback
4. Interpreter entry trampoline to check for feedback vector before
using it.

Bug: v8:8394
Change-Id: I0248c8cd35d841c2744b22f4c672fa2e82033f6e
Reviewed-on: https://chromium-review.googlesource.com/c/1339866
Commit-Queue: Mythri Alle <mythria@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57648}
2018-11-20 14:43:22 +00:00
Toon Verwaest
0d2dcb0c4a [scanner] Add ScanFlag for keyword-start
Change-Id: I08af90a6bd863402309c1c65c829db6a955c67e3
Reviewed-on: https://chromium-review.googlesource.com/c/1342927
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57647}
2018-11-20 13:50:16 +00:00
Clemens Hammacher
de2681c1a8 Print readable register names
This adds a {PrintRegister} method which prints the given register in a
readable way (e.g. "eax", ... on ia32).
This is currently only used in Liftoff. The {RegisterConfiguration}
class has the same functionality, and I plan to make
{RegisterConfiguration} also use the new {RegisterName} functions in a
follow-up CL.

R=mstarzinger@chromium.org

Bug: v8:8238, v8:8423, v8:6600
Change-Id: If03901f1d8c5b043e0097e63920ab711bd7e2d17
Reviewed-on: https://chromium-review.googlesource.com/c/1340041
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57646}
2018-11-20 13:44:17 +00:00
Tobias Tebbi
00ffe4a613 [torque] enable multiple inheritance from Torque-generated assemblers
This enables more seamless interop between Torque and CSA:

Since CodeStubAssembler can now inherit from the Torque base namespace,
macros defined in the base namespace can be used in CodeStubAssembler
macros, even without qualification.
At the same time, macros in the base namespace can refer to
CodeStubAssembler macros. The only new limitation is that types defined
in code-stub-assembler.h cannot be referenced in the signature of macros
defined in the base namespace, since this would produce a cyclic header
dependency. A work-around for this woud be to put such types (like int31
in this CL) into a separate header included by both. I (mis-)used
code-assembler.h for that.
Another side-effec is that types and enums defined in CodeStubAssembler
have to be accessed in a qualified way from Torque.

Other assemblers can now inherit from their Torque equivalent, so
porting macros into the corresponding Torque namespace doesn't require
any change to the existing use-sites.

To avoid C++ ambiguities, the Torque-generated assemblers must not define
anything also defined in Code(Stub)Assembler. This includes the type
aliases for TNode, PLabel, ...
My workaround is to qualify everything in the generated C++.

As a drive-by fix, I had to change the formatter to avoid a situation
where it doesn't compute a fixed point: putting a keyword at the
beginning of a line removes the '\s' in front of it, so I replaced that
with '\b'.

Bug: v8:7793
Change-Id: If3b9e9ad967a181b380a10d5673615606abd1041
Reviewed-on: https://chromium-review.googlesource.com/c/1341955
Reviewed-by: Daniel Clifford <danno@chromium.org>
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57645}
2018-11-20 13:33:36 +00:00
Michael Lippautz
105f7d92b0 Reland "heap: Move embedder epilogue after first round of weak callbacks"
This is a reland of b146824207.

Bug: chromium:843903, chromium:903586
Change-Id: Ida59ba4efd3abae6956b99aa104bbc66a3f01fdc
Reviewed-on: https://chromium-review.googlesource.com/c/1342924
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57644}
2018-11-20 13:23:32 +00:00