Commit Graph

44908 Commits

Author SHA1 Message Date
Benedikt Meurer
e999f6713e [builtins] Simplify dealing with the promise marker symbols.
This is a simple refactoring to make the code dealing with the marker
symbols for the default resolve/reject handlers more readable.

Bug: v8:7253
Change-Id: Ife279e77007d52ad11fed3726009d60d7c352c33
Reviewed-on: https://chromium-review.googlesource.com/850696
Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50366}
2018-01-04 20:29:05 +00:00
Michal Majewski
9a3773e665 [test] Fix predictable mode with output processors
Bug: v8:6917
Change-Id: I7bc5d09ff19a9cf7cb4bee68ca6cf34f5cfa8b19
Reviewed-on: https://chromium-review.googlesource.com/850874
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50365}
2018-01-04 19:16:45 +00:00
Sathya Gunasekaran
fba4cdf16c Refactor bailout reasons
This patch breaks out bailout reasons into two enum classes.

This helps save 3 bits on the SharedFunctionInfo as we don't have to
track the abort reasons.

Change-Id: Ic2e7e7e32b0fa31491f1c6f0003a61390d68fd97
Reviewed-on: https://chromium-review.googlesource.com/848244
Reviewed-by: Ben Titzer <titzer@chromium.org>
Reviewed-by: Adam Klein <adamk@chromium.org>
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50364}
2018-01-04 19:08:45 +00:00
Mike Stanton
a10689dba9 [Builtins] Eliminate the fast path in constructor entries
The initial fast array may change, invalidating assumptions.

Bug: chromium:798026
Change-Id: Iddcc40867221a2a58aef33b64e7399e0f2784e89
Reviewed-on: https://chromium-review.googlesource.com/850356
Commit-Queue: Michael Stanton <mvstanton@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50363}
2018-01-04 15:29:00 +00:00
Franziska Hinkelmann
971875ca4d Revert "[api] Prefer Descriptor interceptor over Getter in GetPropertyAttributes"
This reverts commit d5fbf7c5c3.

Reason for revert: Performance regression, see https://bugs.chromium.org/p/chromium/issues/detail?id=798279

Original change's description:
> [api] Prefer Descriptor interceptor over Getter in GetPropertyAttributes
> 
> Also fix GetPropertyDescriptorWithInterceptor so that it only calls the
> interceptor once.
> 
> R=​ahaas@chromium.org, franzih@chromium.org
> 
> Bug: node:17480, node:17481
> Change-Id: I2c3813f80df2962ec909bae7267884ce0b8ccbef
> Reviewed-on: https://chromium-review.googlesource.com/816515
> Commit-Queue: Franziska Hinkelmann <franzih@chromium.org>
> Reviewed-by: Franziska Hinkelmann <franzih@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#50260}

TBR=timothygu99@gmail.com,ahaas@chromium.org,franzih@chromium.org,sergiyb@chromium.org

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

Bug: node:17480, node:17481
Change-Id: I4997e0f3a330d719026e56dd83c1bb999b986bcf
Reviewed-on: https://chromium-review.googlesource.com/850355
Reviewed-by: Franziska Hinkelmann <franzih@chromium.org>
Commit-Queue: Franziska Hinkelmann <franzih@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50362}
2018-01-04 15:12:20 +00:00
Michal Majewski
9f7d440e98 [test] Check output on the worker process.
I added additional exception logging in the execution.py since
errors in processing results were really difficult to debug.

There is a problem on Windows with class serialization when
it comes from dynamically loaded module. To fix it I moved all
output processors to the tools/testrunner/outproc/ and import
them in test/*/testcfg.py.

Bug: v8:6917
Change-Id: Ida604641d659b006e91faf1d56a37769ec47f5f3
Reviewed-on: https://chromium-review.googlesource.com/842784
Commit-Queue: Michał Majewski <majeski@google.com>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50361}
2018-01-04 14:12:31 +00:00
Tobias Tebbi
6328c56570 Reland "[turbofan] add value input to DeadValue"
DeadValue was a constant node of type None. This is unsound in the
presence of re-scheduling. This CL adds a value input to DeadValue,
which preserves the dependency on the original node of type None.

This reland addresses the bug that the EffectControlLinearizer could destroy dependencies of DeadValue by attaching DeadValue nodes to the effect chain in the EffectControlLinearizer.

Bug: chromium:796041 chromium:798938
Change-Id: If47b54a7986d257eb63b437f855769b503679ff5
Reviewed-on: https://chromium-review.googlesource.com/850392
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50360}
2018-01-04 13:15:06 +00:00
Benedikt Meurer
6b050c0324 [builtins] Use appropriate ConvertReceiverMode in Promise builtins.
The Promise builtins call out to arbitrary JavaScript a lot, but always
use the generic Call builtin with the "any" mode, which means that the
builtin has to dispatch based on the type of receiver. Yet these
builtins always know for sure that the receiver is either undefined or
definitely not null or undefined. So this changes the builtins to pass
the correct ConvertReceiverMode and thus save a couple of checks.

Bug: v8:7253
Change-Id: I4efbc1e379169cbeefc40e5455713cd7fbe947ed
Reviewed-on: https://chromium-review.googlesource.com/850000
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50359}
2018-01-04 12:31:46 +00:00
Mike Stanton
5063719747 [TurboFan] Handle double holey arrays in several array builtins.
Array.prototype.{forEach, filter, map, every} get this support
with the help of a new opcode NumberIsFloat64Hole.

Bug: v8:1956
Change-Id: Ic6a785590cec66bae4c1462c19d6843c0aa5473b
Reviewed-on: https://chromium-review.googlesource.com/847435
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Reviewed-by: Daniel Clifford <danno@chromium.org>
Commit-Queue: Michael Stanton <mvstanton@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50358}
2018-01-04 12:10:46 +00:00
Mike Stanton
c38cb367e7 [Turbofan] Inline Array.prototype.some
Bug: v8:1956
Change-Id: Ie941811110b3c106e252a2621544864673074da5
Reviewed-on: https://chromium-review.googlesource.com/846759
Reviewed-by: Daniel Clifford <danno@chromium.org>
Commit-Queue: Michael Stanton <mvstanton@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50357}
2018-01-04 11:39:41 +00:00
Tobias Tebbi
9e2d001e86 Revert "[turbofan] add value input to DeadValue" and "[turbofan] add regression test for chromium:796041"
This reverts
https://chromium-review.googlesource.com/c/v8/v8/+/848995
and
https://chromium-review.googlesource.com/c/v8/v8/+/847011

Bug: chromium:798938
Change-Id: I4be8e5bca77037a278fd9882f0d76de1ae12c23f
TBR: jarin@chromium.org
Reviewed-on: https://chromium-review.googlesource.com/849995
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50356}
2018-01-04 11:25:41 +00:00
Clemens Hammacher
4b107b9ec9 [wasm][fuzzer] Add locals
This adds support for get_local and set_local to the wasm compile
fuzzer. Each function will have between 0 and 32 locals of random type.
For set_local, we generate a value of the respective type and store it
in the local. For get_local, we load any local and convert it to the
wanted type.
Note that with get_local, we now also check that parameters are passed
correctly between functions.

Drive-by: Fix parameters passed to the main function (was [1,2,3] for
the interpreter, but [1,1,1] for compiled code).

R=ahaas@chromium.org, eholk@chromium.org

Change-Id: I38e85fe25b1fb4ac298fa81ec8e33711294e78bb
Reviewed-on: https://chromium-review.googlesource.com/847535
Reviewed-by: Eric Holk <eholk@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50355}
2018-01-04 10:42:42 +00:00
Sigurd Schneider
0f9759277e [turbofan] Remove prototype stability checks from Array builtin inlining.
These checks seem to be redundant, since the relevant information of
both Array.prototype and Object.prototype is already guarded by the
NoElements protector, which guarantees no indexed data and accessor
properties.

Bug: v8:7127, v8:7205
Change-Id: I0785c31670c04a3db29eefdc2f75cc63971fed3b
Reviewed-on: https://chromium-review.googlesource.com/848780
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50354}
2018-01-04 10:01:00 +00:00
Sigurd Schneider
139b06fe54 [turbofan] Remove stability check in Array builtin inlining
This removes a stability check from CanInlineArrayResizeOperation. This
is safe, since all prototype maps are either stable or in dictionary
mode, where the latter is ruled out separately.

Bug: v8:7127, v8:7205
Change-Id: I3a07805cb89f41adf031c6c2a6dd5b2defcb87a8
Reviewed-on: https://chromium-review.googlesource.com/848778
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50353}
2018-01-04 09:58:00 +00:00
Sigurd Schneider
c39c1f077e [turbofan] Hoist no elements check in JSCallReducer
Bug: v8:7127, v8:7205
Change-Id: I9c4af8b604845861f4e29b872cc516fdeb89b519
Reviewed-on: https://chromium-review.googlesource.com/848999
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50352}
2018-01-04 09:53:10 +00:00
Mostyn Bramley-Moore
65b7ef7917 [jumbo] move duplicated GetMapWitness function to NodeProperties
Bug: v8:7127, v8:7204, v8:7205
Change-Id: Iedea388590991e4d0edcf59e02c767b6c04460e7
Reviewed-on: https://chromium-review.googlesource.com/849216
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Commit-Queue: Mostyn Bramley-Moore <mostynb@vewd.com>
Cr-Commit-Position: refs/heads/master@{#50351}
2018-01-04 08:23:39 +00:00
Michael Achenbach
c1e9bc02f8 Revert "Revert "[test] Move has unexpected output to outproc.""
This reverts commit 1685b5d27a.

Reason for revert: Was probably caused by infra change:
https://crrev.com/c/845781

Original change's description:
> Revert "[test] Move has unexpected output to outproc."
> 
> This reverts commit 71605b3ea4.
> 
> Reason for revert: Seems to break static-initializers step:
> https://build.chromium.org/p/client.v8/builders/V8%20Linux64/builds/22156
> 
> Original change's description:
> > [test] Move has unexpected output to outproc.
> > 
> > Expected outcomes optimized to serialize [PASS] as None.
> > 
> > Keeping expected outcomes inside output processors should be
> > optimized in the future. Few possible optimizations:
> > - separate classes for tests that are expected to PASS - done as
> > an example in mozilla test suite.
> > - cache output processors inside testcase.
> > - share output processors between copies of the same test - needs
> > some updates to the create_variant to update outproc only if
> > expected outcomes changed.
> > 
> > Bug: v8:6917
> > Change-Id: Ie73f1dcdf17fdfc65bce27228f818b1dd1e420c9
> > Reviewed-on: https://chromium-review.googlesource.com/843025
> > Commit-Queue: Michael Achenbach <machenbach@chromium.org>
> > Reviewed-by: Michael Achenbach <machenbach@chromium.org>
> > Cr-Commit-Position: refs/heads/master@{#50347}
> 
> TBR=machenbach@chromium.org,sergiyb@chromium.org,majeski@google.com
> 
> Change-Id: Ice1f3aee0a26f7f38996459d38fd6e0bd964113d
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: v8:6917
> Reviewed-on: https://chromium-review.googlesource.com/849572
> Reviewed-by: Bill Budge <bbudge@chromium.org>
> Commit-Queue: Bill Budge <bbudge@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#50348}

TBR=bbudge@chromium.org,machenbach@chromium.org,sergiyb@chromium.org,majeski@google.com

Change-Id: I7a522b6487de6e96985d223524533493eb9171f0
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:6917
Reviewed-on: https://chromium-review.googlesource.com/848975
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50350}
2018-01-04 07:39:21 +00:00
Tobias Tebbi
dbc377ed8e [turbofan] add regression test for chromium:796041
The missing regression test for
https://chromium-review.googlesource.com/c/v8/v8/+/847011

Bug: chromium:796041
Change-Id: I3d791d6485221d2fa68def2c7be96c48822aa651
Reviewed-on: https://chromium-review.googlesource.com/848995
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50349}
2018-01-04 00:36:09 +00:00
Bill Budge
1685b5d27a Revert "[test] Move has unexpected output to outproc."
This reverts commit 71605b3ea4.

Reason for revert: Seems to break static-initializers step:
https://build.chromium.org/p/client.v8/builders/V8%20Linux64/builds/22156

Original change's description:
> [test] Move has unexpected output to outproc.
> 
> Expected outcomes optimized to serialize [PASS] as None.
> 
> Keeping expected outcomes inside output processors should be
> optimized in the future. Few possible optimizations:
> - separate classes for tests that are expected to PASS - done as
> an example in mozilla test suite.
> - cache output processors inside testcase.
> - share output processors between copies of the same test - needs
> some updates to the create_variant to update outproc only if
> expected outcomes changed.
> 
> Bug: v8:6917
> Change-Id: Ie73f1dcdf17fdfc65bce27228f818b1dd1e420c9
> Reviewed-on: https://chromium-review.googlesource.com/843025
> Commit-Queue: Michael Achenbach <machenbach@chromium.org>
> Reviewed-by: Michael Achenbach <machenbach@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#50347}

TBR=machenbach@chromium.org,sergiyb@chromium.org,majeski@google.com

Change-Id: Ice1f3aee0a26f7f38996459d38fd6e0bd964113d
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:6917
Reviewed-on: https://chromium-review.googlesource.com/849572
Reviewed-by: Bill Budge <bbudge@chromium.org>
Commit-Queue: Bill Budge <bbudge@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50348}
2018-01-03 23:01:11 +00:00
Michal Majewski
71605b3ea4 [test] Move has unexpected output to outproc.
Expected outcomes optimized to serialize [PASS] as None.

Keeping expected outcomes inside output processors should be
optimized in the future. Few possible optimizations:
- separate classes for tests that are expected to PASS - done as
an example in mozilla test suite.
- cache output processors inside testcase.
- share output processors between copies of the same test - needs
some updates to the create_variant to update outproc only if
expected outcomes changed.

Bug: v8:6917
Change-Id: Ie73f1dcdf17fdfc65bce27228f818b1dd1e420c9
Reviewed-on: https://chromium-review.googlesource.com/843025
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50347}
2018-01-03 22:19:49 +00:00
Michael Achenbach
e8912359b8 [test] Refactor commands into OS-specific versions
This seperates OS-specific code of the Command class into a Posix and a
WindowsCommand to simplify scattered OS checks.

This also removes some temporary mac debug output that's obsolete after
https://crbug.com/v8/6927 got resolved.

TBR=sergiyb@chromium.org

Bug: v8:6917
Change-Id: Iaab3b527ce556dfba797a164ae58e8dd358eb56f
Reviewed-on: https://chromium-review.googlesource.com/847000
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50346}
2018-01-03 19:38:28 +00:00
Michael Achenbach
d55f929788 Revert "Skip Execution::Call in CompileFunctionInContext."
This reverts commit ce8f514138.

Reason for revert: Changes a layout test:
https://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Linux%2064/builds/20693

Original change's description:
> Skip Execution::Call in CompileFunctionInContext.
> 
> We execute the top-level function only to get to the wrapped function.
> We could do the same by simply instantiating it.
> 
> Other approaches would change the parser so that the top-level function
> is the wrapped function. However, that change violates existing scoping
> invariants and fixing it would add a lot more complexity to the parser.
> 
> R=​adamk@chromium.org, marja@chromium.org
> 
> Bug: v8:7172
> Change-Id: I7272b8b58fc739d47a44da3a9d4a914af3e8cf3d
> Reviewed-on: https://chromium-review.googlesource.com/836367
> Reviewed-by: Adam Klein <adamk@chromium.org>
> Commit-Queue: Yang Guo <yangguo@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#50333}

TBR=adamk@chromium.org,marja@chromium.org,yangguo@chromium.org

Change-Id: I922fdd2410512d837705263e092a09e041b9d28f
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:7172
Reviewed-on: https://chromium-review.googlesource.com/849215
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50345}
2018-01-03 18:55:19 +00:00
Michael Achenbach
5a8e1f3f1b [test] Make coverage in test-runner tests work with multiprocessing
This replaces multiprocessing with threading in tests to make python
coverage work.

TBR=sergiyb@chromium.org

Bug: v8:6917
Change-Id: Idff763dfefa4a7fc782133d94089b3a5b00a194d
Reviewed-on: https://chromium-review.googlesource.com/844735
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50344}
2018-01-03 17:37:05 +00:00
Michael Achenbach
60bc8c078f [test] Continuously run test-runner tests
The tests already run on upload and commit. This makes them run on the
corresponding continuous tester.

NOTRY=true
TBR=sergiyb@chromium.org

Bug: v8:6917
Change-Id: I7dedd482ea54f0879854055c97b27f825f06d6e2
Reviewed-on: https://chromium-review.googlesource.com/846807
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50343}
2018-01-03 17:03:35 +00:00
Sigurd Schneider
e683f33db1 [turbofan] Move String.prototype.{charAt,CharCodeAt} to call reducer
This should improve performance in cases where receiver or argument types
are unknown.

Bug: v8:7127, v8:7092
Change-Id: I72f1fcdc088bc817c1cc42bf27ecee91965b7680
Reviewed-on: https://chromium-review.googlesource.com/846761
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50342}
2018-01-03 14:15:02 +00:00
Sigurd Schneider
5b5dcf0871 [turbofan] Support multiple maps in Array.prototype.push
Bug: v8:7127, v8:7204, v8:7205
Change-Id: I05d6bc2e20e29eaa683ad3aa94af24a4309bcdc7
Reviewed-on: https://chromium-review.googlesource.com/847484
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50341}
2018-01-03 13:57:15 +00:00
Tobias Tebbi
8de3a3bcf9 [turbofan] add value input to DeadValue
DeadValue was a constant node of type None. This is unsound in the
presence of re-scheduling. This CL adds a value input to DeadValue,
which preserves the dependency on the original node of type None.

Bug: chromium:796041
Change-Id: I3ac459bf661fb78c56552e8201aa18a7dbc4d182
Reviewed-on: https://chromium-review.googlesource.com/847011
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50340}
2018-01-03 12:28:14 +00:00
Franziska Hinkelmann
76c3ac58b0 [cpu-profiler] Fix script name when recording inlining info
Use the script name from the shared function info to create an
inline entry. Otherwise functions are attributed to the wrong file
in the CpuProfileNode.

See https://github.com/GoogleCloudPlatform/cloud-profiler-nodejs/issues/89

Bug: v8:7203, v8:7241
Change-Id: I8ea31943741770e6611275a9c93375922b934547
Reviewed-on: https://chromium-review.googlesource.com/848093
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Franziska Hinkelmann <franzih@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50339}
2018-01-03 11:48:04 +00:00
Mike Stanton
10a8ae4173 [TurboFan] Some refactoring in the inlined array builtins.
This code is highly repetitive, and while we've held off on large
refactorings (using "Builder" classes, templates or macros), it's
useful to find a few common points that don't change very much.

Bug: 
Change-Id: Ib0880558cf667f5d07c8343328461609ccb1e6b1
Reviewed-on: https://chromium-review.googlesource.com/848913
Reviewed-by: Daniel Clifford <danno@chromium.org>
Commit-Queue: Michael Stanton <mvstanton@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50338}
2018-01-03 11:37:04 +00:00
Sigurd Schneider
94ef114814 [turbofan] Move Array.prototype.push/pop/shift lowering to JSCallReducer.
Bug: v8:7127, v8:7204, v8:7205
Change-Id: Idd3c11dc92fbd2c7ccab3aece7b2ad189619fc2c
Reviewed-on: https://chromium-review.googlesource.com/833916
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50337}
2018-01-03 11:30:14 +00:00
Mythri
c5eb79e6aa Add new options to CompileOptions and NoCacheReason
Now that we have an API to request code cache, we want to decouple
compilation from serialization. As a first step, we will add CompileEager
option (used when we want to produce full code cache) and
DeferredProduceCodeOption to NoCacheReason. This is so that we can
properly bucket the compilation time and collect statistics about the
cache behaviour. Once, blink and node start using the new API, we can
remove the code to produce code cache from the compilation.

Bug: chromium:783124
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
Change-Id: I35dbb6b0af39940450d412ff75b769603398b2f6
Reviewed-on: https://chromium-review.googlesource.com/828977
Commit-Queue: Mythri Alle <mythria@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50336}
2018-01-03 11:20:24 +00:00
Benedikt Meurer
ca16cc2337 [turbofan] Bump CallApiCallbackStub::kArgBits to 7.
This allows TurboFan to inline API function calls with more than 7
parameters. It's now possible to inline API function calls with up
to 127 parameters, which should be sufficiently large.

Bug: chromium:794865
Change-Id: I974fed740cd3506d0b8d75ed922227364c51a1fb
Reviewed-on: https://chromium-review.googlesource.com/848712
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50335}
2018-01-03 09:29:02 +00:00
Sigurd Schneider
1ac263b185 [cleanup] Rename FastArray* to ArrayPrototype*
Rename FastArray{Push,Pop,Shift,Slice} to
ArrayPrototype{Push,Pop,Shift,Slice}.

Bug: v8:7127, v8:7204, v8:7205
Change-Id: I409fcb4b088f1acece7c6520690f419cad36e78c
Reviewed-on: https://chromium-review.googlesource.com/846982
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50334}
2018-01-03 09:27:57 +00:00
Yang Guo
ce8f514138 Skip Execution::Call in CompileFunctionInContext.
We execute the top-level function only to get to the wrapped function.
We could do the same by simply instantiating it.

Other approaches would change the parser so that the top-level function
is the wrapped function. However, that change violates existing scoping
invariants and fixing it would add a lot more complexity to the parser.

R=adamk@chromium.org, marja@chromium.org

Bug: v8:7172
Change-Id: I7272b8b58fc739d47a44da3a9d4a914af3e8cf3d
Reviewed-on: https://chromium-review.googlesource.com/836367
Reviewed-by: Adam Klein <adamk@chromium.org>
Commit-Queue: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50333}
2018-01-03 08:25:01 +00:00
Bill Budge
781fa72608 Revert "Revert "[debugger] do not try to find saved context before DebugEvaluate::Local""
This reverts commit 2a8e1e4a94.

Reason for revert: Time outs were caused by infra issues.

Original change's description:
> Revert "[debugger] do not try to find saved context before DebugEvaluate::Local"
> 
> This reverts commit ea7499df6d.
> 
> Reason for revert: Speculative, but this CL seems correlated with a bunch of timeouts on Linux:
> 
> https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20nosnap/builds/19540
> 
> Original change's description:
> > [debugger] do not try to find saved context before DebugEvaluate::Local
> > 
> > Current implementation produces crashes since sometimes saved context
> > is empty. It looks like we do not need to restore saved context since
> > we do not set debug context as current, at least all tests are passed.
> > 
> > R=​yangguo@chromium.org
> > 
> > Bug: chromium:797573,chromium:792838
> > Change-Id: I1271640f6a18cbaaecfa1e99ed9ac28e0dbbb1da
> > Reviewed-on: https://chromium-review.googlesource.com/844979
> > Reviewed-by: Yang Guo <yangguo@chromium.org>
> > Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
> > Cr-Commit-Position: refs/heads/master@{#50327}
> 
> TBR=yangguo@chromium.org,kozyatinskiy@chromium.org
> 
> Change-Id: I543201698c96c9762c481c1f6012cc13cb712842
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: chromium:797573, chromium:792838
> Reviewed-on: https://chromium-review.googlesource.com/846205
> Reviewed-by: Bill Budge <bbudge@chromium.org>
> Commit-Queue: Bill Budge <bbudge@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#50331}

TBR=bbudge@chromium.org,yangguo@chromium.org,kozyatinskiy@chromium.org

Change-Id: I44e916c796b935c372ce418a3fad44aa25d6f863
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:797573, chromium:792838
Reviewed-on: https://chromium-review.googlesource.com/848132
Reviewed-by: Bill Budge <bbudge@chromium.org>
Commit-Queue: Bill Budge <bbudge@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50332}
2018-01-02 23:38:12 +00:00
Bill Budge
2a8e1e4a94 Revert "[debugger] do not try to find saved context before DebugEvaluate::Local"
This reverts commit ea7499df6d.

Reason for revert: Speculative, but this CL seems correlated with a bunch of timeouts on Linux:

https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20nosnap/builds/19540

Original change's description:
> [debugger] do not try to find saved context before DebugEvaluate::Local
> 
> Current implementation produces crashes since sometimes saved context
> is empty. It looks like we do not need to restore saved context since
> we do not set debug context as current, at least all tests are passed.
> 
> R=​yangguo@chromium.org
> 
> Bug: chromium:797573,chromium:792838
> Change-Id: I1271640f6a18cbaaecfa1e99ed9ac28e0dbbb1da
> Reviewed-on: https://chromium-review.googlesource.com/844979
> Reviewed-by: Yang Guo <yangguo@chromium.org>
> Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#50327}

TBR=yangguo@chromium.org,kozyatinskiy@chromium.org

Change-Id: I543201698c96c9762c481c1f6012cc13cb712842
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:797573, chromium:792838
Reviewed-on: https://chromium-review.googlesource.com/846205
Reviewed-by: Bill Budge <bbudge@chromium.org>
Commit-Queue: Bill Budge <bbudge@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50331}
2018-01-02 20:57:32 +00:00
Bill Budge
7cb446c1d6 [d8] Override memory functions for PredictablePlatform.
- Implements GetPageAllocator and OnCriticalMemoryPressure methods, delegating
  to the default platform, in preparation for switching over to these for
  handling memory management.

Bug: chromium:756050
Change-Id: I66edb35ce2669ee9ffd53e82a63b598cc5b7f40c
Reviewed-on: https://chromium-review.googlesource.com/845035
Commit-Queue: Bill Budge <bbudge@chromium.org>
Reviewed-by: Eric Holk <eholk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50330}
2018-01-02 18:20:09 +00:00
Pierre Langlois
a59215c729 [arm] Remove dead CallDeoptmizer methods.
Bug: 
Change-Id: Ibd094c5f0fddba4932d3b87f4c27d6af4636217b
Reviewed-on: https://chromium-review.googlesource.com/847374
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Commit-Queue: Pierre Langlois <pierre.langlois@arm.com>
Cr-Commit-Position: refs/heads/master@{#50329}
2018-01-02 18:17:03 +00:00
Pierre Langlois
456a428c5a [turbofan] Delete unused OutOfLineCode classes.
These classes were only used to implement checked loads.

Bug: 
Change-Id: Icd3aa6f22ffe7a48e5bea98b0a44a58905788c80
Reviewed-on: https://chromium-review.googlesource.com/847578
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Commit-Queue: Pierre Langlois <pierre.langlois@arm.com>
Cr-Commit-Position: refs/heads/master@{#50328}
2018-01-02 18:15:59 +00:00
Alexey Kozyatinskiy
ea7499df6d [debugger] do not try to find saved context before DebugEvaluate::Local
Current implementation produces crashes since sometimes saved context
is empty. It looks like we do not need to restore saved context since
we do not set debug context as current, at least all tests are passed.

R=yangguo@chromium.org

Bug: chromium:797573,chromium:792838
Change-Id: I1271640f6a18cbaaecfa1e99ed9ac28e0dbbb1da
Reviewed-on: https://chromium-review.googlesource.com/844979
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50327}
2018-01-02 16:43:53 +00:00
Pierre Langlois
0761b55d21 [cctest] Support testing Simd128 moves and swaps
Extend the code-generator tests to cover AssembleMove and AssembleSwap with
Simd128 registers and stack slots, for targets that support them.

For this to work however, we need support for passing Simd128 stack parameters
in TurboFan which this patch implements for Arm and x86. PPC and S390 both do
not support the Simd128 representation and it appears MIPS and MIPS64's
implementation of AssembleMove and AssembleSwap do not support it either.

As per the design of the tests, the set of values to perform moves on are
represented in a FixedArray of Smis (for kTagged) and HeapNumbers (for kFloat32
and kFloat64). They are converted to raw values for the moves to be performed
on, to be then converted back into a FixedArray. For the kSimd128
representation, we represent values as a FixedArray of 4 Smis, each representing
a lane. They are converted to a raw Simd128 vector using the `I32x4ReplaceLane`
and `I32x4ExtractLane` operations.

Finally, these tests need Simd128 variables mixed with the CodeStubAssembler
which is not a use-case officially supported. And as a result, the `RecordWrite`
stub does not guarantee to preserve Simd128 registers. To get around this, we
have to be careful to skip write barriers when dealing with Simd128 parameters
inside the "teardown" function, and we've had to move all allocations to the
"setup" function.

Thanks to this, we are able to catch bugs such as this one
https://bugs.chromium.org/p/v8/issues/detail?id=6843.

Bug: v8:6848
Change-Id: I8787d6339cdbfcd9356c5e8995925f0b45c562fa
Reviewed-on: https://chromium-review.googlesource.com/728599
Commit-Queue: Pierre Langlois <pierre.langlois@arm.com>
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Bill Budge <bbudge@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50326}
2018-01-02 11:59:21 +00:00
Franziska Hinkelmann
78ac640554 Revert "[cpu-profiler] Fix script name when recording inlining info"
This reverts commit c500aa9fb0.

Reason for revert: Breaks V8 Linux64 - gyp

Original change's description:
> [cpu-profiler] Fix script name when recording inlining info
> 
> Use the script name from the shared function info to create an
> inline entry. Otherwise functions are attributed to the wrong file
> in the CpuProfileNode.
> 
> See https://github.com/GoogleCloudPlatform/cloud-profiler-nodejs/issues/89
> 
> 
> Bug: v8:7203, v8:7241
> Change-Id: I7a7524ad68a295efd35ef94295cd48f823376e07
> Reviewed-on: https://chromium-review.googlesource.com/845624
> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
> Commit-Queue: Franziska Hinkelmann <franzih@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#50324}

TBR=jarin@chromium.org,franzih@chromium.org

Change-Id: I5876d24723bb6bd20854db91a579485b07313a69
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:7203, v8:7241
Reviewed-on: https://chromium-review.googlesource.com/846771
Reviewed-by: Franziska Hinkelmann <franzih@chromium.org>
Commit-Queue: Franziska Hinkelmann <franzih@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50325}
2018-01-02 09:30:41 +00:00
Franziska Hinkelmann
c500aa9fb0 [cpu-profiler] Fix script name when recording inlining info
Use the script name from the shared function info to create an
inline entry. Otherwise functions are attributed to the wrong file
in the CpuProfileNode.

See https://github.com/GoogleCloudPlatform/cloud-profiler-nodejs/issues/89


Bug: v8:7203, v8:7241
Change-Id: I7a7524ad68a295efd35ef94295cd48f823376e07
Reviewed-on: https://chromium-review.googlesource.com/845624
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Franziska Hinkelmann <franzih@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50324}
2018-01-02 08:51:40 +00:00
Clemens Hammacher
0f5328a3d7 [turbofan] Remove CheckedLoad operation
After https://crrev.com/c/832457, CheckedLoad is not being used any
more. Thus, remove it from the TurboFan backend and from all tests.
CheckedStore was already removed in https://crrev.com/c/822570.

R=jarin@chromium.org
CC=titzer@chromium.org, mstarzinger@chromium.org

Change-Id: I2eeec2f4a9d0a10067db5cc25ec41366ae85e917
Reviewed-on: https://chromium-review.googlesource.com/832459
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50323}
2018-01-02 08:47:01 +00:00
Sigurd Schneider
f22287b1f3 [turbofan] Add benchmarks for String.prototype.charCodeAt to JSTests.json
Bug: v8:7127, v8:7092
Change-Id: Ib79c1cf5e65632b8701528799fe7df1d5407ad59
Reviewed-on: https://chromium-review.googlesource.com/846766
Commit-Queue: Michael Stanton <mvstanton@chromium.org>
Reviewed-by: Michael Stanton <mvstanton@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50322}
2017-12-29 15:26:51 +00:00
Sigurd Schneider
d313d77fbf [cleanup] Fix typo
Change-Id: I56dfa2a0ee6d953002ba9a86f25c142bc2262106
Reviewed-on: https://chromium-review.googlesource.com/846740
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Commit-Queue: Franziska Hinkelmann <franzih@chromium.org>
Reviewed-by: Franziska Hinkelmann <franzih@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50321}
2017-12-29 13:13:01 +00:00
Mike Stanton
530e655adf [TurboFan] Array.prototype.every inlined
Bug: v8:1956
Change-Id: Iee1c6245832b786993ebd71b615cf4257c6bd0bb
Reviewed-on: https://chromium-review.googlesource.com/758769
Commit-Queue: Michael Stanton <mvstanton@chromium.org>
Reviewed-by: Daniel Clifford <danno@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50320}
2017-12-29 12:42:36 +00:00
Franziska Hinkelmann
bfeb420997 [profiler] Delete unused NodesPair
Cleanup, delete unused struct.

Bug: 
Change-Id: I4ea5e81d6d0711d7cf3fdd279f8b0d136bcd6db3
Reviewed-on: https://chromium-review.googlesource.com/846760
Commit-Queue: Michael Stanton <mvstanton@chromium.org>
Reviewed-by: Michael Stanton <mvstanton@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50319}
2017-12-29 11:59:36 +00:00
Sigurd Schneider
5bc35c1c0f [turbofan] Update redundancy elimination for feedback
Update notion of compatibility used in redundancy elimination
to determine whether one check subsumes another check to ignore
the feedback on the operator.

Bug: v8:7127
Change-Id: I77ab8a64adcd2b36ee7eafbe6cc148ddbc430b11
Reviewed-on: https://chromium-review.googlesource.com/839441
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50318}
2017-12-29 10:51:41 +00:00
Mike Stanton
8c68b655ec [Turbofan] Add holey support to Array.prototype.map & filter.
Bug: v8:1956
Change-Id: Iae150730eb230dd7c90c66941d4d6aa8f0f0a423
Reviewed-on: https://chromium-review.googlesource.com/845685
Reviewed-by: Daniel Clifford <danno@chromium.org>
Commit-Queue: Michael Stanton <mvstanton@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50317}
2017-12-29 10:50:36 +00:00