bmeurer@chromium.org
b09989ec58
Refactor transitioning stores.
...
There's actually no need to have the transition as part of the HStoreNamedField instruction. In fact, it is cleaner and faster to generate a separate HStoreNamedField for the transition map. This will also help to eliminate map stores with store elimination, as well as reduce register pressure for transitioning stores on ia32.
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/295743002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21383 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-20 11:06:23 +00:00
ishell@chromium.org
6e74578968
Use stability to only conditionally flush information from the map check table.
...
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/266083007
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21274 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-12 20:05:52 +00:00
bmeurer@chromium.org
c3b5f70414
Use HType::NonPrimitive() for unclassified HeapObjects (i.e. Maps).
...
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/279813002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21215 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-09 12:05:56 +00:00
jarin@chromium.org
3976ebef93
Make new space iterable for --log-gc and --heap-stats options
...
R=hpayer@chromium.org
BUG=370827
TEST=test/mjsunit/regress/regress-370827.js
LOG=N
Review URL: https://codereview.chromium.org/272503005
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21209 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-09 09:23:10 +00:00
bmeurer@chromium.org
7c45d49861
Improve Array.shift() performance for small arrays.
...
TEST=mjsunit/array-shift,mjsunit/array-shift2,mjsunit/array-shift3
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/279743002
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21203 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-09 08:28:25 +00:00
bmeurer@chromium.org
a3fed0af84
Fix constructors for HLoadNamedField.
...
Also try to determine an appropriate HType for tracked fields,
instead of (incorrectly) using HType::NonPrimitive() everywhere.
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/269353003
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21186 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-07 08:41:35 +00:00
bmeurer@chromium.org
a051bc5762
Next bunch of fixes for check elimination.
...
- Canonicalize HCheckMapValue with constant map to
HCheckMaps, and get rid of the special treatment
during check elimination.
- Track only stable object maps for HConstants and
add CHECK()s to verify state during code generation.
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/263923004
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21154 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-06 07:05:07 +00:00
bmeurer@chromium.org
785bdf7c1e
Don't add code dependencies eagerly for HCheckMaps.
...
Instead of adding code dependencies on stable during
graph creation, we now add them during code generation
for those HCheckMaps that survived dead code elimination.
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/264973013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21139 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-05 11:03:14 +00:00
bmeurer@chromium.org
7c1036d424
Various cleanups in check elimination.
...
- Move IsMapAccess() to HObjectAccess.
- Collect the actual objects instead of HStoreNamedFields in
effects, and also consider HTransitionElementsKind.
- Fix ownership of HCheckMaps::maps() and HLoadNamedField::maps().
- Avoid heavy copying of the same map sets all the time during
check elimination, and do something useful with the memory
instead by slightly bumping the maximum number of tracked
objects.
- Slightly optimize UniqueSet::Contains().
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/264693011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21133 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-05 06:53:19 +00:00
bmeurer@chromium.org
b7148380cc
Drop obsolete HCheckMaps::HandleSideEffectsDominator().
...
In HCheckMaps::HandleSideEffectsDominator() we try to remove
redundant HCheckMaps instructions that are dominated by an
HStoreNamedField instruction with a transition. This is just
a special case of the check elimination and therefore obsolete
(it also gives some nice speedup since GVN just got cheaper).
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/261003002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21108 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-05-02 05:59:07 +00:00
alexandre.rames@arm.com
67ea9e4b42
ARM64: Generate optimized code for Math.floor and Math.round with double outputs.
...
R=jkummerow@chromium.org , ulan@chromium.org
Review URL: https://codereview.chromium.org/258793002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21091 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-30 13:38:00 +00:00
bmeurer@chromium.org
d4b533d41b
Bulk update of Google copyright headers in source files.
...
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/259183002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21035 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-29 06:42:26 +00:00
verwaest@chromium.org
d2179f2062
Don't adopt the AST id from previous if id is none, since previous may have mismatching expected stack height.
...
Additionally, harden merging of simulates after instructions with side effects and ensure there's a simulate before HEnterInlined.
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/252583004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20967 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-25 09:52:11 +00:00
verwaest@chromium.org
a55821eef2
Mark the simulate before EnterInlined with BailoutId::None(), and set ReturnId on EnterInlined. When merging simulates into the simulate before enter-inlined, adopt the last AST id that gets merged into it.
...
BUG=v8:3282
LOG=n
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/257583004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20949 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-24 15:20:53 +00:00
bmeurer@chromium.org
9437b59a6c
HBranch should also print its expected input types.
...
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/247153003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20881 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-22 11:00:27 +00:00
bmeurer@chromium.org
376bff2411
Optimize numeric comparison with known successors.
...
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/246133005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20880 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-22 10:49:28 +00:00
bmeurer@chromium.org
42c67d5fa2
Allow merging of monomorphic accesses to tracked fields.
...
Also add stability dependency only on maps that can transition,
and delay adding the dependencies until we are actually using
them, either in a HLoadNamedField or an HCheckMaps.
TEST=mjsunit/field-type-tracking
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/239923004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20796 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-16 11:41:09 +00:00
bmeurer@chromium.org
b5cec2b72f
Handlify AddDependentCode(), AddDependentCompilationInfo() and AddDependentIC().
...
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/236193014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20756 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-15 10:14:50 +00:00
bmeurer@chromium.org
6b4d4b7287
Reland "Track field types.".
...
This is an initial step towards tracking the exact types instead of just
the representations of fields. It adds support to track up to one map of
heap object field values, eliminating various map checks on values
loaded from such fields, at the cost of making stores to such fields
slightly more expensive.
Issues with transitioning stores and fast object literals in Crankshaft
fixed.
TEST=mjsunit/field-type-tracking
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/238773002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20746 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-15 07:36:47 +00:00
jarin@chromium.org
c1a3ab6b4f
Revert "Track field types."
...
Revert r20701.
TBR=bmeurer@chromium.org
BUG=
Review URL: https://codereview.chromium.org/236843002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20704 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-14 08:24:15 +00:00
bmeurer@chromium.org
9cf3909975
Track field types.
...
This is an initial step towards tracking the exact types instead of just the representations of fields. It adds support to track up to one map of heap object field values, eliminating various map checks on values loaded from such fields, at the cost of making stores to such fields slightly more expensive.
TEST=mjsunit/field-type-tracking
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/167303005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20701 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-14 06:29:15 +00:00
svenpanne@chromium.org
c5231ccba6
Make sure that ranges are not accessed after range analysis. Remove HValue::PrintRangeTo.
...
The ranges are simply wrong after range analysis, and we should only rely on computed flags.
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/234583005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20674 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-11 09:17:18 +00:00
jarin@chromium.org
fd988331ea
There is no definition for HArgumentsObject, so LDummyUse confuses the register allocator. I have recently made similar fix for HCapturedObject (see https://codereview.chromium.org/222283002/ ).
...
BUG=
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/226613007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20663 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-11 06:29:51 +00:00
yangguo@chromium.org
4fcc06685f
Handlify LookupSingleCharacterStringFromCode.
...
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/227593004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20559 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-08 06:45:53 +00:00
svenpanne@chromium.org
d4ff61058a
Fix approximation of CanDeoptimize() and other small store elimination fixes.
...
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/222263002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20468 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-03 10:39:04 +00:00
jarin@chromium.org
42d2d3cb9d
Do not generate LDummyUse instruction for HCapturedObject
...
LDummyUse confuses the register allocator (since there is no definition
for the use).
R=mstarzinger@chromium.org
BUG=
Review URL: https://codereview.chromium.org/222283002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20461 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-03 07:35:13 +00:00
verwaest@chromium.org
a99050d40e
Set kTruncatingToSmi for HChange only when To rep is Smi
...
BUG=
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/218613002
Patch from Weiliang Lin <weiliang.lin@intel.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20385 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-01 10:32:25 +00:00
mvstanton@chromium.org
839588d411
HInnerAllocatedObject hydrogen trace printed offset incorrectly.
...
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/210873003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20256 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-25 16:32:23 +00:00
yangguo@chromium.org
82f630a9f7
Reland "No longer OOM on invalid string length."
...
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/210683003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20225 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-25 09:09:24 +00:00
titzer@chromium.org
3c31102025
First implementation of store elimination.
...
BUG=
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/100253004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20224 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-25 09:06:16 +00:00
yangguo@chromium.org
72932ae417
Revert "No longer OOM on invalid string length."
...
This reverts r20202.
TBR=machenbach@chromium.org
Review URL: https://codereview.chromium.org/210143002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20203 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-24 15:36:15 +00:00
yangguo@chromium.org
531217502c
No longer OOM on invalid string length.
...
R=ishell@chromium.org
BUG=v8:3060
LOG=Y
Review URL: https://codereview.chromium.org/207613005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20202 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-24 15:01:17 +00:00
jochen@chromium.org
2ce0bebba1
Rename A64 port to ARM64 port
...
BUG=354405
R=ulan@chromium.org , rodolph.perfetta@arm.com
LOG=y
Review URL: https://codereview.chromium.org/207823003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20148 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-21 09:28:26 +00:00
svenpanne@chromium.org
68237f6590
Implement flooring division by a constant via truncating division by a constant.
...
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/204583002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20123 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-20 13:10:23 +00:00
ishell@chromium.org
f77c51b0a6
Check elimination now sets known successor branch of HCompareObjectEqAndBranch (correctness fix).
...
BUG=chromium:352058
LOG=N
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/196383018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19964 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-17 09:11:38 +00:00
bmeurer@chromium.org
4da15df008
Remove uses of CanBeNegative() in HMod.
...
BUG=v8:3204
LOG=y
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/195793016
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19878 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-13 08:17:44 +00:00
bmeurer@chromium.org
929313bd6b
Remove uses of RangeCanInclude() in flooring division by power of 2.
...
Drive-By-Fix: Improve ARM code generation for flooring division by
power of 2.
BUG=v8:3204
LOG=y
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/196653009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19877 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-13 07:58:58 +00:00
bmeurer@chromium.org
750f2d98f8
Fix uses of range analysis results in HChange.
...
BUG=v8:3204
LOG=y
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/195023002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19872 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-13 06:11:52 +00:00
jkummerow@chromium.org
105c1e08b7
Fix HIsSmiAndBranch::KnownSuccessorBlock() by deleting it
...
Constants can still change their representation, so we cannot determine reachability of blocks based on their Smi-ness
BUG=chromium:351320
LOG=y
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/196943002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19836 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-12 10:14:29 +00:00
danno@chromium.org
ae1669b501
Fix handling of polymorphic array accesses with constant index
...
R=jkummerow@chromium.org
BUG=chromium:351319
LOG=Y
Review URL: https://codereview.chromium.org/196353004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19835 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-12 10:11:38 +00:00
jkummerow@chromium.org
8a1812f252
Fix lazy deopt after tagged binary ops
...
Also add policing code to ensure that optimized frames can in fact lazily deopt
at their respective current PC when we patch them for lazy bailout.
BUG=chromium:350434
LOG=y
R=jarin@chromium.org
Review URL: https://codereview.chromium.org/194703008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19834 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-12 09:59:36 +00:00
svenpanne@chromium.org
d6f673eba8
Fixed range analysis for HMathFloorOfDiv.
...
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/195133002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19831 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-12 06:49:28 +00:00
yangguo@chromium.org
6e1507331e
Fix bug in constant folding object comparisons.
...
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/195063002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19798 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-11 13:34:01 +00:00
yangguo@chromium.org
e25d51cc85
Fix constant folding of %_IsMinusZero.
...
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/190793015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19762 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-10 15:06:54 +00:00
yangguo@chromium.org
78d23e5662
Implement KnownSuccessor method to some control instructions.
...
R=jkummerow@chromium.org
BUG=v8:3118
LOG=N
Review URL: https://codereview.chromium.org/174863002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19759 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-10 14:50:01 +00:00
bmeurer@chromium.org
c981914d4c
Replace the recursion in PropagateMinusZeroChecks() with a loop and a worklist.
...
Also refactor the related code in preparation for fixing the
range analysis.
BUG=v8:3204
LOG=y
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/190713002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19737 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-10 05:52:03 +00:00
verwaest@chromium.org
8a3d715250
Revert "Use Representation::Integer32() for smi types on 32-bit-tagged systems."
...
Due to performance regression.
BUG=
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/189843006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19709 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-07 09:29:07 +00:00
jkummerow@chromium.org
1cc0bafc07
Fix HConstants with Smi-ranged HeapNumber values
...
BUG=chromium:349878
LOG=y
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/186123003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19693 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-06 16:21:09 +00:00
verwaest@chromium.org
7bf33c53eb
Use Representation::Integer32() for smi types on 32-bit-tagged systems.
...
BUG=
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/187353005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19684 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-06 09:49:10 +00:00
bmeurer@chromium.org
766af5c2a8
Fix HStringAdd::PrintDataTo().
...
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/185403005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19646 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-03-04 12:34:04 +00:00