6674588: (Escape Analysis) Improve Escape Analysis code

Current EA code has several problems which have to be fixed.

Reviewed-by: jrose, sgoldman
This commit is contained in:
Vladimir Kozlov 2008-03-14 15:26:33 -07:00
parent 30dc0edfc8
commit fc0117cb9a
12 changed files with 1352 additions and 523 deletions

View file

@ -587,11 +587,6 @@ ConNode* PhaseValues::uncached_makecon(const Type *t) {
Node_Notes* loc = C->locate_node_notes(nna, x->_idx, true);
loc->clear(); // do not put debug info on constants
}
// Collect points-to information for escape analysys
ConnectionGraph *cgr = C->congraph();
if (cgr != NULL) {
cgr->record_escape(x, this);
}
} else {
x->destruct(); // Hit, destroy duplicate constant
x = k; // use existing constant
@ -714,12 +709,6 @@ Node *PhaseGVN::transform_no_reclaim( Node *n ) {
return i;
}
// Collect points-to information for escape analysys
ConnectionGraph *cgr = C->congraph();
if (cgr != NULL) {
cgr->record_escape(k, this);
}
// Return Idealized original
return k;
}
@ -1245,7 +1234,7 @@ void PhaseIterGVN::add_users_to_worklist( Node *n ) {
uint use_op = use->Opcode();
// If changed Cast input, check Phi users for simple cycles
if( use->is_ConstraintCast() || use->Opcode() == Op_CheckCastPP ) {
if( use->is_ConstraintCast() || use->is_CheckCastPP() ) {
for (DUIterator_Fast i2max, i2 = use->fast_outs(i2max); i2 < i2max; i2++) {
Node* u = use->fast_out(i2);
if (u->is_Phi())