Commit Graph

173 Commits

Author SHA1 Message Date
dcarney@chromium.org
49ffb141d9 [turbofan] IA: Uint32ToFloat64 supports mem operand.
BUG=
R=dcarney@chromium.org

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

Patch from Jing Bao <jing.bao@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24318 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-30 10:24:11 +00:00
jarin@chromium.org
6a07181cde Refactor BasicBlock to not use GenericNode.
To manage BasicBlock's predecessors and successors we now use plain
std::vector.

The change also moves bunch of method definitions from header files
to implementation files.

In zlib, the change brings 3x improvement in the scheduler's memory
consumption. The --turbo-stats flag says we go 169MB -> 55MB in
the scheduler, 383MB -> 268MB overall.

BUG=
R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24308 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-30 08:23:20 +00:00
jarin@chromium.org
5b742b356d Adding more missing deoptimization points in Turbofan.
BUG=
R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24289 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-29 13:37:58 +00:00
mstarzinger@chromium.org
b2aaac9404 Drop deprecated method for backing store from AccessBuilder.
R=bmeurer@chromium.org
TEST=cctest/test-simplified-lowering/RunLoadStoreArrayBuffer

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24282 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-29 11:35:01 +00:00
dcarney@chromium.org
058f24d0ce add missing inl includes
TBR=marja@chromium.org

BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24279 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-29 10:34:21 +00:00
Jacob.Bramley@arm.com
89ee8ec1b1 [turbofan] add some simplifications in the machine operator reducer
Simplify the '+', '-' and '%' operators with some basic constants (0, 1 or NaN).

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

BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24270 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-29 08:30:17 +00:00
dcarney@chromium.org
0ae4c7d6b6 build fix - add missing inl include
TBR=marja@chromium.org

BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24265 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-29 07:48:05 +00:00
dcarney@chromium.org
5d0e9a2496 [turbofan] basic block profiler
R=titzer@chromium.org, mstarzinger@chromium.org

BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24263 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-29 07:29:14 +00:00
bmeurer@chromium.org
8ff496edfb [turbofan] Drop obsolete test after r24236.
This was missing from the previous commit.

TBR=jarin@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24237 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-26 06:52:23 +00:00
bmeurer@chromium.org
432b1768e1 [turbofan] Add backend support for Float32Constant.
TEST=cctest,compiler-unittests,mjsunit
BUG=v8:3589
LOG=n
R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24217 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-25 08:56:02 +00:00
bmeurer@chromium.org
17a01814d6 Fix windows build after r24191.
TBR=titzer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24197 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-25 05:17:38 +00:00
titzer@chromium.org
219cae86b9 Add tests for representation change of constants.
R=jarin@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24191 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-24 16:04:05 +00:00
titzer@chromium.org
9fb5f564a9 Add support for Float32 representation changes.
R=bmeurer@chromium.org
BUG=v8:3589
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24180 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-24 11:55:07 +00:00
bmeurer@chromium.org
50c466e883 [turbofan] Add backend support for float32.
LOG=n
BUG=v8:3589
TEST=compiler-unittests,cctest
R=titzer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24179 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-24 11:08:35 +00:00
bmeurer@chromium.org
aeae854827 Fix windows build.
TBR=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24173 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-24 09:32:28 +00:00
bmeurer@chromium.org
deaf463bf1 [turbofan] Add length operand to LoadElement and StoreElement.
This is preliminary work, required to properly support bounds checking for typed array loads/stores.

TEST=compiler-unittests,cctest
R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24172 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-24 09:28:56 +00:00
mstarzinger@chromium.org
e4da4dbf23 Move test for reduction of Math.max to unittest.
R=bmeurer@chromium.org
TEST=compiler-unittests/JSBuiltinReducerTest.MathMax

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24147 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-23 11:40:00 +00:00
mstarzinger@chromium.org
5304f5e719 Move test for reduction of Math.imul to unittest.
R=bmeurer@chromium.org
TEST=compiler-unittests/JSBuiltinReducerTest.MathImul

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24144 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-23 11:26:49 +00:00
mstarzinger@chromium.org
0a4e98ba43 Extend JSBuiltinReducer to cover Math.max as well.
R=svenpanne@chromium.org
TEST=cctest/test-js-typed-lowering/BuiltinMathMax

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24135 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-23 08:16:54 +00:00
dcarney@chromium.org
1adad89746 [turbofan] don't call out to c
R=bmeurer@chromium.org

BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24122 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-22 13:56:03 +00:00
mstarzinger@chromium.org
7765a5fd88 Add JSBuiltinReducer for inlining well-known builtins.
R=titzer@chromium.org
TEST=cctest/test-js-typed-lowering/BuiltinMathImul

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24095 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-19 15:02:58 +00:00
titzer@chromium.org
2af8a21b93 Fix build.
TBR=mstarzinger@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24093 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-19 14:40:08 +00:00
titzer@chromium.org
8892385565 [turbofan] IA: Float64ToUint32 supports mem operand
BUG=
R=titzer@chromium.org

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

Patch from Weiliang Lin <weiliang.lin@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24092 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-19 14:25:13 +00:00
titzer@chromium.org
9253510f5e Fix windows warning.
TBR=svenpanne@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24076 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-19 10:52:19 +00:00
titzer@chromium.org
b35db9c63b Fix float truncations in typed array tests.
TBR=svenpanne@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24075 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-19 10:45:04 +00:00
titzer@chromium.org
43627e7ea8 Hack representation inference to assume current behavior of float32 loads and stores, which include implicit representation changes.
R=mstarzinger@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24072 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-19 09:56:12 +00:00
mstarzinger@chromium.org
4413d318a6 Unify use-sites of EnsureDeoptimizationSupport.
R=sigurds@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24024 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-18 09:02:36 +00:00
sigurds@chromium.org
68075b0a05 Reland "Add handling for argument adaptor frames to inlining."
Original: https://codereview.chromium.org/573703002/

Reland Fixes:
- Add deopt framestate to CollectStackTrace runtime call

R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24023 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-18 08:56:52 +00:00
sigurds@chromium.org
b8dd74779c Revert "Add handling for argument adaptor frames to inlining."
This reverts commit r24008.

TBR=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24010 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-17 15:00:57 +00:00
mstarzinger@chromium.org
79e095c8d0 Introduce simplified BooleanToNumber operator.
R=titzer@chromium.org
TEST=cctest/test-simplified-lowering/LowerBooleanToNumber

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24009 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-17 14:47:25 +00:00
sigurds@chromium.org
887b77aa83 Add handling for argument adaptor frames to inlining.
- Lazy deopt from inlined calls
- Lazy deopt from inlined calls with parameter mismatch

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

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24008 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-17 14:41:30 +00:00
titzer@chromium.org
cbf66711af Minor compiler pipeline refactoring. Inline UpdateSharedFunctionInfo and make Parser::Parse responsible for setting the strict mode of the CompilationInfo.
R=mstarzinger@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24001 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-17 12:34:46 +00:00
mstarzinger@chromium.org
2c04afb9ce Avoid usage of temporary MachineOperatorBuilder.
R=titzer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23982 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-16 16:20:10 +00:00
mstarzinger@chromium.org
d20bd6dac1 Adapt some typed lowering unit tests after r23972.
R=rossberg@chromium.org
TEST=cctest/test-js-typed-lowering

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23973 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-16 12:17:40 +00:00
mstarzinger@chromium.org
d313551a3e Disable lowering to StringAdd due to various issues.
R=titzer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23961 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-16 08:29:46 +00:00
jarin@chromium.org
00e90b7e6e Remove deoptimization by patching the call stack.
We go back to patching the code for lazy deoptimization because ICs need the on-stack return address to read/update the IC address/state.

The change also fixes bunch of tests, mostly by adding more deoptimization points.

(We still need to add code to ensure lazy deopt patching does not overwrite ICs and other lazy deopts; this is coming next.)

BUG=
R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23934 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-15 09:21:39 +00:00
bmeurer@chromium.org
578aeb0b0c [turbofan] Some common operators are globally shared singletons.
TEST=compiler-unittests,cctest
R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23913 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-12 11:59:26 +00:00
sigurds@chromium.org
4ec63ff97e Reland
- "Switch inlining to use simplified instead of machine loads."
- "Add copy support in inliner."

Reland fixes:
 - size_t conversion for 64bit arches
 - Don't call front() on empty vector
   (triggers assertion on windows)
 - turbo_inlining now implies turbo_types, as
   it requires simplified lowering.

R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23911 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-12 11:06:37 +00:00
mstarzinger@chromium.org
b930ef1012 Fix typed lowering of JSAdd on non-number inputs.
R=rossberg@chromium.org
TEST=mjsunit/regress/regress-3476

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23883 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-11 16:09:21 +00:00
mstarzinger@chromium.org
4bee89e03c Fix typed lowering of ToBoolean on NaN input.
R=rossberg@chromium.org
TEST=webkit/convert-nan-to-bool

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23875 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-11 12:38:16 +00:00
bmeurer@chromium.org
bfa3884ae0 [turbofan] Machine operators are globally shared singletons.
TEST=compiler-unittests,cctest
R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23864 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-11 10:37:49 +00:00
bmeurer@chromium.org
cf293f7780 [turbofan] Lower JSStoreProperty during JS typed lowering.
Note that we cannot yet emit a diamond here (patch is ready), because
the scheduler is still broken wrt. free floating control (seems related
although this diamond is not free floating).

TEST=cctest
R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23838 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-10 12:29:48 +00:00
bmeurer@chromium.org
6bb08db27e [turbofan] Next step towards shared operators.
TEST=compiler-unittests,cctest
R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23837 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-10 12:23:45 +00:00
mstarzinger@chromium.org
de0b213cf2 Switch inlining to use simplified instead of machine loads.
R=sigurds@chromium.org
TBR=bmeurer@chromium.org
TEST=cctest/test-run-inlining --turbo-types

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23829 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-10 09:48:03 +00:00
bmeurer@chromium.org
4f5b0911db Revert "Switch inlining to use simplified instead of machine loads.", "Fix size_t to int conversion compile error." and "Add copy support in inliner.".
This reverts commits r23813, r23805 and r23804 for Windows breakage.

TBR=mstarzinger@chromium.org,sigurds@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23816 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-10 06:39:25 +00:00
mstarzinger@chromium.org
947726a79c Switch inlining to use simplified instead of machine loads.
R=sigurds@chromium.org
TEST=cctest/test-run-inlining --turbo-types

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23813 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-09 15:55:47 +00:00
bmeurer@chromium.org
bbd96b97e4 [turbofan] Add support for overflow add/sub to the MachineOperatorReducer.
TEST=base-unittests,compiler-unittests,cctest
R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23809 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-09 14:18:17 +00:00
sigurds@chromium.org
1f9215ba8d Add copy support in inliner.
Refactors JSGraph to ensure that the zone operators are created in
can be different from the Graph's zone.

R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23804 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-09 13:20:09 +00:00
bmeurer@chromium.org
2bbeb652ee [turbofan] Fix the node matchers.
E.g. make sure that Int32Matcher matches only int32 constants, and
Float64Matcher matches only float64 constants.

Also remove the confusing CommonOperatorTraits, which are too easy
to use in a wrong way.

TEST=compiler-unittests,cctest
R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23768 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-08 09:16:11 +00:00
titzer@chromium.org
09dccec9f4 Platform-dependent turbofan tests.
R=jarin@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23736 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-05 13:22:27 +00:00