hotspot/src/share/vm/opto/phaseX.cpp
changeset 360 21d113ecbf6a
parent 238 803c80713999
child 670 ddf3e9583f2f
--- a/hotspot/src/share/vm/opto/phaseX.cpp	Fri Apr 11 09:56:35 2008 -0400
+++ b/hotspot/src/share/vm/opto/phaseX.cpp	Sun Apr 13 17:43:42 2008 -0400
@@ -744,20 +744,23 @@
 //=============================================================================
 //------------------------------PhaseIterGVN-----------------------------------
 // Initialize hash table to fresh and clean for +VerifyOpto
-PhaseIterGVN::PhaseIterGVN( PhaseIterGVN *igvn, const char *dummy ) : PhaseGVN(igvn,dummy), _worklist( ) {
+PhaseIterGVN::PhaseIterGVN( PhaseIterGVN *igvn, const char *dummy ) : PhaseGVN(igvn,dummy), _worklist( ),
+                                                                      _delay_transform(false) {
 }
 
 //------------------------------PhaseIterGVN-----------------------------------
 // Initialize with previous PhaseIterGVN info; used by PhaseCCP
 PhaseIterGVN::PhaseIterGVN( PhaseIterGVN *igvn ) : PhaseGVN(igvn),
-  _worklist( igvn->_worklist )
+                                                   _worklist( igvn->_worklist ),
+                                                   _delay_transform(igvn->_delay_transform)
 {
 }
 
 //------------------------------PhaseIterGVN-----------------------------------
 // Initialize with previous PhaseGVN info from Parser
 PhaseIterGVN::PhaseIterGVN( PhaseGVN *gvn ) : PhaseGVN(gvn),
-  _worklist(*C->for_igvn())
+                                              _worklist(*C->for_igvn()),
+                                              _delay_transform(false)
 {
   uint max;
 
@@ -953,6 +956,12 @@
 //------------------------------transform--------------------------------------
 // Non-recursive: idealize Node 'n' with respect to its inputs and its value
 Node *PhaseIterGVN::transform( Node *n ) {
+  if (_delay_transform) {
+    // Register the node but don't optimize for now
+    register_new_node_with_optimizer(n);
+    return n;
+  }
+
   // If brand new node, make space in type array, and give it a type.
   ensure_type_or_null(n);
   if (type_or_null(n) == NULL) {