Commit Graph

29218 Commits

Author SHA1 Message Date
gdeepti
e936685b0d [wasm] Remove incorrect assembler check.
BUG=chromium:644670
R=ahaas@chromium.org, titzer@chromium.org

Review-Url: https://chromiumcodereview.appspot.com/2438593003
Cr-Commit-Position: refs/heads/master@{#40451}
2016-10-20 07:39:15 +00:00
kozyatinskiy
859eddbdef [inspector] migrate stepping related methods to debug-interface
* introduced DebugInterface::PrepareStep and DebugInterface::ClearStepping method.
Inspector calls these methods only on pause and not interseted in calling this for not current break_id so we don't need to expose debug interface with break_id argument and can only check that current break_id is valid.

BUG=chromium:652939,v8:5510
R=yangguo@chromium.org,dgozman@chromium.org

Review-Url: https://chromiumcodereview.appspot.com/2423153002
Cr-Commit-Position: refs/heads/master@{#40450}
2016-10-20 05:37:30 +00:00
aseemgarg
cf9ee0ec6c [wasm] simd scalar lowering F32x4Add and I32x4Add
BUG=v8:4124
TEST:test-run-wasm-simd-lowering
R=titzer@chromium.org,bradnelson@chromium.org,gdeepti@chromium.org

Review-Url: https://chromiumcodereview.appspot.com/2294743003
Cr-Commit-Position: refs/heads/master@{#40448}
2016-10-20 00:20:07 +00:00
alph
71e390faf6 [profiler] Update cpu profile tracing format.
Encapsulate nodes and samples into cpuProfile object.

BUG=chromium:406277

Review-Url: https://chromiumcodereview.appspot.com/2425093002
Cr-Commit-Position: refs/heads/master@{#40447}
2016-10-19 19:16:15 +00:00
ahaas
9902368259 [wasm] Trim graph before scheduling.
The scheduler expects a trimmed graph, so we have to trim the graph
before scheduling.

R=titzer@chromium.org, bmeurer@chromium.org
TEST=cctest/test-run-wasm/RunWasmCompiled_GraphTrimming

Review-Url: https://chromiumcodereview.appspot.com/2428443002
Cr-Commit-Position: refs/heads/master@{#40446}
2016-10-19 16:21:36 +00:00
jkummerow
03b8554109 [stubs] KeyedStoreIC: Use BuildFastLoop() helper
Bonus: CodeStubAssembler::StringIndexOfChar gets the same treatment.
Review-Url: https://chromiumcodereview.appspot.com/2435713003
Cr-Commit-Position: refs/heads/master@{#40445}
2016-10-19 16:18:33 +00:00
ulan
9eff39aebf [heap] Start sweeper tasks after evacuation.
This allows us to use more tasks for parallel evacuation.

BUG=

Review-Url: https://chromiumcodereview.appspot.com/2428043002
Cr-Commit-Position: refs/heads/master@{#40444}
2016-10-19 15:12:08 +00:00
lpy
65b3af466e Use TracedValue in runtime statistics.
We introduced TracedValue into V8 tracing previously, this patch uses it to
build JSON string of runtime statistics instead of using stringstream as buffer.

BUG=v8:5089
LOG=N

Review-Url: https://chromiumcodereview.appspot.com/2418303002
Cr-Commit-Position: refs/heads/master@{#40443}
2016-10-19 14:56:35 +00:00
jochen
eafa9206ac Bail out in AstTraversalVisitor::VisitFunctionBody for lazy functions
R=verwaest@chromium.org,mstarzinger@chromium.org
BUG=

Review-Url: https://chromiumcodereview.appspot.com/2425563003
Cr-Commit-Position: refs/heads/master@{#40442}
2016-10-19 14:50:32 +00:00
ziyang
489843f552 PPC/s390: [builtins] Remove the unused AllocationSite slot from ConstructFrame.
Port 77419488a9

Original commit message:

  This slot is completely unused and always undefined anyways, so there's
  no need to maintain the slot during object construction.

R=bmeurer@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, bjaideep@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com
BUG=

Review-Url: https://chromiumcodereview.appspot.com/2429983002
Cr-Commit-Position: refs/heads/master@{#40441}
2016-10-19 14:21:54 +00:00
gsathya
cade0f4ba5 [promises] move PromiseResolveThenableJob debugging code to runtime function
Moving the rest of the debugging code is blocked on making IsPromise inlinable.

BUG=v8:5343

Review-Url: https://chromiumcodereview.appspot.com/2431793003
Cr-Commit-Position: refs/heads/master@{#40440}
2016-10-19 14:15:28 +00:00
bjaideep
91c99de0a1 s390x: [wasm] Adding r3 to GP return register list
Taking similar approach as ia32 which also has 1 return register
eax (as per ia32's ABI) but uses edx as return register as well.
This will fix some failures on s390x where a function returns 2
values.

R=titzer@chromium.org, bmeurer@chromium.org

BUG=
LOG=N

Review-Url: https://chromiumcodereview.appspot.com/2426233002
Cr-Commit-Position: refs/heads/master@{#40439}
2016-10-19 13:48:45 +00:00
titzer
07094aaf7d [wasm] Fix minor ternary mistake.
R=clemensh@chromium.org
BUG=

Review-Url: https://chromiumcodereview.appspot.com/2431183005
Cr-Commit-Position: refs/heads/master@{#40438}
2016-10-19 13:47:27 +00:00
jochen
e4ac0105b8 Move DivisionByConstant template instantiations to cpp file
R=bmeurer@chromium.org
BUG=

Review-Url: https://chromiumcodereview.appspot.com/2437733002
Cr-Commit-Position: refs/heads/master@{#40436}
2016-10-19 13:32:34 +00:00
bmeurer
b888150afd [interpreter] Also optimize small functions earlier.
For fullcodegen the RuntimeProfiler has a shortcut that allows it to
tier up small functions earlier, when enough type feedback is available.
Port the same optimization for the Ignition+TurboFan pipeline.

R=mstarzinger@chromium.org

Review-Url: https://chromiumcodereview.appspot.com/2427283004
Cr-Commit-Position: refs/heads/master@{#40435}
2016-10-19 13:12:24 +00:00
titzer
418b239f0b [wasm] Use a Managed<WasmModule> to hold metadata about modules.
This CL refactors the handling of metadata associated with WebAssembly
modules to reduce the duplicate marshalling of data from the C++ world
to the JavaScript world. It does this by wrapping the C++ WasmModule*
object in a Foreign that is rooted from the on-heap WasmCompiledModule
(which is itself just a FixedArray). Upon serialization, the C++ object
is ignored and the original WASM wire bytes are serialized. Upon
deserialization, the C++ object is reconstituted by reparsing the bytes.

This is motivated by increasing complications in implementing the JS
API, in particular WebAssembly.Table, which must perform signature
canonicalization across instances.

Additionally, this CL implements the proper base + offset initialization
behavior for tables.

R=rossberg@chromium.org,bradnelson@chromium.org,mtrofin@chromium.org,yangguo@chromium.org
BUG=v8:5507, chromium:575167, chromium:657316

Review-Url: https://chromiumcodereview.appspot.com/2424623002
Cr-Commit-Position: refs/heads/master@{#40434}
2016-10-19 13:07:22 +00:00
yangguo
61dc1de0f6 [debugger] remove test for legacy JSON API to return V8's version.
R=jgruber@chromium.org
BUG=v8:5510

Review-Url: https://chromiumcodereview.appspot.com/2430673002
Cr-Commit-Position: refs/heads/master@{#40432}
2016-10-19 12:35:34 +00:00
jarin
7296bd4980 [turbofan] Remove representation changes for machine constants.
No machine constants should reach the representation selector.

Review-Url: https://chromiumcodereview.appspot.com/2431693002
Cr-Commit-Position: refs/heads/master@{#40430}
2016-10-19 12:05:49 +00:00
cbruni
b7ff0d7136 [stubs] Implement TF builtin for Object.create fast paths
BUG=

Review-Url: https://chromiumcodereview.appspot.com/2385423005
Cr-Commit-Position: refs/heads/master@{#40429}
2016-10-19 11:34:04 +00:00
bmeurer
3c10b97c34 [interpreter] Don't canonicalize results of feedback collecting handlers.
For binary operations that collect feedback (in Ignition), don't
canonicalize when the operation itself is already performed in
Float64. This is the first step to fix the performance difference
we still see between TurboFan and TurboFan+Ignition.

R=mythria@chromium.org

Review-Url: https://chromiumcodereview.appspot.com/2431363002
Cr-Commit-Position: refs/heads/master@{#40428}
2016-10-19 11:13:47 +00:00
Benedikt Meurer
09410621f9 [turbofan] Don't introduce PlainPrimitiveToNumber for String inputs.
During JSTypedLowering we can decide to insert PlainPrimitiveToNumber
operators on the inputs to still utilize pure Number operators, when
the type feedback on the numeric binary operation is NumberOrOddball.
However that is not beneficial if the inputs can be Strings, that is
we cannot statically rule out String based on input type, as that
inserts a ToNumber stub call into the hot code path.

This repairs the NavierStokes regression with Ignition on Octane.

R=jarin@chromium.org

Review URL: https://codereview.chromium.org/2432143003 .

Cr-Commit-Position: refs/heads/master@{#40427}
2016-10-19 10:33:08 +00:00
titzer
acf99a893c [wasm] Improve naming consistency for WASM instances.
R=clemensh@chromium.org,ahaas@chromium.org
BUG=

Review-Url: https://chromiumcodereview.appspot.com/2428343005
Cr-Commit-Position: refs/heads/master@{#40426}
2016-10-19 10:30:38 +00:00
jgruber
ae64bdce4e [debugger] Remove unused arg from setPauseOnExceptionsImpl
BUG=v8:5530

Review-Url: https://chromiumcodereview.appspot.com/2436613002
Cr-Commit-Position: refs/heads/master@{#40425}
2016-10-19 10:25:12 +00:00
jkummerow
194c43a103 [stubs] Port KeyedStoreIC dispatcher to TurboFan
BUG=

Review-Url: https://chromiumcodereview.appspot.com/2403483002
Cr-Commit-Position: refs/heads/master@{#40423}
2016-10-19 10:11:45 +00:00
Benedikt Meurer
8b94aee525 [turbofan] Also remove minus zero check for rhs of CheckedInt32Add.
Similar to http://crrev.com/2410883003 we don't need to do a minus zero
check for the right hand side of CheckedInt32Add, because we already
know that the left hand side cannot be minus zero, and the only way that
addition can yield -0 is (-0) + (-0).

R=jarin@chromium.org

Review URL: https://codereview.chromium.org/2431233003 .

Cr-Commit-Position: refs/heads/master@{#40421}
2016-10-19 08:28:14 +00:00
ahaas
2f3ca961c7 [turbofan] Use uint32 to store the number of control outputs instead of uint16.
Using uint32 to store the the number of control outputs allows WebAssembly switches to have more than 2^16 case.

BUG=v8:5531
TEST=mjsunit/regress/wasm/regression-5531
R=titzer@chromium.org

Review-Url: https://chromiumcodereview.appspot.com/2425983002
Cr-Commit-Position: refs/heads/master@{#40420}
2016-10-19 07:25:51 +00:00
bmeurer
efe4fd4b5b [builtins] Optimize Number.parseInt for HeapNumbers in Signed32 range.
When the input to Number.parseInt is a HeapNumber in Signed32 range, we
can just return the (truncated) input value (i.e. we need to map -0 to
0 due to the ToString conversion).

R=jarin@chromium.org

Review-Url: https://chromiumcodereview.appspot.com/2432923002
Cr-Commit-Position: refs/heads/master@{#40419}
2016-10-19 05:41:31 +00:00
bmeurer
3a7eac15e8 [turbofan] Fix invalid Number.parseInt inlining.
The inlined version of Number.parseInt did a ToInt32 truncation, which
is not what the EcmaScript specification says.

R=jarin@chromium.org
BUG=v8:5538

Review-Url: https://chromiumcodereview.appspot.com/2432143002
Cr-Commit-Position: refs/heads/master@{#40418}
2016-10-19 05:17:52 +00:00
zhengxing.li
572c231c98 X87: [ic] Unify CallIC feedback collection and handling.
port 308788b306 (r40397)

  original commit message:
  Consistently collect CallIC feedback in fullcodegen and Ignition, even
  for possibly direct eval calls, that were treated specially so far, for
  no apparent reason. With the upcoming SharedFunctionInfo based CallIC
  feedback, we might be able to even inline certain direct eval calls, if
  they manage to hit the eval cache. More importantly, this patch
  simplifies the collection and dealing with CallIC feedback (and as a
  side effect fixes an inconsistency with feedback for super constructor
  calls).

BUG=

Review-Url: https://chromiumcodereview.appspot.com/2429623005
Cr-Commit-Position: refs/heads/master@{#40416}
2016-10-19 03:32:41 +00:00
kozyatinskiy
550910445f [inspector] align console implementation with spec
console should be non enumerable.

BUG=chromium:656826
R=dgozman@chromium.org

Review-Url: https://chromiumcodereview.appspot.com/2428473003
Cr-Commit-Position: refs/heads/master@{#40414}
2016-10-19 02:02:20 +00:00
kozyatinskiy
377533fc06 [inspector] move changeBreakpointState from debugger-script to native
* introduced v8::DebugInterface::ChangeBreakOnException(Isolate*,ExceptionBreakState);
* migrated inspector to new API;
* added cctest for new API;
* added inspector test for setPauseOnExceptionState.

BUG=chromium:652939,v8:5510
R=dgozman@chromium.org,yangguo@chromium.org

Review-Url: https://chromiumcodereview.appspot.com/2396193002
Cr-Commit-Position: refs/heads/master@{#40413}
2016-10-19 02:00:57 +00:00
bjaideep
78085e4d7f PPC/s390: [ic] Unify CallIC feedback collection and handling.
Port 308788b306

Original commit message:

    Consistently collect CallIC feedback in fullcodegen and Ignition, even
    for possibly direct eval calls, that were treated specially so far, for
    no apparent reason. With the upcoming SharedFunctionInfo based CallIC
    feedback, we might be able to even inline certain direct eval calls, if
    they manage to hit the eval cache. More importantly, this patch
    simplifies the collection and dealing with CallIC feedback (and as a
    side effect fixes an inconsistency with feedback for super constructor
    calls).

R=bmeurer@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/2425243003
Cr-Commit-Position: refs/heads/master@{#40412}
2016-10-18 22:59:12 +00:00
gdeepti
0c6354e03b [wasm] GrowMemory should use maximum size declared in WebAssembly.Memory
BUG=

Review-Url: https://codereview.chromium.org/2410763002
Cr-Commit-Position: refs/heads/master@{#40411}
2016-10-18 22:19:53 +00:00
jochen
d1daae6221 Fix inspector test in components build
R=jgruber@chromium.org,machenbach@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2421303002
Cr-Commit-Position: refs/heads/master@{#40410}
2016-10-18 20:08:12 +00:00
bmeurer
669a084a2b [builtins] Fix typo in Number.parseInt TurboFan builtin.
http://crrev.com/2424403002 contained a typo comparing the input map
against the undefined constant rather than the HeapNumber map, which
tanks the case where Number.parseInt is used instead of Math.floor.

TBR=epertoso@chromium.org
BUG=v8:5049

Review-Url: https://codereview.chromium.org/2425703007
Cr-Commit-Position: refs/heads/master@{#40409}
2016-10-18 20:01:15 +00:00
jpp
07ac97835d [V8][asm.js] Fixes a bug in comma-expression validation.
Comma expressions need to special-handle function calls. When validating
the rhs of a Comma, the validatior needs to ensure that it returns
AsmType::Float() if the function being called is fround().

BUG= https://bugs.chromium.org/p/v8/issues/detail?id=5528

Review-Url: https://chromiumcodereview.appspot.com/2426473007
Cr-Commit-Position: refs/heads/master@{#40408}
2016-10-18 19:05:42 +00:00
mythria
d875e2cf80 [Interpreter] Collect feedback about Oddballs in Add, Mul, Div, Modulus stubs.
Add support to collect feedback about oddballs in Add, Mul, Div and Modulus stubs.
Turbofan uses NumberOrOddball feedback to reduce the number of deoptimizations.

BUG=v8:4280, v8:5400
LOG=N

Review-Url: https://codereview.chromium.org/2406263002
Cr-Commit-Position: refs/heads/master@{#40407}
2016-10-18 16:35:28 +00:00
jwolfe
21fda06c05 [turbofan] Implement JSBuiltinReducer for String.prototype[Symbol.iterator].
BUG=v8:5388

Review-Url: https://codereview.chromium.org/2422383002
Cr-Commit-Position: refs/heads/master@{#40406}
2016-10-18 16:33:05 +00:00
gsathya
0d8b253c34 Move PromiseNextMicrotaskID to cpp
BUG=v8:5343

Review-Url: https://codereview.chromium.org/2425553003
Cr-Commit-Position: refs/heads/master@{#40405}
2016-10-18 15:41:46 +00:00
kozyatinskiy
8bb2cef9c3 [inspector] introduce debug-interface.h
debug-interface.h contains part of v8-debug.h that is used by src/inspector.

BUG=v8:5510
R=dgozman@chromium.org, yangguo@chromium.org

Review-Url: https://codereview.chromium.org/2423713003
Cr-Commit-Position: refs/heads/master@{#40404}
2016-10-18 15:15:21 +00:00
titzer
7bbfe5c81a [wasm] Compare wasm signatures against SMI constants for more efficient check.
R=ahaas@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2429833002
Cr-Commit-Position: refs/heads/master@{#40403}
2016-10-18 13:43:01 +00:00
epertoso
b6c152e967 [stubs] Removes the BranchIf.*() methods from CodeAssembler, changes their uses to Branch().
BranchIf and helpers were introduced when exporting the schedule from the RawMachineAssembler was not ensuring that the CFG was well-form. These methods, that were used to introduce blocks to ensure edge-split form, are now unnecessary.

BUG=

Review-Url: https://codereview.chromium.org/2426923002
Cr-Commit-Position: refs/heads/master@{#40402}
2016-10-18 13:28:22 +00:00
bmeurer
6c85285b98 [intrinsics] Nuke %HasCachedArrayIndex and %GetCachedArrayIndex.
These intrinsics are unused now, and so we can drop all the code in
fullcodegen and Crankshaft that deals with those. TurboFan and Ignition
never tried to optimize those.

R=mstarzinger@chromium.org
BUG=v8:5049

Review-Url: https://codereview.chromium.org/2427673004
Cr-Commit-Position: refs/heads/master@{#40401}
2016-10-18 13:13:36 +00:00
ahaas
3ebb74e0a2 [wasm] Use branch hint for the -1 check in I(32|64)Div.
R=titzer@chromium.org

Review-Url: https://codereview.chromium.org/2413343002
Cr-Commit-Position: refs/heads/master@{#40400}
2016-10-18 12:55:05 +00:00
bmeurer
1b4e0fcaea [builtins] Migrate Number.parseInt to TurboFan builtin.
R=epertoso@chromium.org
BUG=v8:5049

Review-Url: https://codereview.chromium.org/2424403002
Cr-Commit-Position: refs/heads/master@{#40399}
2016-10-18 12:45:01 +00:00
ivica.bogosavljevic
7499d92d7f MIPS64: Fix Word32Compare turbofan operator implementation when comparing signed with unsigned operand
MIPS64 doesn't support Word32 compare instructions. Instead it relies
that the values in registers are correctly sign-extended and uses
Word64 comparison instead. This behavior is correct in most cases,
but doesn't work when comparing signed with unsigned operands.
The solution proposed here tries to match a comparison of signed
with unsigned operand, and perform Word32Compare simulation only
in those cases. Unfortunately, the solution is not complete because
it might skip cases where Word32 compare simulation is needed, so
basically it is a hack.

BUG=
TEST=mjsunit/compiler/uint32

Review-Url: https://codereview.chromium.org/2391393003
Cr-Commit-Position: refs/heads/master@{#40398}
2016-10-18 12:13:58 +00:00
bmeurer
308788b306 [ic] Unify CallIC feedback collection and handling.
Consistently collect CallIC feedback in fullcodegen and Ignition, even
for possibly direct eval calls, that were treated specially so far, for
no apparent reason. With the upcoming SharedFunctionInfo based CallIC
feedback, we might be able to even inline certain direct eval calls, if
they manage to hit the eval cache. More importantly, this patch
simplifies the collection and dealing with CallIC feedback (and as a
side effect fixes an inconsistency with feedback for super constructor
calls).

R=mvstanton@chromium.org, mythria@chromium.org
BUG=v8:2206,v8:4280,v8:5267

Review-Url: https://codereview.chromium.org/2426693002
Cr-Commit-Position: refs/heads/master@{#40397}
2016-10-18 12:01:22 +00:00
mythria
cad36659b1 [turbofan] When inlining JSCallConstruct receiver should be set to the hole.
When inlining JSCallConstruct in turbofan, receiver is initialized to model
the behaviour of constructor. When an implicit receiver is not required the
receiver value should be set to the hole value instead of undefined value.
When initializing the receiver via super calls, we check that the receiver
is the hole value.

BUG=chromium:653407

Review-Url: https://codereview.chromium.org/2424123002
Cr-Commit-Position: refs/heads/master@{#40396}
2016-10-18 11:48:15 +00:00
yangguo
35aee89a68 Fix android build.
TBR=jochen@chromium.org

Review-Url: https://codereview.chromium.org/2426913002
Cr-Commit-Position: refs/heads/master@{#40395}
2016-10-18 11:17:03 +00:00
hpayer
60cb6013d4 [heap] Reland move slot filtering logic into sweeper.
BUG=chromium:648568

Review-Url: https://codereview.chromium.org/2428493003
Cr-Commit-Position: refs/heads/master@{#40393}
2016-10-18 10:07:08 +00:00