--- old/src/share/vm/opto/graphKit.cpp Wed Mar 30 11:22:41 2011 +++ new/src/share/vm/opto/graphKit.cpp Wed Mar 30 11:22:40 2011 @@ -3384,10 +3384,13 @@ //----------------------------- store barriers ---------------------------- #define __ ideal. -void GraphKit::sync_kit(IdealKit& ideal) { - // Final sync IdealKit and graphKit. - __ drain_delay_transform(); +void GraphKit::sync_kit(IdealKit& ideal, bool final) { + if (final) { + // Final sync IdealKit and graphKit. + __ drain_delay_transform(); + } set_all_memory(__ merged_memory()); + set_i_o(__ i_o()); set_control(__ ctrl()); } @@ -3435,7 +3438,7 @@ // (Else it's an array (or unknown), and we want more precise card marks.) assert(adr != NULL, ""); - IdealKit ideal(gvn(), control(), merged_memory(), true); + IdealKit ideal(this, true); // Convert the pointer to an int prior to doing math on it Node* cast = __ CastPX(__ ctrl(), adr); @@ -3471,7 +3474,7 @@ Node* val, const TypeOopPtr* val_type, BasicType bt) { - IdealKit ideal(gvn(), control(), merged_memory(), true); + IdealKit ideal(this, true); Node* tls = __ thread(); // ThreadLocalStorage @@ -3614,7 +3617,7 @@ // (Else it's an array (or unknown), and we want more precise card marks.) assert(adr != NULL, ""); - IdealKit ideal(gvn(), control(), merged_memory(), true); + IdealKit ideal(this, true); Node* tls = __ thread(); // ThreadLocalStorage