6809798: SafePointScalarObject node placed into incorrect block during GCM

Replace the control edge of a pinned node before scheduling.

Reviewed-by: never
This commit is contained in:
Vladimir Kozlov 2009-02-26 14:26:02 -08:00
parent f7098831dd
commit 9b31d58b98
6 changed files with 52 additions and 27 deletions

View file

@ -64,6 +64,7 @@ void PhaseMacroExpand::copy_call_debug_info(CallNode *oldcall, CallNode * newcal
uint old_unique = C->unique();
Node* new_in = old_sosn->clone(jvms_adj, sosn_map);
if (old_unique != C->unique()) {
new_in->set_req(0, newcall->in(0)); // reset control edge
new_in = transform_later(new_in); // Register new node.
}
old_in = new_in;