bmeurer@chromium.org
b899185790
Turn infer types into proper HPhase.
...
R=dslomov@chromium.org
Review URL: https://codereview.chromium.org/18568007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15535 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-08 08:33:03 +00:00
bmeurer@chromium.org
e5b69658e4
Turn redundant phi elimination into proper HPhase.
...
R=dslomov@chromium.org
Review URL: https://codereview.chromium.org/18549004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15533 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-08 08:18:29 +00:00
bmeurer@chromium.org
5fd94c9ba1
Turn stack check elimination into proper HPhase.
...
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/18816002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15531 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-08 07:03:57 +00:00
bmeurer@chromium.org
17e58e8198
Turn dead code elimination into a proper HPhase.
...
R=dslomov@chromium.org
Review URL: https://codereview.chromium.org/18791002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15529 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-07 06:00:15 +00:00
danno@chromium.org
bd50e6d38f
Refactoring and cleanup of control instructions
...
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/18331004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15513 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-05 10:40:14 +00:00
danno@chromium.org
345cc98a25
Generate StoreGlobal stubs with Hydrogen
...
- Constants globals are inlined into Hydrogen code using code dependencies that invalidate the Crankshafted code when global PropertyCells or the global object change.
- The more general case generates code that is just as good as the hand-written assembly stubs on all platforms.
R=rossberg@chromium.org , ulan@chromium.org
Committed: http://code.google.com/p/v8/source/detail?r=15419
Review URL: https://codereview.chromium.org/16925008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15512 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-05 10:34:02 +00:00
yangguo@chromium.org
02674ee414
Keep two empty lines between declarations for cpp files
...
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/18509003
Patch from Haitao Feng <haitao.feng@intel.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15510 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-05 09:52:11 +00:00
olivf@chromium.org
240c7aced9
Convert UnaryOpStub to a HydrogenCodeStub
...
BUG=
R=danno@chromium.org
Review URL: https://codereview.chromium.org/18712002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15506 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-05 09:26:22 +00:00
rossberg@chromium.org
437f8b0c24
Unrevert "Remove BinaryOp::result_type""
...
Reenables https://code.google.com/p/v8/source/detail?r=15265
R=jkummerow@chromium.org
BUG=
Review URL: https://codereview.chromium.org/18309005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15505 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-05 08:49:37 +00:00
bmeurer@chromium.org
8767fdbb28
Turn range analysis into proper HPhase.
...
R=dslomov@chromium.org
Review URL: https://codereview.chromium.org/18491002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15496 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-04 19:25:16 +00:00
titzer@chromium.org
bddf08b0b1
Factor out OSR-related graph-building functionality from hydrogen.cc.
...
BUG=
Review URL: https://codereview.chromium.org/18496002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15488 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-04 09:20:07 +00:00
olivf@chromium.org
950a372834
Revert "Convert UnaryOpStub to a HydrogenCodeStub"
...
The problem is the HCallConstantFunction which is not context sensitive, so we leak the builtin. We first need a Hydrogen version of __ IvokeBuiltin.
BUG=
R=danno@chromium.org , machenbach@chromium.org
Review URL: https://codereview.chromium.org/18650003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15486 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-03 19:57:25 +00:00
olivf@chromium.org
0d2fed8f26
Convert UnaryOpStub to a HydrogenCodeStub
...
BUG=
R=danno@chromium.org
Review URL: https://codereview.chromium.org/17229005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15473 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-03 14:56:53 +00:00
jkummerow@chromium.org
de80207a4b
Fix default type feedback returned from the oracle
...
R=rossberg@chromium.org
Review URL: https://codereview.chromium.org/18465003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15459 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-02 16:31:39 +00:00
titzer@chromium.org
63abcc515b
Remove HFixedArrayBaseLength instruction and replace with regular HLoadNamedField.
...
BUG=
Review URL: https://codereview.chromium.org/18508002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15454 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-02 15:31:17 +00:00
jkummerow@chromium.org
a2d4cf9de7
Not consider the use representation in unintiliazed ArrayLiteral which always requires SMI
...
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/18263002
Patch from Weiliang Lin <weiliang.lin2@gmail.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15450 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-02 15:00:13 +00:00
rossberg@chromium.org
731a2aba34
Revert "Remove BinaryOp::result_type"
...
This reverts https://code.google.com/p/v8/source/detail?r=15265 , due to performance regression.
TBR=jkummerow@chromium.org
BUG=
Review URL: https://codereview.chromium.org/18525002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15444 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-02 11:57:43 +00:00
bmeurer@chromium.org
f60609bd1b
Turn UInt32 analysis into a proper HPhase.
...
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/18487003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15441 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-02 10:53:08 +00:00
bmeurer@chromium.org
aadcf381db
Turn escape analysis into a proper HPhase.
...
R=danno@chromium.org , mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/18476004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15438 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-02 08:29:33 +00:00
danno@chromium.org
77c20c30a3
Revert r15419: "Generate StoreGlobal stubs with Hydrogen"
...
TBR=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/18357004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15427 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-01 15:12:21 +00:00
danno@chromium.org
a3bce19868
Generate StoreGlobal stubs with Hydrogen
...
- Constants globals are inlined into Hydrogen code using code dependencies that invalidate the Crankshafted code when global PropertyCells or the global object change.
- The more general case generates code that is just as good as the hand-written assembly stubs on all platforms.
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/16925008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15419 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-01 13:22:13 +00:00
mstarzinger@chromium.org
c28a6c9ea2
Use HInstructionIterator more broadly for hydrogen.
...
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/18068002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15394 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-28 16:31:11 +00:00
mstarzinger@chromium.org
8b976da60e
First simplistic implementation of escape analysis.
...
R=jkummerow@chromium.org , titzer@chromium.org
Review URL: https://codereview.chromium.org/17914002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15393 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-28 16:09:54 +00:00
jkummerow@chromium.org
05b94f13c8
Add %_DebugBreakInOptimizedCode() pseudo function call to insert int3/stop instructions into optimized code
...
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/17870002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15392 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-28 15:48:38 +00:00
jkummerow@chromium.org
c7a9bffbcf
Clean up the usage of V8_TARGET_ARCH_${arch} and V8_HOST_ARCH_${arch}
...
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/18037002
Patch from Haitao Feng <haitao.feng@intel.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15391 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-28 15:34:48 +00:00
mvstanton@chromium.org
83519ec87a
Hydrogen array constructor cleanup and improvements
...
* Cleanup of LCallNewArray::PrintDataTo() method
* Created HCallNewArray::PrintDataTo()
* Created many more tests in array-constructor-feedback.js
* Removed redundant instructions in
GenerateRecordCallTarget
* Bugfix in CreateArrayDispatchOneArgument: on a call to
new Array(0), we'd like to set the type feedback cell to
a packed elements kind, but we shouldn't do it if the
cell contains the megamorphic sentinel.
* When used from crankshaft, ArrayConstructorStubs can
avoid verifying that the function being called is the
array function from the current native context, relying
instead on the fact that crankshaft issues an
HCheckFunction to protect the constructor call. (this
new minor key is used in LCodeGen::DoCallNewArray(), and
influences code generation in
CodeStubGraphBuilderBase::BuildArrayConstructor()).
* Optimization: the array constructor specialized for
FAST_SMI_ELEMENTS can save some instructions by looking
up the correct map on the passed in constructor, rather
than indexing into the array of cached maps per element
kind.
BUG=
R=danno@chromium.org
Review URL: https://codereview.chromium.org/17091002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15383 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-28 13:16:14 +00:00
bmeurer@chromium.org
e029039b69
Fix GCC 4.2 errors introduced with revision 15379.
...
BUG=
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/18184005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15380 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-28 12:28:39 +00:00
bmeurer@chromium.org
382ec92f2a
Make use of templatized convienience functions for adding Hydrogen instructions.
...
Building on the previous changes from https://codereview.chromium.org/18050004/
this patch makes even more use of the templatized functions for adding
Hydrogen instructions.
R=danno@chromium.org
BUG=
Review URL: https://codereview.chromium.org/18051010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15379 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-28 11:44:16 +00:00
bmeurer@chromium.org
f11af230e8
Refactor HInferRepresentation into an HPhase and use the phase zone.
...
Rename HInferRepresentation to HInferRepresentationPhase,
following naming scheme suggested by danno@chromium.org in
https://codereview.chromium.org/17458002
The HInferRepresentationPhase now uses the phase zone for all its
allocations.
Depends on https://codereview.chromium.org/17587008
R=danno@chromium.org
BUG=
Review URL: https://codereview.chromium.org/18054002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15373 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-28 07:40:35 +00:00
danno@chromium.org
eb2fc68835
Remove superfluous HInnerAllocatedObject in BuildEmitDeepCopy
...
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/17881004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15367 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-27 16:07:55 +00:00
yangguo@chromium.org
3ff7ab9ead
Fix constructor call of relocation lock.
...
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/18020002
Patch from Haitao Feng <haitao.feng@intel.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15362 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-27 14:44:36 +00:00
danno@chromium.org
f95ddc8891
Add templatized convienience functions for adding hydrogen instructions
...
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/18050004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15360 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-27 14:36:14 +00:00
danno@chromium.org
3b60d6de8e
Make sure HCallNewArray uses right ElementsKind
...
Close a small gc window that exists between when a HNewArrayCall instruction is
created and the ElementsKind type feedback for the construction function is
accesses.
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/18059005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15359 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-27 14:22:07 +00:00
bmeurer@chromium.org
2f81a79d5a
Refactor Hydrogen environment liveness analysis into an HPhase.
...
Rename EnvironmentSlotLivenessAnalyzer to HEnvironmentLivenessAnalysisPhase,
following naming scheme suggested by danno@chromium.org in
https://codereview.chromium.org/17458002
The environment slot liveness analysis now uses the phase zone for
all its allocations.
Depends on https://codereview.chromium.org/18034003
R=danno@chromium.org
BUG=
Review URL: https://codereview.chromium.org/17587008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15356 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-27 13:15:10 +00:00
bmeurer@chromium.org
32f5e099d4
Add templatized Run() method for Hydrogen phases.
...
Depends upon https://codereview.chromium.org/17657004
R=danno@chromium.org
BUG=
Review URL: https://codereview.chromium.org/18034003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15355 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-27 13:13:18 +00:00
bmeurer@chromium.org
98786ae073
Refactor Hydrogen GVN into an HPhase and use the phase zone.
...
The HGlobalValueNumberer class is renamed to HGlobalValueNumberingPhase,
following the naming scheme suggested by danno@chromium.org in
https://codereview.chromium.org/17458002
The GVN phase now uses the phase zone for all its allocations.
Depends upon https://codereview.chromium.org/18022002
R=danno@chromium.org
BUG=
Review URL: https://codereview.chromium.org/17657004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15353 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-27 13:09:08 +00:00
bmeurer@chromium.org
073b1d1dfb
Move phase_zone from CompilationInfo to CompilationPhase.
...
Each CompilationPhase has its own zone, used for phase local
allocations. The zone of CompilationInfo should only be used
for non phase local allocations.
R=danno@chromium.org
BUG=
Review URL: https://codereview.chromium.org/18022002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15352 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-27 13:03:01 +00:00
olivf@chromium.org
21cd74eaa2
Avoid Unnecessary Smi Checks
...
BUG=
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/16026023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15344 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-26 17:37:55 +00:00
rossberg@chromium.org
e60acec321
Introduce Unsigned32 and RegExp types
...
Also, renamed Integer31 back to Smi, and Integer32 to Signed32.
R=jkummerow@chromium.org
BUG=
Review URL: https://codereview.chromium.org/17589013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15332 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-26 09:51:57 +00:00
mvstanton@chromium.org
081134ecd1
Removed flag optimize-constructed-arrays.
...
This eliminates a large amount of hand-written assembly in the platforms.
BUG=
R=danno@chromium.org , mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/16453002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15328 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-25 16:31:07 +00:00
bmeurer@chromium.org
9f05d61a1d
Split HPhase for Lithium and Hydrogen using common CompilationPhase base.
...
Add new base class CompilationPhase, which is the base for both HPhase, LPhase and LAllocatorPhase. HPhase is now for Hydrogen passes only, LPhase is for Lithium passes and LAllocatorPhase is for LAllocator phases.
R=svenpanne@chromium.org
BUG=
Review URL: https://codereview.chromium.org/17572011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15321 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-25 12:22:26 +00:00
hpayer@chromium.org
7ba980f2b1
Added pretenuring support for fast literal allocation in old data space.
...
BUG=
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/17580011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15306 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-25 07:47:53 +00:00
mstarzinger@chromium.org
bd90e71b01
Fix ugly typo in HValue::UpdateRepresentation.
...
R=jkummerow@chromium.org
TEST=mjsunit/math-min-max --extra-flags="--gc-interval=500"
Review URL: https://codereview.chromium.org/17580019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15301 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-24 14:34:07 +00:00
bmeurer@chromium.org
13a7c993d0
Add phase zone to CompilationInfo and use it in GVN pass.
...
The phase_zone of CompilationInfo is intended for local allocations that
are freed at the end of the phase.
R=danno@chromium.org
BUG=
Review URL: https://codereview.chromium.org/17573003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15294 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-24 13:37:46 +00:00
bmeurer@chromium.org
3481344df8
Drop (mis)use of HPhase in full code gen.
...
The full code generator is not a proper Hydrogen phase. The full code
gen ticks are tracked in a special member of HStatistics, so HPhase is
most probably misused at this point.
R=danno@chromium.org
BUG=
Review URL: https://codereview.chromium.org/17590005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15291 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-24 13:25:44 +00:00
bmeurer@chromium.org
00f6a8903b
Fix HStatistics::Print() output to fit into 80 columns.
...
BUG=
R=danno@chromium.org
Review URL: https://codereview.chromium.org/17572006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15289 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-24 13:07:20 +00:00
rossberg@chromium.org
007837365d
Rename Literal::handle to Literal::value
...
Just a completely mechanical change...
R=svenpanne@chromium.org
BUG=
Review URL: https://codereview.chromium.org/17576005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15280 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-24 10:37:59 +00:00
rossberg@chromium.org
04e1278529
Remove BinaryOp::result_type
...
R=jkummerow@chromium.org
BUG=
Review URL: https://codereview.chromium.org/17261023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15265 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-21 12:16:14 +00:00
rossberg@chromium.org
0977c60984
Use AST's type field and merge types for unary, binary & compare ICs
...
R=jkummerow@chromium.org
BUG=
Review URL: https://codereview.chromium.org/17468003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15264 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-21 11:10:06 +00:00
jkummerow@chromium.org
0e54a418db
Add counters for requested/inserted/executed soft deopts
...
R=rossberg@chromium.org
Review URL: https://codereview.chromium.org/17498003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15253 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-20 16:53:22 +00:00