Revision: 9185
Author: [email protected]
Date: Thu Sep 8 00:40:11 2011
Log: Improved phi reachability computation a bit.
The use-def relation between phis is mainly "forwards" (i.e. from phis with
smaller IDs to ones with larger IDs), so the fixed point computation
terminates
faster when iterate through the phis in a "backwards" manner. This is quite
visible in complex Mandreel-generated code, where a few hundred phis with
non-trivial use-def chains are generated.
Review URL: http://codereview.chromium.org/7848012
http://code.google.com/p/v8/source/detail?r=9185
Modified:
/branches/bleeding_edge/src/hydrogen.cc
=======================================
--- /branches/bleeding_edge/src/hydrogen.cc Wed Sep 7 04:11:36 2011
+++ /branches/bleeding_edge/src/hydrogen.cc Thu Sep 8 00:40:11 2011
@@ -1675,7 +1675,9 @@
bool change = true;
while (change) {
change = false;
- for (int i = 0; i < phi_count; ++i) {
+ // We normally have far more "forward edges" than "backward edges",
+ // so we terminate faster when we walk backwards.
+ for (int i = phi_count - 1; i >= 0; --i) {
HPhi* phi = phi_list->at(i);
for (HUseIterator it(phi->uses()); !it.Done(); it.Advance()) {
HValue* use = it.value();
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev