Commit Graph

417 Commits

Author SHA1 Message Date
verwaest@chromium.org
179ac2cd0c Improve smi support in crankshaft
- Recover smi in phis if inputs are smi-typed
- Don't record smi-typed values as pointers

BUG=
R=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/16240003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14926 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-03 16:57:36 +00:00
yangguo@chromium.org
7f8a3d803c Make assertion scopes thread safe.
R=svenpanne@chromium.org
BUG=

Review URL: https://chromiumcodereview.appspot.com/15691017

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14919 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-03 15:32:22 +00:00
verwaest@chromium.org
1a4a904bef Replace DeoptimizeOnUndefined with whitelisting AllowUndefinedAsNan
R=danno@chromium.org

Review URL: https://chromiumcodereview.appspot.com/15952007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14894 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-30 09:11:06 +00:00
olivf@chromium.org
88755fb22a Convert ToBooleanStub to a HydrogenStub. Currently just using the existing HBranch instruction, which is still fully implemented in Lithium. Will refactor HBranch in a next CL.
[
CL breaks mips, since the deoptimizer in Deoptimizer::DoTranslateCommand(...) does not convert smis passed to the stub via a0.
]

BUG=
R=verwaest@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14886 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-29 14:49:28 +00:00
svenpanne@chromium.org
7bfe1436d3 Improve range analysis for modulo operations.
R=mstarzinger@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14884 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-29 12:42:04 +00:00
verwaest@chromium.org
7d32e7451f Don't explicitly pass requested representations to constants; implement ConstantS
R=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/15932011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14874 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-29 10:47:55 +00:00
verwaest@chromium.org
4fcaace0a9 Always deoptimize on undefined if a double value implicitly gets converted.
R=svenpanne@chromium.org

Review URL: https://chromiumcodereview.appspot.com/16126002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14832 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-28 06:31:05 +00:00
verwaest@chromium.org
aa2444269b Fix the hole loading optimization.
- Holes are only ever loaded as double or tagged.
- Change to tagged has to deoptimize on undefined (no implicit
  conversions from double the hole NaN -> tagged undefined).

BUG=
R=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/16099006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14829 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-27 17:33:14 +00:00
verwaest@chromium.org
a64b7f926f Remove HCheckSmi, LCheckSmi and rename LCheckSmiAndReturn to LCheckSmi.
R=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/15841007

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14816 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-27 09:58:46 +00:00
verwaest@chromium.org
3cb8f95c91 Tag smi-constants as smi. This also fixes code that copies holes into arrays.
BUG=
R=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/15861009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14814 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-27 08:43:58 +00:00
verwaest@chromium.org
2a28f53b18 Fix hole handling, and ensure smi representation is handled properly
R=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/16013003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14807 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-24 13:40:02 +00:00
titzer@chromium.org
77f85fa0d3 Remove offset() and is_in_object() from hydrogen and lithium LoadNamedField and StoreNamedField and use the appropriate methods on HObjectAccess instead
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14806 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-24 12:40:08 +00:00
verwaest@chromium.org
c417df74f4 Update representation-from-uses to support smi.
R=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/15692004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14801 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-24 12:29:37 +00:00
verwaest@chromium.org
c9a22a3c8d Replace tagged keys for fast access by smi, and use smi in boundscheck.
BUG=
R=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/15763004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14794 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-24 08:52:35 +00:00
titzer@chromium.org
94b4240f5c Introduce ObjectAccess, which is used by LoadNamedField and StoreNamedField to denote what parts of an object are referred to by a given load or store. Refactor HGraphBuilder to use ObjectAccess, which removes the need to manually set GVN flags and simplifies the code as well.
Review URL: https://codereview.chromium.org/14284010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14791 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-24 08:38:21 +00:00
verwaest@chromium.org
d057410e20 Require smi for keyed store to smi.
R=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/15884002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14779 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-23 15:01:17 +00:00
verwaest@chromium.org
632f591884 Tag length of FixedArrayBase and smi-array[x] as smi representation
R=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/15858006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14778 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-23 14:38:39 +00:00
yangguo@chromium.org
a1e18bdf3c Improve SeqStringSetChar implementation.
R=jkummerow@chromium.org
BUG=

Review URL: https://chromiumcodereview.appspot.com/15743006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14769 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-23 09:51:06 +00:00
jkummerow@chromium.org
f691f48c14 Avoid creating duplicate entries for a value when merging HSimulates
R=yangguo@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14766 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-23 09:17:01 +00:00
verwaest@chromium.org
308e69755b Implement HChange support for Smis and use it in Load/StoreNameField
BUG=
R=verwaest@chromium.org

Review URL: https://chromiumcodereview.appspot.com/15303004

Patch from Daniel Clifford <danno@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14765 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-23 08:32:07 +00:00
verwaest@chromium.org
d1b5a2518d Handle holes in smi-untag from LoadKeyed requiring hole handling.
R=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/15737003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14756 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-22 16:32:33 +00:00
verwaest@chromium.org
b353b1d131 Don't allow copying holes to fields.
R=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/15745006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14753 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-22 15:33:53 +00:00
titzer@chromium.org
5746d38351 Fix code gen bug on arm and mips; SeqStringSetChar overwrites a register; Add better default PrintDataTo for HInstruction
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14710 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-16 14:27:39 +00:00
olivf@chromium.org
8bbe48c7b9 Add a HBreak instruction for debugging
BUG=
R=jkummerow@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14691 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-15 14:24:47 +00:00
titzer@chromium.org
68eb1e50ca Improve dead code elimination by transitively marking live code and removing all dead code. Replace unreachable phi removal algorithm with the new dead code elimination pass, which is more thorough.
Review URL: https://codereview.chromium.org/14676011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14661 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-14 13:10:52 +00:00
danno@chromium.org
6862babfd6 Remove HIsNilAndBranch (it's now unused)
R=mstarzinger@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14660 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-14 12:56:53 +00:00
svenpanne@chromium.org
c1bc396c2d Consistently assume that arithmetic operations can overflow unless one can prove the opposite.
Previously, HDiv never had its CanOverflow flag cleared and HMod had
inverted logic (compared to HAdd, HSub and HMul). Minor cleanups on the way.

R=jkummerow@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14644 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-13 13:48:15 +00:00
jkummerow@chromium.org
7636fdec27 Fix missing hole check for loads from Smi arrays when all uses are changes
BUG=chromium:233737

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14638 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-13 11:58:10 +00:00
danno@chromium.org
05e8e0e7b4 Elide hole checks on KeyedLoads of holey double arrays
Improves NavierStokes by about 5%

R=ulan@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14630 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-13 07:35:26 +00:00
verwaest@chromium.org
df57747fc4 Track heap objects.
R=danno@chromium.org

Review URL: https://chromiumcodereview.appspot.com/14996004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14625 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-10 17:17:50 +00:00
mstarzinger@chromium.org
8829a94c24 Remove obsolete HArrayLiteral instruction.
R=ulan@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14613 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-10 09:52:08 +00:00
mstarzinger@chromium.org
efe91b56f6 Remove obsolete HObjectLiteral instruction.
R=ulan@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14612 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-10 09:47:05 +00:00
mvstanton@chromium.org
ef5211d8af Parallel compilation bug: LCallNewArray dereferenced a handle unnecessarily.
BUG=
R=mstarzinger@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14599 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-08 16:48:27 +00:00
verwaest@chromium.org
52008429b7 Use mutable heapnumbers to store doubles in fields.
R=danno@chromium.org

Review URL: https://chromiumcodereview.appspot.com/14850006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14597 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-08 15:02:08 +00:00
danno@chromium.org
bd9274436c Bias commutative single-use register inputs and support lea adds
This improves register allocation for many common add and multiply patterns on ia32 and x64 by reducing register pressure.

R=jkummerow@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14587 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-08 08:37:24 +00:00
titzer@chromium.org
dbcd0e925a Remove HLoadElements instruction and replace with use of more general HLoadNamedField. This removes the need for both the hydrogen and lithium instructions and allows both kinds of loads to be GVN'd.
Review URL: https://codereview.chromium.org/14556020

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14542 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-03 12:21:16 +00:00
jkummerow@chromium.org
0ac47f23d8 Remove 'unanimous use observations' rule from Phi representation inference
Review URL: https://codereview.chromium.org/14840014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14536 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-03 08:50:48 +00:00
mstarzinger@chromium.org
04fdcad547 Fix HConstant::InNewSpace() for parallel compilation.
R=mvstanton@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14488 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-30 08:00:43 +00:00
mvstanton@chromium.org
bc50e21b23 HConstant::InNewSpace() should be a constant function
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14466 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-26 15:48:13 +00:00
verwaest@chromium.org
99e17bb12a Track storage types of instance variables.
Review URL: https://chromiumcodereview.appspot.com/14146005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14464 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-26 15:30:41 +00:00
mvstanton@chromium.org
84355ae411 Lithium: avoid registers for constants when possible.
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14460 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-26 14:04:07 +00:00
mstarzinger@chromium.org
bb2d8a51da Implement support for Math.imul in Crankshaft.
R=jkummerow@chromium.org
TEST=mjsunit/math-imul

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14450 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-26 08:52:35 +00:00
jkummerow@chromium.org
f80d86cbb1 Better handling of Phi nodes with constant inputs
Review URL: https://codereview.chromium.org/14471034

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14448 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-26 08:47:02 +00:00
mvstanton@chromium.org
e751ad06d9 Constructed arrays can be created with Hydrogen code stubs. The feature is still off by default (--optimize-constructed-arrays).
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14441 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-25 16:00:32 +00:00
yangguo@chromium.org
1ad3d57d9d Get isolate from thread local instead of (potentially missing) block in HConstant.
R=ulan@chromium.org
BUG=

Review URL: https://chromiumcodereview.appspot.com/14284011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14433 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-25 10:57:24 +00:00
svenpanne@chromium.org
bc06a802a7 Fixed HUnaryMathOperation regarding its possible operations.
Review URL: https://codereview.chromium.org/14333013

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14422 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-24 14:51:14 +00:00
svenpanne@chromium.org
b08fcc54a0 MathSqrt and MathPowHalf do not cause any promotion.
Review URL: https://codereview.chromium.org/13829009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14414 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-24 12:43:33 +00:00
danno@chromium.org
f8ddf3a262 Add monomorphic CompareNilICs and Crankshaft support
R=mvstanton@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14407 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-24 11:32:17 +00:00
mvstanton@chromium.org
535df803b9 If the input to an HChange is of type smi, then no need to mark gvn flag changes new space promotion.
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14401 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-24 09:14:56 +00:00
svenpanne@chromium.org
cd34acdae3 Do not emit double values at their use sites.
Revert part of r14179. From the regression test's comment:

Currently, the gap resolver doesn't handle moves from a ConstantOperand to a
DoubleRegister, but these kind of moves appeared when HConstant::EmitAtUses
was changed to allow special double values (-0, NaN, hole). So we should
either enhance the gap resolver or make sure that such moves don't happen.

BUG=chrome:234101

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14394 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-23 13:08:10 +00:00
yangguo@chromium.org
28bbe46a98 Disallow dereferencing deferred handles when generating optimized code.
R=mvstanton@chromium.org
BUG=

Review URL: https://chromiumcodereview.appspot.com/14403015

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14388 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-23 09:23:07 +00:00
jkummerow@chromium.org
0c634a1dae Ignore observed Double output in binary operations when all uses are truncating to Integer32
BUG=v8:2424

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14381 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-22 16:31:16 +00:00
titzer@chromium.org
3575f97036 Refactor HCheckMaps to have a private constructor, removing duplicated code and simplifying calls in clients.
Ignore bsuite directory.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14362 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-19 16:46:13 +00:00
danno@chromium.org
bc04544f02 Replace math.h with cmath
This will make it easier to use other STL headers in the future

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

Patch from Jochen Eisinger <jochen@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14352 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-19 13:26:47 +00:00
titzer@chromium.org
e210d8325f Inline isUint32() method from HConstant, which was only used in one place.
Add utility method for checking whether an HValue is a given int32_t constant.

BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14329 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-18 11:22:29 +00:00
svenpanne@chromium.org
55324693aa Unify canonicalization of HAdd/HSub/HMul a bit.
HDiv/HMul are a slightly different story and will be handled in a separate CL.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14322 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-18 09:24:29 +00:00
svenpanne@chromium.org
0d8b7f7608 Improve handling of unary plus.
Simple strategy: Transform unary plus into multiplication by one directly in the
parser and remove it from the Hydrogen graph later. This gives correct type
feedback without any special stub for it.

BUG=v8:2527

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14306 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-17 12:47:15 +00:00
yangguo@chromium.org
e1742a6716 Remove relocation lock.
Freeze HValue hash codes that are based on object addresses.

R=svenpanne@chromium.org
BUG=

Review URL: https://chromiumcodereview.appspot.com/14040006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14273 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-16 11:00:02 +00:00
hpayer@chromium.org
2345bdbeb3 Implement direct allocation in old data space infrastructure.
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14262 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-15 11:52:34 +00:00
hpayer@chromium.org
5fd24b0afa Added non observable side effects scope and removed unnecessary calls to AddSimulate.
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14232 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-11 13:07:37 +00:00
hpayer@chromium.org
2db9e62fc8 Build fast literals in hydrogen.
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14211 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-10 13:52:08 +00:00
mvstanton@chromium.org
b7022fd2be Improvements for x87 stack handling
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14179 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-09 08:42:57 +00:00
yangguo@chromium.org
9559181b0e Fix worst-case behavior of MergeRemovableSimulates().
Currently, when a long series of removable simulates are merged, we do
this by merging them one by one as we find them.  As we merge the value
value lists of the simulates, those lists snowball so that we get a
quadratic complexity wrt runtime and memory consumption.

Instead, we gather simulates that need to be merged, and merge them
backwards starting from the last simulate.

R=jkummerow@chromium.org
BUG=v8:2612

Review URL: https://chromiumcodereview.appspot.com/13649003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14169 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-08 17:37:22 +00:00
dslomov@chromium.org
a172a5e839 Remove (H|L)JSArrayLength instructions
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14127 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-03 16:25:24 +00:00
mvstanton@chromium.org
2502668f50 Deoptimizer support for hydrogen stubs that accept a variable number of arguments.
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14111 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-02 11:28:01 +00:00
mmassi@chromium.org
73e83b0b0f Handling expression decomposition and array bounds check hoisting: working code with lots of debugging PrintFs, postdominance check still missing.
Review URL: https://codereview.chromium.org/12377072

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13961 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-18 08:06:00 +00:00
hpayer@chromium.org
05a71fc9e4 Allow direct allocation in old pointer space.
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13940 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-14 08:32:52 +00:00
yangguo@chromium.org
a722726dc4 Parallel recompilation: fewer handle dereferences and tighter checks.
BUG=

Review URL: https://chromiumcodereview.appspot.com/12832002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13935 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-13 16:13:05 +00:00
mvstanton@chromium.org
30ca31f470 HInnerAllocatedObject instruction allows hydrogen code to carve up
allocated regions into sub objects.

BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13928 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-13 11:05:48 +00:00
mvstanton@chromium.org
1691f43b8b To fully support hydrogen code stubs which accept a variable number of arguments,
the HReturn/LReturn instruction needs to be able to determine argument count
from a stack evaluation rather than as a constant from scope.

R=danno@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13888 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-08 21:07:55 +00:00
mvstanton@chromium.org
3d1c89d4b1 Better hydrogen printing for the allocate instruction
R=danno@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13839 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-06 14:10:02 +00:00
jkummerow@chromium.org
03060c7105 Fixed HCheckSmiOrInt <-> HBoundsCheck interaction wrt. representations
BUG=v8:2556

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13820 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-05 09:14:28 +00:00
mvstanton@chromium.org
c4caf766bf Allocation Info Tracking, continued.
Addresses missing cases for array literals.
Adds support for "new Array()" call sites. This isn't complete yet, I have to run with --noinline_new.

BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13790 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-01 16:06:34 +00:00
rossberg@chromium.org
55f93b5532 Renamed "symbols" to "internalized strings" throughout the code base,
in preparation of the introduction of ES6 'symbols' (aka private/unique names).

The SymbolTable became the StringTable. I also made sure to adapt all comments. The only remaining use of the term "symbol" (other than unrelated uses in the parser and such) is now 'NewSymbol' in the API and the 'V8.KeyedLoadGenericSymbol' counter, changing which might break embedders.

The one functional change in this CL is that I removed the former 'empty_string' constant, since it is redundant given the 'empty_symbol' constant that we also had (and both were used inconsistently).

R=yangguo@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13781 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-28 17:03:34 +00:00
jkummerow@chromium.org
610d78cd2c Integer HConstants don't need to kDependsOnOsrEntries
Review URL: https://codereview.chromium.org/12299009

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13751 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-27 11:40:25 +00:00
mstarzinger@chromium.org
7d681e014d Compile FastCloneShallowObjectStub using Crankshaft.
This changes FastCloneShallowObjectStub to be compiled independent of
the target architecture. It also adds tracing to the deoptimizer for
compiled stubs and contains some minor bugfixes.

R=danno@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13732 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-26 13:08:08 +00:00
svenpanne@chromium.org
fb6776e84a Made Isolate a mandatory parameter for everything Handle-related.
Unified parameter order of CreateHandle with the rest of v8 on the way. A few
Isolate::Current()s had to be introduced, which is not nice, and not every place
will win a beauty contest, but we can clean this up later easily in smaller steps.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13717 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-25 14:46:09 +00:00
yangguo@chromium.org
0d63cef35b Constant fold math and string operations.
R=jkummerow@chromium.org
BUG=

Review URL: https://chromiumcodereview.appspot.com/12315005

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13705 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-21 11:40:37 +00:00
mmassi@chromium.org
8ef28eb5ee Fixed numeric relations on HPhi instances.
Review URL: https://codereview.chromium.org/12301027

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13703 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-21 10:22:31 +00:00
ulan@chromium.org
3a1eca4242 Remove prototype checks for leaf maps in optimized code.
Review URL: https://chromiumcodereview.appspot.com/12225099

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13697 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-20 11:49:54 +00:00
mmassi@chromium.org
bb886feb20 Remove purely informative definitions from the graph.
Review URL: https://codereview.chromium.org/12282033

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13696 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-19 16:32:02 +00:00
mmassi@chromium.org
20913187c0 Fix HCheckSmiOrInt32 fake observed representation.
Review URL: https://codereview.chromium.org/12259008

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13694 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-19 14:24:25 +00:00
mmassi@chromium.org
a5c6716cf5 Infrastructure classes for evaluating numeric relations between values.
Review URL: https://codereview.chromium.org/12226112

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13656 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-13 14:16:15 +00:00
mmassi@chromium.org
6333383ceb Remove instructions properly (stack check elimination was leaving "dangling uses" around).
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13647 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-12 12:04:29 +00:00
mmassi@chromium.org
2fb5064487 Separated smi check from HBoundsCheck.
Review URL: https://codereview.chromium.org/12208013

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13645 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-12 11:44:08 +00:00
danno@chromium.org
4c052815df Support pass-through of stub caller arguments
Review URL: https://codereview.chromium.org/12093089

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13593 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-05 08:09:32 +00:00
danno@chromium.org
0c3575c874 Generate the TransitionElementsStub using Crankshaft
This includes:
* Adding support for saving callee-clobbered double registers in Crankshaft code.
* Adding a new "HTrapAllocationMemento" hydrogen instruction to handle AllocationSiteInfo data in crankshafted stubs.
* Adding a new "HAllocate" hydrogen instruction that can allocate raw memory from the GC in crankshafted code.
* Support for manipulation of the hole in HChange instructions for Crankshafted stubs.
* Utility routines to manually build loops and if statements containing hydrogen code.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13585 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-04 12:01:59 +00:00
mmassi@chromium.org
3b8a61dcf3 Base iDef update code.
Review URL: https://codereview.chromium.org/12079042

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13575 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-02-01 10:16:16 +00:00
mmassi@chromium.org
89c4153581 Foundation for the use of informative definitions in Crankshaft.
Review URL: https://codereview.chromium.org/12090021

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13543 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-29 15:46:34 +00:00
mstarzinger@chromium.org
44ffa0dcd3 Allow monomorphic loads when static type is known.
This allows Crankshaft to generate monomorphic loads when the receiver
type is statically known even though the load site has polymorphic type
feedback. This applies to inlined constructor calls and literals.

R=jkummerow@chromium.org
TEST=mjsunit/compiler/property-static

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13500 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-24 17:54:30 +00:00
mstarzinger@chromium.org
1d124f0a75 Allow removal of obsolete map checks after transitions.
This allows side effect dominator tracking to remove map checks that are
dominated by a single HStoreNamedField that performs a transition on the
same object. A similar trick could be applied to HAllocateObject.

R=jkummerow@chromium.org

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13488 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-24 09:10:06 +00:00
ulan@chromium.org
d29826544e Correctly set kCanBeDivByZero flag for HMathFloorOfDiv.
After r13289 the divisor can be non-constant, so we should check for zero.

BUG=171641
R=yangguo@chromium.org

Review URL: https://chromiumcodereview.appspot.com/12047050

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13479 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-23 15:58:49 +00:00
yangguo@chromium.org
3c22524119 Avoid handle dereference during graph optimization.
With parallel recompilation enabled, objects made accessible by handles may
have changed between graph construction and graph optimization. Therefore
we must not assume that information on those objects remain the same between
those two phases. To police this, we forbid handle dereferencing during
graph optimization.
Exceptions to this rule are:
 - Dereferencing the handle to obtain the raw location of the object. This
   is safe since parallel recompilation acquires RelocationLock
 - Some places that dereference the handle for a type check. These are checked
   to be safe on a case-by-case basis.

R=jkummerow@chromium.org
BUG=

Review URL: https://chromiumcodereview.appspot.com/12049012

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13475 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-23 13:52:00 +00:00
yangguo@chromium.org
7f331f6280 Make HCheckPrototypeMaps compatible with parallel recompilation.
HCheckPrototypeMaps currently records the prototype and the holder of the
prototype chain (both ends of the chain) and assumes that the chain elements
and their maps did not change in during the entirety of Crankshaft. The actual
traversal of the prototype chain happens in Lithium at code generation.
With parallel compilation, this assumption is not longer correct.

R=mstarzinger@chromium.org
BUG=

Review URL: https://chromiumcodereview.appspot.com/11864013

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13454 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-21 15:49:00 +00:00
mmassi@chromium.org
ca78326b66 Revert r13409 ("Make the array bounds check elimination phase optional (and set the foundation for introducing SSI in a simple way).") because of a crash in octane/mandreel.
Review URL: https://chromiumcodereview.appspot.com/11962041

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13416 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-17 16:09:08 +00:00
jkummerow@chromium.org
a496e0d06a Don't emit code for instructions that are hiding behind an HSoftDeoptimize
Review URL: https://codereview.chromium.org/11377135

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13412 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-17 14:07:47 +00:00
mmassi@chromium.org
583f67b54b Make the array bounds check elimination phase optional (and set the foundation for introducing SSI in a simple way).
BUG=

Review URL: https://chromiumcodereview.appspot.com/11783055

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13409 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-17 12:39:16 +00:00
mvstanton@chromium.org
7884216804 Additional work to get array literal allocation tracking working, even with --always-opt
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13406 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-17 08:41:27 +00:00
mstarzinger@chromium.org
0484ddcf50 Fix arguments materialization for inlined apply().
This fixes materialization of the arguments object in case the constant
function check if TryCallApply() inside an inlined frame fails.

R=svenpanne@chromium.org
BUG=v8:2489
TEST=mjsunit/regress/regress-2489

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13386 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-16 09:25:45 +00:00
svenpanne@chromium.org
252fbddc67 Improved printing of HForceRepresentation.
Review URL: https://codereview.chromium.org/11745011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13301 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-01-03 10:05:40 +00:00