src/share/vm/opto/ifnode.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
6889300 Cdiff src/share/vm/opto/ifnode.cpp
src/share/vm/opto/ifnode.cpp
Print this page
*** 238,254 ****
// Register the new RegionNodes but do not transform them. Cannot
// transform until the entire Region/Phi conglomerate has been hacked
// as a single huge transform.
igvn->register_new_node_with_optimizer( region_c );
igvn->register_new_node_with_optimizer( region_x );
- phi_x = phase->transform( phi_x );
// Prevent the untimely death of phi_x. Currently he has no uses. He is
// about to get one. If this only use goes away, then phi_x will look dead.
// However, he will be picking up some more uses down below.
Node *hook = new (igvn->C, 4) Node(4);
hook->init_req(0, phi_x);
hook->init_req(1, phi_c);
// Make the compare
Node *cmp_c = phase->makecon(t);
Node *cmp_x = cmp->clone();
cmp_x->set_req(1,phi_x);
--- 238,254 ----
// Register the new RegionNodes but do not transform them. Cannot
// transform until the entire Region/Phi conglomerate has been hacked
// as a single huge transform.
igvn->register_new_node_with_optimizer( region_c );
igvn->register_new_node_with_optimizer( region_x );
// Prevent the untimely death of phi_x. Currently he has no uses. He is
// about to get one. If this only use goes away, then phi_x will look dead.
// However, he will be picking up some more uses down below.
Node *hook = new (igvn->C, 4) Node(4);
hook->init_req(0, phi_x);
hook->init_req(1, phi_c);
+ phi_x = phase->transform( phi_x );
// Make the compare
Node *cmp_c = phase->makecon(t);
Node *cmp_x = cmp->clone();
cmp_x->set_req(1,phi_x);
*** 320,329 ****
--- 320,330 ----
// Only construct phi_s if needed, otherwise provides
// interfering use.
phi_s = PhiNode::make_blank(region_s,phi);
phi_s->init_req( 1, phi_c );
phi_s->init_req( 2, phi_x );
+ hook->add_req(phi_s);
phi_s = phase->transform(phi_s);
}
proj_path_data = phi_s;
proj_path_ctrl = region_s;
} else {
*** 331,340 ****
--- 332,342 ----
// Only construct phi_f if needed, otherwise provides
// interfering use.
phi_f = PhiNode::make_blank(region_f,phi);
phi_f->init_req( 1, phi_c );
phi_f->init_req( 2, phi_x );
+ hook->add_req(phi_f);
phi_f = phase->transform(phi_f);
}
proj_path_data = phi_f;
proj_path_ctrl = region_f;
}
src/share/vm/opto/ifnode.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File