Commit Graph

33057 Commits

Author SHA1 Message Date
zhengxing.li
978edb2421 X87: [stubs] Convert GrowElementsStub to TurboFan.
port eb84126923 (r38371)

  original commit message:
  One caveat: the Crankshaft stub used to preserve callee-clobbered double
  registers, which is contrary to any real platform ABI that we support. Since the
  only current use of this stub is in Crankshaft, the instruction there now must
  be marked as double-clobbering. This might result in a small performance
  regression. However, when this stub is eventually used in TF-generated code, it
  will be called from deferred code that can save doubles only on the rarely-taken
  path... something that Crankshaft can't do.

BUG=

Review-Url: https://codereview.chromium.org/2226673002
Cr-Commit-Position: refs/heads/master@{#38465}
2016-08-09 06:49:15 +00:00
zhengxing.li
59e2d106ba X87: [x64][ia32] Add Support for the Float64Neg and Float32Neg turbofan operators.
port f68059b73a (r38383)

  original commit message:
  Benedikt, do you think we could also provide these operators on mips,
  maybe by expanding them to "-0.0 -x"? If mips can provide these operators,
  then we could make Float64Neg and Float32Neg real operators and not just
  OptionalOperators.

BUG=

Review-Url: https://codereview.chromium.org/2223793002
Cr-Commit-Position: refs/heads/master@{#38464}
2016-08-09 06:45:13 +00:00
ahaas
c5f34d46c2 [test] Remove test exception, test has been removed.
The test has already been removed in
https://codereview.chromium.org/2226053002/.

NOTRY=true
R=machenbach@chromium.org, bradnelson@chromium.org

Review-Url: https://codereview.chromium.org/2229713002
Cr-Commit-Position: refs/heads/master@{#38463}
2016-08-09 06:45:12 +00:00
bbudge
a52d643a17 [Turbofan] Remove stray aliasing code from MoveOptimizer.
LOG=N
BUG=V8:4124

Review-Url: https://codereview.chromium.org/2214843003
Cr-Commit-Position: refs/heads/master@{#38462}
2016-08-09 00:42:34 +00:00
bradnelson
1c5c526b90 [wasm] Remove single function JIT support.
While we might at some point want to explore if this is a win versus
whole modules, for now we have the Tables interface planned.

R=titzer@chromium.org,ahaas@chromium.org,mtrofin@chromium.org,rossberg@chromium.org
BUG=v8:5044

Review-Url: https://codereview.chromium.org/2226053002
Cr-Commit-Position: refs/heads/master@{#38461}
2016-08-08 21:50:13 +00:00
verwaest
b1d53a1549 Replace SloppyBlockFunctionMap::Vector with linked list through SloppyBlockFunctionStatement
BUG=v8:5209

Review-Url: https://codereview.chromium.org/2226803003
Cr-Commit-Position: refs/heads/master@{#38460}
2016-08-08 20:39:06 +00:00
adamk
42cc6c051e Remove unused Scope::inside_with() accessor
scope_inside_with_ itself is still used internally during analysis.

R=verwaest@chromium.org

Review-Url: https://codereview.chromium.org/2221783005
Cr-Commit-Position: refs/heads/master@{#38459}
2016-08-08 20:20:24 +00:00
verwaest
6c1ea55ed5 Finalize scope via block-state in BuildParameterInitializationBlock
This avoids direct access to scope() for later lazy scope allocation.

BUG=v8:5209

Review-Url: https://codereview.chromium.org/2225773003
Cr-Commit-Position: refs/heads/master@{#38458}
2016-08-08 19:24:43 +00:00
adamk
49f509448c Remove more vestigial CONST_LEGACY support and clean up var declaration code
%InitializeConstGlobal has been dead code since the demise of legacy const
declarations. While getting rid of that call, also cleaned up and clarified
the surrounding code in a variety of ways.

R=neis@chromium.org

Review-Url: https://codereview.chromium.org/2219223002
Cr-Commit-Position: refs/heads/master@{#38457}
2016-08-08 19:24:42 +00:00
verwaest
8cdb64d82c Reduce number of scope() accesses
To be able to lazily allocate BlockScopes, we need to reduce access to scope(). The explicit accesses removed here just need access to the current scope to allocate unresolved variable proxies. Those in the future should go over ScopeState rather than directly to Scope.

BUG=v8:5209

Review-Url: https://codereview.chromium.org/2224843003
Cr-Commit-Position: refs/heads/master@{#38456}
2016-08-08 18:58:14 +00:00
mtrofin
5de4722278 [wasm] external serialization APIs
V8 APIs for wasm serialization/deserialization.

BUG=v8:5072

Review-Url: https://codereview.chromium.org/2226753002
Cr-Commit-Position: refs/heads/master@{#38455}
2016-08-08 18:19:55 +00:00
adamk
9b6c57045d Clean up and simplify Parser::Declare
This removes the "resolve" parameter from Declare, since there's no case
where Scope analysis wouldn't make the same resolution decision the
parser can make here.

Other cleanup includes:
  - Replace some if statements with DCHECKS where they could never be hit
  - After the above, reordered some conditions for clarity
  - Remove or edit down old comments

Should be no change in behavior.

R=neis@chromium.org

Review-Url: https://codereview.chromium.org/2217973003
Cr-Commit-Position: refs/heads/master@{#38454}
2016-08-08 18:19:54 +00:00
bmeurer
5afd1f303d [turbofan] Remove unused Type parameter from ReferenceEqual.
This parameter was never used and doesn't seem like it would ever be
useful, so it's gone now.

R=epertoso@chromium.org

Review-Url: https://codereview.chromium.org/2221043002
Cr-Commit-Position: refs/heads/master@{#38453}
2016-08-08 16:34:28 +00:00
mstarzinger
025ddb21ef [test] Split TurboFan mjsunit expectations for variants.
R=machenbach@chromium.org

Committed: https://crrev.com/5eed70c6b474635ccdf111e2269dbf33e629ce0b
Review-Url: https://codereview.chromium.org/2225843002
Cr-Original-Commit-Position: refs/heads/master@{#38445}
Cr-Commit-Position: refs/heads/master@{#38452}
2016-08-08 16:26:55 +00:00
neis
33f3262f55 [modules] Don't force context allocation of variables declared in module scope.
There's no need to do so.

Also simplify NeedsContext(), which doesn't need to check for with-scopes.

R=adamk@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2225683004
Cr-Commit-Position: refs/heads/master@{#38451}
2016-08-08 16:19:28 +00:00
bjaideep
5fc50a91c3 PPC: set kMinimumCodeRangeSize in test-spaces/Regress3540 as multiple of PageSize
Setting kMinimumCodeRangeSize as 3*pagesize. This will set the
constant correctly for PPC where pagesize is 4MB.

R=mlippautz@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com

BUG=
LOG=N

Review-Url: https://codereview.chromium.org/2206583004
Cr-Commit-Position: refs/heads/master@{#38450}
2016-08-08 15:56:48 +00:00
mlippautz
63f41fcdc5 Remove unused isolate parameter from NumberToSize and TryNumberToSize
BUG=

Review-Url: https://codereview.chromium.org/2225013002
Cr-Commit-Position: refs/heads/master@{#38449}
2016-08-08 15:56:47 +00:00
jarin
ad8e0e2554 [turbofan] Fix silly bug in loop variable analysis.
Review-Url: https://codereview.chromium.org/2222953003
Cr-Commit-Position: refs/heads/master@{#38448}
2016-08-08 15:50:57 +00:00
ahaas
89f3b98849 [wasm] Remove unused include.
BUG=v8:4914
R=gdeepti@chromium.org

Review-Url: https://codereview.chromium.org/2226613002
Cr-Commit-Position: refs/heads/master@{#38447}
2016-08-08 15:50:56 +00:00
machenbach
a40e08d0cf Revert of [test] Split TurboFan mjsunit expectations for variants. (patchset #5 id:80001 of https://codereview.chromium.org/2225843002/ )
Reason for revert:
Revert as asan bot blocks the clusterfuzz uploads:

https://build.chromium.org/p/client.v8/builders/V8%20Linux64%20ASAN/builds/14256

https://build.chromium.org/p/client.v8/builders/V8%20Mac64%20ASAN

Please add more skips on reland.

Original issue's description:
> [test] Split TurboFan mjsunit expectations for variants.
>
> R=machenbach@chromium.org
>
> Committed: https://crrev.com/5eed70c6b474635ccdf111e2269dbf33e629ce0b
> Cr-Commit-Position: refs/heads/master@{#38445}

TBR=mstarzinger@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Review-Url: https://codereview.chromium.org/2227733002
Cr-Commit-Position: refs/heads/master@{#38446}
2016-08-08 15:50:55 +00:00
mstarzinger
5eed70c6b4 [test] Split TurboFan mjsunit expectations for variants.
R=machenbach@chromium.org

Review-Url: https://codereview.chromium.org/2225843002
Cr-Commit-Position: refs/heads/master@{#38445}
2016-08-08 14:13:24 +00:00
bjaideep
c39660a4d3 PPC/s390: [stubs] Convert GrowElementsStub to TurboFan
Port eb84126923

Original commit message:

    One caveat: the Crankshaft stub used to preserve callee-clobbered double
    registers, which is contrary to any real platform ABI that we support. Since the
    only current use of this stub is in Crankshaft, the instruction there now must
    be marked as double-clobbering. This might result in a small performance
    regression. However, when this stub is eventually used in TF-generated code, it
    will be called from deferred code that can save doubles only on the rarely-taken
    path... something that Crankshaft can't do.

R=danno@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com

BUG=chromium:608675
LOG=N

Review-Url: https://codereview.chromium.org/2227673003
Cr-Commit-Position: refs/heads/master@{#38444}
2016-08-08 14:13:23 +00:00
jyan
dc88458120 S390: Decouple Add/Sub/Neg to 32/64 Bit Op
1. Decouple kS390_Add/Sub/Neg to
     kS390_Add32/Sub32/Neg32/Add64/Sub64/Neg64
2. Nuke kS390_Add/SubWithOverflow32
3. Add Support for Load-On-Condition to optimize AssembleArchBoolean

R=joransiu@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com, bjaideep@ca.ibm.com
BUG=

Review-Url: https://codereview.chromium.org/2220313002
Cr-Commit-Position: refs/heads/master@{#38443}
2016-08-08 14:05:12 +00:00
bgeron
0d9ce3acff [turbolizer] Allow selecting inputs also with numeric keyboard.
R=danno
BUG=

Review-Url: https://codereview.chromium.org/2227643002
Cr-Commit-Position: refs/heads/master@{#38442}
2016-08-08 13:07:25 +00:00
mstarzinger
003b6948b0 [test] Split Ignition cctest expectations for variants.
R=rmcilroy@chromium.org

Review-Url: https://codereview.chromium.org/2222873003
Cr-Commit-Position: refs/heads/master@{#38441}
2016-08-08 12:59:53 +00:00
jarin
4f6848827c [turbo] Also weaken induction variables in the typer.
Review-Url: https://codereview.chromium.org/2224943002
Cr-Commit-Position: refs/heads/master@{#38440}
2016-08-08 12:55:11 +00:00
machenbach
a2a5972395 [test] Deprecate test data download for most test suites
This removes the test-download method for all but
promises-aplus. They all only contain legacy code for
deleting old archives.

Only test262 needs to prepare sources on swarming, which is
moved to a new method, called unconditionally.

All references to --download-data and --download-data-only
in the infrastructure can be removed after this.

BUG=

Review-Url: https://codereview.chromium.org/2227613002
Cr-Commit-Position: refs/heads/master@{#38439}
2016-08-08 12:39:48 +00:00
bmeurer
76949ba4cc [turbofan] Consume number type hints for strict equality.
This allows us to consume the type hints gathered by the CompareIC
for the strict equality and inequality operators. Similar to abstract
equality We need to distinguish Number and NumberOrOddball feedback,
as strict equality doesn't truncate Oddball to Number.

R=epertoso@chromium.org
BUG=v8:4583

Review-Url: https://codereview.chromium.org/2222993003
Cr-Commit-Position: refs/heads/master@{#38438}
2016-08-08 12:36:02 +00:00
ahaas
f8938e5096 [turbofan] Remove the FloatXXSubPreserveNan operators.
This CL changes the semantics of FloatXXSub to match the semantics of
the semantics of FloatXXSubPreserveNan. Therefore there is no need
anymore for the FloatXXSubPreserveNan operators.

The optimizations in VisitFloatXXSub which are removed in this CL have
already been moved to machine-operator-reducer.cc in
https://codereview.chromium.org/2226663002

R=bmeurer@chromium.org

Review-Url: https://codereview.chromium.org/2220973002
Cr-Commit-Position: refs/heads/master@{#38437}
2016-08-08 12:09:50 +00:00
verwaest
2ed9e6e634 Only conditionally add inner scope when deserializing
BUG=v8:5209

Review-Url: https://codereview.chromium.org/2224793003
Cr-Commit-Position: refs/heads/master@{#38436}
2016-08-08 11:54:40 +00:00
hpayer
caf5c5a194 [heap] Use smaller minimum allocation limit growing step when optimizing for memory usage.
BUG=chromium:634900

Review-Url: https://codereview.chromium.org/2223493002
Cr-Commit-Position: refs/heads/master@{#38435}
2016-08-08 11:32:01 +00:00
marja
79d9e18cbe De-virtualize AstString & rearrange fields.
This saves memory when parsing.

BUG=

Review-Url: https://codereview.chromium.org/2220363002
Cr-Commit-Position: refs/heads/master@{#38434}
2016-08-08 11:24:19 +00:00
cbruni
b920d5f3ff [api] Stay in C++ when constructing an API-function
This CL applies the same optimization already present for calling API-function.
Execution::New and Execution::Call now both check whether the target is an
API-function and avoid calling out into the construct/call stub.

BUG=chromium:630217

Review-Url: https://codereview.chromium.org/2203353002
Cr-Commit-Position: refs/heads/master@{#38433}
2016-08-08 11:16:52 +00:00
bmeurer
b12a51c1f6 [turbofan] Also consume number type feedback for abstract equality.
This allows us to consume the type hints gathered by the CompareIC for
the abstract equality and inequality operators. We need to distinguish
Number and NumberOrOddball feedback now, as abstract equality doesn't
truncate null and undefined to Number.

R=epertoso@chromium.org
BUG=v8:4583

Review-Url: https://codereview.chromium.org/2222983002
Cr-Commit-Position: refs/heads/master@{#38432}
2016-08-08 11:12:18 +00:00
mstarzinger
3c437762c2 [turbofan] Enable debugger test that no longer fails.
R=bmeurer@chromium.org
TEST=mjsunit/debug-referenced-by
BUG=v8:4754

Review-Url: https://codereview.chromium.org/2225803002
Cr-Commit-Position: refs/heads/master@{#38431}
2016-08-08 10:31:33 +00:00
neis
a126da4369 [modules] Mark namespace variables as kCreatedInitialized.
R=adamk@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2210533002
Cr-Commit-Position: refs/heads/master@{#38430}
2016-08-08 10:27:16 +00:00
jarin
c38f1011e8 [turbofan] Generate loop exits in the bytecode graph builder.
Review-Url: https://codereview.chromium.org/2188533002
Cr-Commit-Position: refs/heads/master@{#38429}
2016-08-08 10:04:39 +00:00
epertoso
b79d7b0486 [x64] Zero/sign-extend loads to 64-bit registers.
Before this change we would first load an 8/16/32-bit value from memory into a 32-bit register, then zero/sign-extend from that register to a 64-bit one. Now we replace that pattern with a single movsx/movzx.

Ported from http://crrev.com/2183923003

R=bmeurer@chromium.org

Committed: https://crrev.com/4abecb7a27bd5fa073d0ff5fadb0c2bb248ef9f4
Review-Url: https://codereview.chromium.org/2220483003
Cr-Original-Commit-Position: refs/heads/master@{#38388}
Cr-Commit-Position: refs/heads/master@{#38428}
2016-08-08 10:00:45 +00:00
mstarzinger
476f80a98c [test] Split TurboFan cctest expectations for variants.
R=machenbach@chromium.org

Review-Url: https://codereview.chromium.org/2216373002
Cr-Commit-Position: refs/heads/master@{#38427}
2016-08-08 10:00:44 +00:00
neis
4df91581d1 [modules] Introduce new VariableLocation for module imports/exports.
Introduces a new VariableLocation MODULE for variables that live in a
module's export table.  Scope analysis sets this for the approriate variables.
Not yet supported by any backend.

Also, treats all imports as CONST bindings (including namespace imports), rather
than having new special variable modes.

BUG=

Review-Url: https://codereview.chromium.org/2199283002
Cr-Commit-Position: refs/heads/master@{#38426}
2016-08-08 09:49:27 +00:00
machenbach
e11d2006b6 [test] Remove deprecated test-runner flag
Remove --ignition-turbofan after:
https://codereview.chromium.org/2222913002/

BUG=v8:5238
TBR=rmcilroy@chromium.org, mstarzinger@chromium.org
NOTRY=true

Review-Url: https://codereview.chromium.org/2220383002
Cr-Commit-Position: refs/heads/master@{#38425}
2016-08-08 09:37:50 +00:00
verwaest
9ae45af5a4 Move zone_ to Scope
Pass in zone() explicitly to SloppyBlockFunctionMap::Declare and VariableMap::Declare instead.

BUG=v8:5209

Review-Url: https://codereview.chromium.org/2223773002
Cr-Commit-Position: refs/heads/master@{#38424}
2016-08-08 09:34:03 +00:00
hpayer
2b10616b77 [heap] Temporarily use old live object iterator to investigate Win 10 memory regression.
BUG=chromium:633537

Review-Url: https://codereview.chromium.org/2224823003
Cr-Commit-Position: refs/heads/master@{#38423}
2016-08-08 09:18:58 +00:00
rmcilroy
01e657d42f [Interpreter] Inline FastCloneRegExpStub to CreateRegExpLiteral bytecode handler.
BUG=v8:4280

Review-Url: https://codereview.chromium.org/2217193002
Cr-Commit-Position: refs/heads/master@{#38422}
2016-08-08 09:18:57 +00:00
neis
642c184fb4 [ast] Remove obsolete DECLARE_NODE_TYPE macro.
R=verwaest@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2222473002
Cr-Commit-Position: refs/heads/master@{#38421}
2016-08-08 09:15:08 +00:00
oth
2bf0b8c8ed [interpreter] Inline ForInFilter stub.
BUG=v8:4280
LOG=N

Review-Url: https://codereview.chromium.org/2220343002
Cr-Commit-Position: refs/heads/master@{#38420}
2016-08-08 09:07:15 +00:00
verwaest
0c699a5819 Don't analyze scopes outside of the compiled scope
The outer scope of the scope we are compiling doesn't need analysis. Either we're compiling top-level code in which case there is no outer scope. Or we are compiling code at the top-level (eval, function, module), and there won't be anything to resolve in the outer scope. Lastly we could also be compiling with a deserialized scope. In that case the outer scope is already resolved.

BUG=v8:5209

Review-Url: https://codereview.chromium.org/2224593002
Cr-Commit-Position: refs/heads/master@{#38419}
2016-08-08 08:48:38 +00:00
bmeurer
e6822a8338 [turbofan] Add initial support for growing stores.
Introduce a dedicated MaybeGrowFastElements simplified operator, which
tries to grow a fast elements backing store for a given element that
should be added to an array/object. Use that to lower a growing keyed
store to a sequence of

 1) check index is a valid array index,
 2) check stored value,
 3) maybe grow elements backing store (and deoptimize if it would
    normalize), and
 4) store the actual element.

The actual growing is done by two dedicated GrowFastDoubleElements
and GrowFastSmiOrObjectElements builtins, which are very similar to
the GrowArrayElementsStub that is used by Crankshaft.

Drive-by-fix: Turn CopyFixedArray into CopyFastSmiOrObjectElements
builtin, similar to the new growing builtins, so we don't need to
inline the store+write barrier for the elements into all optimized
code objects anymore.

Also fix a bug in the OperationTyper for NumberSilenceNaN, which was
triggered by this change.

BUG=v8:5272

Review-Url: https://codereview.chromium.org/2227493002
Cr-Commit-Position: refs/heads/master@{#38418}
2016-08-08 08:44:27 +00:00
ahaas
552601bb5f [turbofan] Lower "-0.0 - x" in the MachineOperatorReducer.
Up until now "-0.0 - x" was lowered in the instruction selector. I moved
the lowering now to the MachineOperatorReducer.

I did not remove the lowering from the instruction selector yet, I would
prefer to do that in a separate CL.

R=bmeurer@chromium.org

Review-Url: https://codereview.chromium.org/2226663002
Cr-Commit-Position: refs/heads/master@{#38417}
2016-08-08 08:40:36 +00:00
marja
74feddd5e1 Cleanup: Declaration doesn't need to know Zone.
It wasn't using it for anything.

R=verwaest@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2219853002
Cr-Commit-Position: refs/heads/master@{#38416}
2016-08-08 08:18:11 +00:00