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 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9185 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
6bcf162853
commit
ffb70bc843
@ -1675,7 +1675,9 @@ void HInferRepresentation::Analyze() {
|
|||||||
bool change = true;
|
bool change = true;
|
||||||
while (change) {
|
while (change) {
|
||||||
change = false;
|
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);
|
HPhi* phi = phi_list->at(i);
|
||||||
for (HUseIterator it(phi->uses()); !it.Done(); it.Advance()) {
|
for (HUseIterator it(phi->uses()); !it.Done(); it.Advance()) {
|
||||||
HValue* use = it.value();
|
HValue* use = it.value();
|
||||||
|
Loading…
Reference in New Issue
Block a user