comparison src/share/vm/opto/macro.cpp @ 601:523ded093c31

6809798: SafePointScalarObject node placed into incorrect block during GCM Summary: Replace the control edge of a pinned node before scheduling. Reviewed-by: never
author kvn
date Thu, 26 Feb 2009 14:26:02 -0800
parents 49a36a80b0c7
children 98cb887364d3
comparison
equal deleted inserted replaced
600:07d449658fc7 601:523ded093c31
62 if (old_in != NULL && old_in->is_SafePointScalarObject()) { 62 if (old_in != NULL && old_in->is_SafePointScalarObject()) {
63 SafePointScalarObjectNode* old_sosn = old_in->as_SafePointScalarObject(); 63 SafePointScalarObjectNode* old_sosn = old_in->as_SafePointScalarObject();
64 uint old_unique = C->unique(); 64 uint old_unique = C->unique();
65 Node* new_in = old_sosn->clone(jvms_adj, sosn_map); 65 Node* new_in = old_sosn->clone(jvms_adj, sosn_map);
66 if (old_unique != C->unique()) { 66 if (old_unique != C->unique()) {
67 new_in->set_req(0, newcall->in(0)); // reset control edge
67 new_in = transform_later(new_in); // Register new node. 68 new_in = transform_later(new_in); // Register new node.
68 } 69 }
69 old_in = new_in; 70 old_in = new_in;
70 } 71 }
71 newcall->add_req(old_in); 72 newcall->add_req(old_in);