1.1 --- a/src/share/vm/opto/phaseX.cpp Fri Apr 11 09:56:35 2008 -0400 1.2 +++ b/src/share/vm/opto/phaseX.cpp Sun Apr 13 17:43:42 2008 -0400 1.3 @@ -744,20 +744,23 @@ 1.4 //============================================================================= 1.5 //------------------------------PhaseIterGVN----------------------------------- 1.6 // Initialize hash table to fresh and clean for +VerifyOpto 1.7 -PhaseIterGVN::PhaseIterGVN( PhaseIterGVN *igvn, const char *dummy ) : PhaseGVN(igvn,dummy), _worklist( ) { 1.8 +PhaseIterGVN::PhaseIterGVN( PhaseIterGVN *igvn, const char *dummy ) : PhaseGVN(igvn,dummy), _worklist( ), 1.9 + _delay_transform(false) { 1.10 } 1.11 1.12 //------------------------------PhaseIterGVN----------------------------------- 1.13 // Initialize with previous PhaseIterGVN info; used by PhaseCCP 1.14 PhaseIterGVN::PhaseIterGVN( PhaseIterGVN *igvn ) : PhaseGVN(igvn), 1.15 - _worklist( igvn->_worklist ) 1.16 + _worklist( igvn->_worklist ), 1.17 + _delay_transform(igvn->_delay_transform) 1.18 { 1.19 } 1.20 1.21 //------------------------------PhaseIterGVN----------------------------------- 1.22 // Initialize with previous PhaseGVN info from Parser 1.23 PhaseIterGVN::PhaseIterGVN( PhaseGVN *gvn ) : PhaseGVN(gvn), 1.24 - _worklist(*C->for_igvn()) 1.25 + _worklist(*C->for_igvn()), 1.26 + _delay_transform(false) 1.27 { 1.28 uint max; 1.29 1.30 @@ -953,6 +956,12 @@ 1.31 //------------------------------transform-------------------------------------- 1.32 // Non-recursive: idealize Node 'n' with respect to its inputs and its value 1.33 Node *PhaseIterGVN::transform( Node *n ) { 1.34 + if (_delay_transform) { 1.35 + // Register the node but don't optimize for now 1.36 + register_new_node_with_optimizer(n); 1.37 + return n; 1.38 + } 1.39 + 1.40 // If brand new node, make space in type array, and give it a type. 1.41 ensure_type_or_null(n); 1.42 if (type_or_null(n) == NULL) {