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
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
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
bmeurer@chromium.org
01041ce92e
Remove invalid HCheckValue case in check elimination.
...
Also eliminate a useless copy of the map set in case of
HCheckMaps.
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/256593011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@21033 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-29 04:59:37 +00:00
bmeurer@chromium.org
eccda7f000
Fix field type handling in load elimination.
...
Drive-by-fix: map_set() must return a pointer to the UniqueSet
instead of a copy.
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/244383002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20870 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-04-22 07:24:05 +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
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
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
ishell@chromium.org
c2601aea8a
Check elimination did not mark some dead blocks.
...
R=danno@chromium.org
Review URL: https://codereview.chromium.org/180483003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19619 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-28 14:16:38 +00:00
verwaest@chromium.org
d5caecccc5
Revert "Use stability to only conditionally flush information from the CheckMaps table."
...
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/180023002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19548 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-25 16:11:58 +00:00
ishell@chromium.org
1342cb8b00
Bugfix in check elimination with a regression test.
...
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/172173003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19481 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-19 12:34:50 +00:00
jkummerow@chromium.org
4c2626a0c7
Valgrind fix: always initialize HCheckTableEntry->is_stable_
...
BUG=chromium:343621
LOG=N
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/166413002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19371 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-14 10:03:17 +00:00
verwaest@chromium.org
161b2f689a
Reland: "Use stability to only conditionally flush information from the CheckMaps table."
...
BUG=
R=ishell@chromium.org
Original CL: https://codereview.chromium.org/153823003
Review URL: https://codereview.chromium.org/153653007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19342 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-12 18:48:12 +00:00
verwaest@chromium.org
7b7e3658f7
Don't propagate information through phis in loop headers.
...
To properly do this, we'd have to iterate over CompareMaps (and their bodies) handling phis, until we have learned enough to decide which paths can be taken. For now, just disable learning from phis in loop headers.
BUG=
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/147023005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19341 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-12 18:30:41 +00:00
verwaest@chromium.org
75432b7696
Revert "Use stability to only conditionally flush information from the CheckMaps table."
...
R=ishell@chromium.org
BUG=
Review URL: https://codereview.chromium.org/137863005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19331 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-12 15:38:42 +00:00
verwaest@chromium.org
2b7d33572a
Use stability to only conditionally flush information from the CheckMaps table.
...
BUG=
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/153823003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19330 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-12 15:07:41 +00:00
ishell@chromium.org
b446674c85
More check elimination improvements including partial learning on false branches of CompareMap and better handling of unreachable blocks.
...
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/159963002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19300 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-11 19:18:06 +00:00
bmeurer@chromium.org
a5ef6e5eec
Improve inobject field tracking during GVN.
...
Now stores to inobject fields do no longer prevent hoisting
and combining of loads from other inobject fields.
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/144423010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19249 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-11 06:53:14 +00:00
bmeurer@chromium.org
40f3b1ba87
Revert "Improve inobject field tracking during GVN."
...
This reverts commit r19427 for breaking the build. Will reland with
fix.
TBR=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/143203005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19248 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-11 06:46:14 +00:00
bmeurer@chromium.org
cd1b7df638
Improve inobject field tracking during GVN.
...
Now stores to inobject fields do no longer prevent hoisting
and combining of loads from other inobject fields.
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/144423010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19247 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-11 06:41:06 +00:00
ishell@chromium.org
f46da9d43b
Reland of r19102: Check elimination improvement: propagation of state through phis is supported, CheckMap narrowing implemented with tests.
...
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/146623006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19229 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-10 15:32:54 +00:00
bmeurer@chromium.org
2b60325def
[Sheriff] Revert "Check elimination temporarily disabled.", "Fix for buildbot failure after r19102." and "Check elimination improvement: propagation of state through phis is supported, CheckMap narrowing implemented."
...
This reverts commit r19102, r19105 and r19170 for breaking the
Chrome browser_tests. Will reland once fixed.
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/130053007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19179 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-07 07:36:30 +00:00
ishell@chromium.org
9743d254f3
Fix for buildbot failure after r19102.
...
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/149093011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19105 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-05 15:22:54 +00:00
ishell@chromium.org
a11899ff4e
Check elimination improvement: propagation of state through phis is supported, CheckMap narrowing implemented.
...
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/141653009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19102 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-05 13:39:55 +00:00
bmeurer@chromium.org
8150c34c82
Optimize redundant HCompareMap instructions with known successors.
...
R=ishell@chromium.org
Review URL: https://codereview.chromium.org/150663005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19094 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-02-05 09:30:53 +00:00
ishell@chromium.org
9070615980
Fix for potential issue related to replacing CheckMaps with values.
...
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/134733007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18887 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-28 17:49:13 +00:00
ishell@chromium.org
5dafb426b3
Flow engine fixes: unreachable block processing, state merging.
...
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/144013003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18885 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-28 16:57:39 +00:00
jkummerow@chromium.org
5298a078c6
Revert "Eliminatable CheckMaps replaced with if(true) or if(false)."
...
This reverts r18592 for breaking the GC stress bots.
R=machenbach@chromium.org
Review URL: https://codereview.chromium.org/137783011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18611 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-15 09:53:54 +00:00
ishell@chromium.org
952fbe475f
Eliminatable CheckMaps replaced with if(true) or if(false).
...
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/130613003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18592 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-01-14 16:06:40 +00:00
titzer@chromium.org
1f679a58f7
Improve check elimination with branch sensitivity on HCompareObjectEqAndBranch.
...
BUG=
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/106733002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18377 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-12-19 17:42:21 +00:00
titzer@chromium.org
16c4c14fac
Check elimination: Learn from if(CompareMap(x)) on true branch.
...
BUG=
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/99043002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18210 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-12-02 18:34:33 +00:00
titzer@chromium.org
425f3fde00
Eliminate HCheckHeapObject instructions in check elimination.
...
BUG=
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/95263005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18160 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-29 12:37:35 +00:00
titzer@chromium.org
5afd609aa1
Remove static asserts that dont compile on windows
...
TBR=mvstanton
BUG=
Review URL: https://codereview.chromium.org/95493002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18138 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-28 16:14:54 +00:00
titzer@chromium.org
6e5e23d630
Implement global check elimination using the HFlowEngine.
...
BUG=
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/46883009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18137 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-11-28 15:50:54 +00:00
titzer@chromium.org
d441160cab
Implement local check elimination on basic blocks.
...
BUG=
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/23866016
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16970 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-26 16:25:57 +00:00