rossberg@chromium.org
6fda4e4c28
Collect type feedback in separate pass and store it in AST
...
Notes:
- For now, just adds the missing type info fields to the AST nodes directly.
I'd like to factor that out more nicely in a follow-up CL.
- All type feedback now is uniformly collected through AST nodes'
RecordTypeFeedback functions. At some point, this logic should be moved
out of ast.cc.
- The typing pass currently simulates the exact same conditions under
which feedback was collected in Hydrogen before. That also should be
made more generic in the future.
- Type information itself is unchanged. Making it more regular is
yet more future work.
Some additional cleanups:
- Lifted out nested class ObjectLiteral::Property, to enable forward declaration.
- Moved around some auxiliary enums.
R=svenpanne@chromium.org
BUG=
Review URL: https://codereview.chromium.org/14990014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14825 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-27 13:59:20 +00:00
titzer@chromium.org
0a4289618d
Extract GlobalValueNumberer and helper classes from hydrogen.cc and move to hydrogen-gvn.cc.
...
BUG=
Review URL: https://codereview.chromium.org/16095004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14824 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-27 12:45:46 +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
8fc2101ce0
Fix build
...
R=jkummerow@chromium.org
Review URL: https://chromiumcodereview.appspot.com/15881004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14815 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-27 08:50:52 +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
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
af4516847a
Don't use fast literal if the boilerplate map is still deprecated.
...
R=mvstanton@chromium.org
Review URL: https://chromiumcodereview.appspot.com/15660005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14774 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-23 11:30:24 +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
hpayer@chromium.org
2cbc81a5ce
Move global pretenuring flag check to ShouldGloballyPretenure().
...
BUG=
Review URL: https://codereview.chromium.org/15734007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14763 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-23 08:17:03 +00:00
mstarzinger@chromium.org
b704cb9139
Fix bogus deopt in BuildEmitDeepCopy for holey arrays.
...
R=verwaest@chromium.org
BUG=chromium:242924
TEST=mjsunit/regress/regress-crbug-242924
Review URL: https://codereview.chromium.org/15735012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14757 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-22 17:58:21 +00:00
mstarzinger@chromium.org
bf413b5122
Fix VisitLogicalExpression for empty blocks on RHS.
...
R=jkummerow@chromium.org
BUG=chromium:242870
TEST=mjsunit/regress/regress-crbug-242870
Review URL: https://codereview.chromium.org/15744002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14747 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-22 13:27:00 +00:00
mmassi@chromium.org
3947fefe40
a tiny bug in DehoistArrayIndex
...
R=mmassi@chromium.org
Review URL: https://codereview.chromium.org/15268009
Patch from Weiliang Lin <weiliang.lin2@gmail.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14733 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-21 14:09:28 +00:00
verwaest@chromium.org
9f32d94cb3
Don't create new maps in CurrentMapForDeprecated.
...
R=yangguo@chromium.org
Review URL: https://chromiumcodereview.appspot.com/15358005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14728 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-21 11:20:24 +00:00
danno@chromium.org
58a3fd3666
Fill in one-word-fillers for the unused property fields.
...
BUG=chromium:240056
Review URL: https://chromiumcodereview.appspot.com/15247003
Patch from Toon Verwaest <verwaest@chromium.org>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14714 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-17 06:58:06 +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
c3dde4bd9d
Encapsulating Type information in the CompareICStub
...
Encapsulate type information in a convenient wrapper instead of storing it in a naked bitfield. This especially facilitates transitioning to a new state and converting from/to the extraICState representation. Additionally cleaning up ToBooleanICStub::Types for consistency.
BUG=
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/14862009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14704 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-16 10:59:17 +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
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
ulan@chromium.org
9e620bb689
Revert r14610 because of test-262 failures.
...
R=mstarzinger@chromium.org
Review URL: https://chromiumcodereview.appspot.com/14838012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14622 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-10 13:21:24 +00:00
svenpanne@chromium.org
911c14556d
Cleaned up Crankshaft pipeline a bit.
...
Two tiny changes:
* Some phases were missing an HPhase, which was added, so we can now see all
phases in the visualizer output.
* Consistently test commandline flags directly in the pipeline, making it
clearer which parts are optional and which are not.
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/15074005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14615 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-10 11:32:13 +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
ulan@chromium.org
cc1053379d
Use AssumeRepresentation when the representation is known and will not change.
...
R=danno@chromium.org
Review URL: https://chromiumcodereview.appspot.com/14793014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14611 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-10 09:31:28 +00:00
ulan@chromium.org
36910718fe
Verify that no-side-effects scope does not add unsafe phis and does not change push-pop balance of the environment.
...
R=danno@chromium.org
BUG=v8:2671
Review URL: https://chromiumcodereview.appspot.com/14696015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14610 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-10 09:26:53 +00:00
verwaest@chromium.org
5068079aff
Always use BuildCheckNonSmi, and don't emit check if HeapObject.
...
R=mvstanton@chromium.org
Review URL: https://chromiumcodereview.appspot.com/14731016
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14606 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-10 08:58:58 +00:00
verwaest@chromium.org
addb8f96c1
Don't CheckSmi when type is Smi.
...
R=mvstanton@chromium.org
Review URL: https://chromiumcodereview.appspot.com/14890007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14605 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-10 08:39:37 +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
ulan@chromium.org
cd4e9866b7
Fix environment in HOptimizedGraphBuilder::VisitCountOperation. Follow-up for r14584.
...
R=danno@chromium.org
BUG=v8:2671
TEST=mjsunit/regress/regress-2671-1.js
Review URL: https://chromiumcodereview.appspot.com/14972009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14596 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-08 14:58:06 +00:00
verwaest@chromium.org
4c2c665420
Turn off tracking of fields for the roll.
...
Revert polymorphic stores suspect of crashes.
Revert "Turn on tracking of fields."
Revert "Turn polymorphic stores monomorphic if store sequence matches."
Revert "Fix polymorphic store."
R=danno@chromium.org
Review URL: https://chromiumcodereview.appspot.com/14812010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14593 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-08 14:18:30 +00:00
verwaest@chromium.org
3d7e2912ba
Fix polymorphic store.
...
Review URL: https://chromiumcodereview.appspot.com/14696011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14590 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-08 10:34:51 +00:00
verwaest@chromium.org
e5feaf31fa
Turn polymorphic stores monomorphic if store sequence matches.
...
Review URL: https://chromiumcodereview.appspot.com/14796012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14589 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-08 09:39:26 +00:00
ulan@chromium.org
e5a29e8ff9
Do not change environment between simulate and scope with no observable side-effects in HandlePropertyAssignment.
...
LChunkBuilder reconstructs the environment by applying simulates. A scope with no observable side-effects has no simulates. If the scope deoptimizes, then LChunkBuilder would miss the changes to the environment between the last simulate and the scope.
R=danno@chromium.org
BUG=v8:2671
TEST=mjsunit/regress/regress-2671.js
Review URL: https://chromiumcodereview.appspot.com/14793009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14584 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-08 07:40:28 +00:00
mvstanton@chromium.org
d7b013de57
Becuase of cross-context calls, hydrogen-based Array constructor needs to ensure
...
the array constructor pointer passed in matches that of the current context.
BUG=
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/14846017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14581 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-07 21:01:53 +00:00
verwaest@chromium.org
46d39cabd6
Fix polymorphic to monomorphic load to take representation into account.
...
Review URL: https://chromiumcodereview.appspot.com/14966005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14565 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-07 10:32:23 +00:00
verwaest@chromium.org
2aad78052e
Don't double unlink in DCE.
...
Review URL: https://chromiumcodereview.appspot.com/14914004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14545 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-03 13:39:11 +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
eaf9d14be9
Use worklist to find out Phis that could not be truncated to int32
...
Review URL: https://codereview.chromium.org/13950013
Patch from Haitao Feng <haitao.feng@intel.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14528 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-02 17:00:53 +00:00
jkummerow@chromium.org
f78f583110
Detect truncating Phi uses of Phis with constant inputs
...
Review URL: https://codereview.chromium.org/14260013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14525 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-02 16:30:58 +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
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
mvstanton@chromium.org
adb450bc44
Fix test/build failures (win64 compile warning, isolate test parallel compilation failure, gcmole issue, isolate test intermittant failure)
...
BUG=
Review URL: https://codereview.chromium.org/14265024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14449 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-26 08:49:20 +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
yangguo@chromium.org
49ce7642be
Do not dereference handles during relocation.
...
R=hpayer@chromium.org
BUG=
Review URL: https://chromiumcodereview.appspot.com/13982023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14445 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-26 07:35:07 +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
mstarzinger@chromium.org
23f39546b9
Generators can resume
...
The generator object methods "next", "send", and "throw" now
include some inline assembly to set up a resumed stack frame. In some
common cases, we can just jump back into the frame to resume it.
Otherwise the resume code calls out to a runtime to fill in the operand
stack, rewind the handlers, and possibly to throw an exception.
BUG=v8:2355
TESTS=mjsunit/harmony/generators-iteration
Review URL: https://codereview.chromium.org/14066016
Patch from Andy Wingo <wingo@igalia.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14415 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-24 13:00:16 +00:00