src/share/vm/opto/phaseX.cpp

changeset 548
ba764ed4b6f2
parent 500
99269dbf4ba8
child 631
d1605aabd0a1
     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) {

mercurial