Commit Graph

37217 Commits

Author SHA1 Message Date
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
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
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
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
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
Eugene Ostroukhov
86abfd35e7 [inspector] provide ArrayBuffer previews
Add an easy way to preview ArrayBuffer as a typed array. This change
will always allow previewing ArrayBuffer instances as Uint8Array and
Int8Array. ArrayBuffer instances that have even length will allow
Int16Array preview and ArrayBuffers that have length divisible by 4 will
allow Int32Array previews.

Bug: 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I07440147cc9e83c8a987f9316bd8d1b936db2717
Reviewed-on: https://chromium-review.googlesource.com/842472
Commit-Queue: Eugene Ostroukhov <eostroukhov@chromium.org>
Reviewed-by: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50315}
2017-12-28 21:35:53 +00:00
Alexey Kozyatinskiy
ce609dba32 [inspector] injected script source should call less user code
If user redefines some getter on node then it is too easy to detect our
nice tools. Let's make it a little harder.

R=dgozman@chromium.org

Bug: chromium:795547
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
Change-Id: Ibfee850949124d056a443d869ea67a71abd71d24
Reviewed-on: https://chromium-review.googlesource.com/845299
Reviewed-by: Dmitry Gozman <dgozman@chromium.org>
Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50314}
2017-12-28 21:08:04 +00:00
Caitlin Potter
007f90ba9b [turbofan] handle dead effect-phi control op in InferReceiverMaps
Add an early exit if the control op is Dead to prevent failing the
DCHECK.

BUG=chromium:797596, v8:5940, v8:3018
R=bmeurer@chromium.org, jarin@chromium.org

Change-Id: I6090380ea69c3205740b6c7a41d7c066d18d6a9f
Reviewed-on: https://chromium-review.googlesource.com/844978
Commit-Queue: Caitlin Potter <caitp@igalia.com>
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50312}
2017-12-27 22:14:41 +00:00
Karl Schimpf
013e86b838 Add saturating f32 to i32 conversion to WASM
This CL adds the i32.trunc_s:sat/f32 WASM opcode to the turbofan
compiler and interpreter (more saturating operators will be added in
later CLs).

The operatation has been added under an experimental flag.

Bug: v8:7226
Change-Id: Ia69e981ffddb2da682e53ba25f489fc9d0cd2db5
Reviewed-on: https://chromium-review.googlesource.com/834670
Commit-Queue: Karl Schimpf <kschimpf@chromium.org>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50311}
2017-12-27 19:27:19 +00:00
Ilija Pavlovic
b82125c033 MIPS64: Avoid unnecessary register transfer when calling C functions.
Use t9 for the call to C functions instead of t8, since t9 must be used
according to MIPS ABI. This saves us one unneccessary move.

TEST=
BUG=

Change-Id: Ic4caf104e043789f0e05930488a48b07c0e134c2
Reviewed-on: https://chromium-review.googlesource.com/844554
Reviewed-by: Ivica Bogosavljevic <ivica.bogosavljevic@mips.com>
Commit-Queue: Ivica Bogosavljevic <ivica.bogosavljevic@mips.com>
Cr-Commit-Position: refs/heads/master@{#50309}
2017-12-27 15:03:59 +00:00
Yang Guo
54bf4d20de [snapshot] support serializing external strings with known resource.
TBR=ulan@chromium.org
R=jgruber@chromium.org


Bug: v8:7240
Change-Id: I4273105b496da16a5e00f53a6df3112efddedc91
Reviewed-on: https://chromium-review.googlesource.com/842882
Commit-Queue: Yang Guo <yangguo@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50307}
2017-12-26 16:02:47 +00:00
Bill Budge
538e584ab4 [Memory] Add v8::internal::AllocWithRetry function.
- Moves all allocation retry logic into allocation.

Bug: chromium:756050
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
Change-Id: I810d01f0a0a002b08bf3f82ea4195d636ab6e03a
Reviewed-on: https://chromium-review.googlesource.com/843230
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Bill Budge <bbudge@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50305}
2017-12-22 21:08:20 +00:00
Brad Nelson
8e33a405f6 Revert "[wasm] Enable guards on 64-bit systems."
Web platform tests that allocate 600 memories fail due to this. (This seems to also interfere with tests on the same shard).

This reverts commit b9abc7f005.

Reason for revert: <INSERT REASONING HERE>

Original change's description:
> [wasm] Enable guards on 64-bit systems.
> 
> R=​eholk@chromium.org
> 
> Bug: 
> Change-Id: Ia099cf085510da50a87b9f999020d6a66d6eab20
> Reviewed-on: https://chromium-review.googlesource.com/838250
> Commit-Queue: Brad Nelson <bradnelson@chromium.org>
> Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
> Reviewed-by: Eric Holk <eholk@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#50300}

TBR=bradnelson@chromium.org,eholk@chromium.org,clemensh@chromium.org

Change-Id: Ie7fc2a2142bddb03df41a5b705087a2e1f03e163
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/842925
Reviewed-by: Brad Nelson <bradnelson@chromium.org>
Commit-Queue: Brad Nelson <bradnelson@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50304}
2017-12-22 20:31:09 +00:00
Bill Budge
29bb707e9b [Memory] Add OnCriticalMemoryPressure overload to v8::Platform.
- Adds overload to v8::Platform that will make it easier for embedders to
  maintain a reserve of address space for large, contiguous allocations.
- Rewrites retry logic using loops.
- Moves retry logic from some VirtualMemory allocation functions to AllocPages.

Bug: chromium:756050
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
Change-Id: I52e66f9f8b15b6ce2a2f36e74783f178b8cd5cf7
Reviewed-on: https://chromium-review.googlesource.com/840724
Commit-Queue: Bill Budge <bbudge@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50303}
2017-12-22 19:28:48 +00:00
Yang Guo
c8736f6899 Reduce max instance type enum value.
We collect instance type statistics in FatalProcessOutOfMemory into an
array, which is allocated to the max instance type value. While we want
to leave space to ensure new instance types do not affect constants in
the API, we can be more frugal.

We currently serialize 350 maps into the startup/context snapshot.  Even
if we assign a distinct instance type to each of these maps, we would
still have more than enough to spare with this change.

R=ulan@chromium.org

Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
Change-Id: I3e583c2c8da3342e9132d96046b5d80cd41afd72
Reviewed-on: https://chromium-review.googlesource.com/842542
Commit-Queue: Yang Guo <yangguo@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50302}
2017-12-22 19:08:18 +00:00
Georg Neis
a067281d39 [modules] Implement recent ES revisions.
- Instantiation errors are no longer recorded. If instantiation fails,
  the module(s) are reset to "uninstantiated". When instantiation is
  re-attempted, the thrown exception will be fresh.
- Instantiation can succeed even where there are modules in the graph
  that previously failed evaluation.

Bug: v8:1569
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
Change-Id: I429f616918afe5f8ab1a956024f0a22f464b8c44
Reviewed-on: https://chromium-review.googlesource.com/763369
Commit-Queue: Georg Neis <neis@chromium.org>
Reviewed-by: Adam Klein <adamk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50301}
2017-12-22 17:56:03 +00:00
Brad Nelson
b9abc7f005 [wasm] Enable guards on 64-bit systems.
R=eholk@chromium.org

Bug: 
Change-Id: Ia099cf085510da50a87b9f999020d6a66d6eab20
Reviewed-on: https://chromium-review.googlesource.com/838250
Commit-Queue: Brad Nelson <bradnelson@chromium.org>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Eric Holk <eholk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50300}
2017-12-22 16:11:33 +00:00
Andreas Haas
461274fb63 [mips64][turbofan] Implement on-stack returns.
This is the implementation of crrev.com/c/766371 for mips64.

Original description:

Add the ability to return (multiple) return values on the stack:

- Extend stack frames with a new buffer region for return slots.
  This region is located at the end of a caller's frame such that
  its slots can be indexed as caller frame slots in a callee
  (located beyond its parameters) and assigned return values.
- Adjust stack frame constructon and deconstruction accordingly.
- Extend linkage computation to support register plus stack returns.
- Reserve return slots in caller frame when respective calls occur.
- Introduce and generate architecture instructions ('peek') for
  reading back results from return slots in the caller.
- Aggressive tests.
- Some minor clean-up.

R=v8-mips-ports@googlegroups.com

Change-Id: Ia924f94367320b9062e33d35b58ccd38c8fc3ca3
Reviewed-on: https://chromium-review.googlesource.com/842483
Reviewed-by: Ivica Bogosavljevic <ivica.bogosavljevic@mips.com>
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50299}
2017-12-22 15:07:13 +00:00
Daniel Clifford
c0234008fa Temporarily disable TF-inlining of A.p.reduce[Right]
May be causing breakage in browser tests preventing V8 roll

TBR=bmeurer@chromium.org

Change-Id: Ib1689c38ff250fc9454d2ea991c4808ddc5189de
Reviewed-on: https://chromium-review.googlesource.com/842868
Reviewed-by: Daniel Clifford <danno@chromium.org>
Reviewed-by: Michael Stanton <mvstanton@chromium.org>
Commit-Queue: Michael Stanton <mvstanton@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50298}
2017-12-22 15:04:32 +00:00
Andreas Haas
57a1d86ca2 [turbofan][x64] Remove the kX64PeekFloat32 and kX64PeekFloat64 instructions
Instead of these two instructions I generalize the kX64Peek instruction.

R=bmeurer@chromium.org

Change-Id: Ie5f8c7d428b65df3ca8b75594f6a06a75cc8e978
Reviewed-on: https://chromium-review.googlesource.com/839863
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50294}
2017-12-22 13:17:31 +00:00
Daniel Ehrenberg
94d53d8742 [class] Split out static fields into a separate flag
This patch implements https://github.com/tc39/proposal-class-fields/pull/65
and https://github.com/tc39/proposal-static-class-features/ by
splitting out instance and static field declarations into separate
flags for the separate proposals. Instance class fields is currently
at Stage 3 whereas static class fields is currently at Stage 2.

Bug: v8:5367
Change-Id: I133c945fd0b22dc5718c7bb61b10f22348087acd
Reviewed-on: https://chromium-review.googlesource.com/839778
Commit-Queue: Daniel Ehrenberg <littledan@chromium.org>
Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50293}
2017-12-22 13:04:51 +00:00