src/share/vm/opto/chaitin.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6973963 Sdiff src/share/vm/opto

src/share/vm/opto/chaitin.cpp

Print this page




 552 
 553         // Check for float-vs-int live range (used in register-pressure
 554         // calculations)
 555         const Type *n_type = n->bottom_type();
 556         if( n_type->is_floatingpoint() )
 557           lrg._is_float = 1;
 558 
 559         // Check for twice prior spilling.  Once prior spilling might have
 560         // spilled 'soft', 2nd prior spill should have spilled 'hard' and
 561         // further spilling is unlikely to make progress.
 562         if( _spilled_once.test(n->_idx) ) {
 563           lrg._was_spilled1 = 1;
 564           if( _spilled_twice.test(n->_idx) )
 565             lrg._was_spilled2 = 1;
 566         }
 567 
 568 #ifndef PRODUCT
 569         if (trace_spilling() && lrg._def != NULL) {
 570           // collect defs for MultiDef printing
 571           if (lrg._defs == NULL) {
 572             lrg._defs = new (_ifg->_arena) GrowableArray<Node*>();
 573             lrg._defs->append(lrg._def);
 574           }
 575           lrg._defs->append(n);
 576         }
 577 #endif
 578 
 579         // Check for a single def LRG; these can spill nicely
 580         // via rematerialization.  Flag as NULL for no def found
 581         // yet, or 'n' for single def or -1 for many defs.
 582         lrg._def = lrg._def ? NodeSentinel : n;
 583 
 584         // Limit result register mask to acceptable registers
 585         const RegMask &rm = n->out_RegMask();
 586         lrg.AND( rm );
 587         // Check for bound register masks
 588         const RegMask &lrgmask = lrg.mask();
 589         if( lrgmask.is_bound1() || lrgmask.is_bound2() )
 590           lrg._is_bound = 1;
 591 
 592         // Check for maximum frequency value




 552 
 553         // Check for float-vs-int live range (used in register-pressure
 554         // calculations)
 555         const Type *n_type = n->bottom_type();
 556         if( n_type->is_floatingpoint() )
 557           lrg._is_float = 1;
 558 
 559         // Check for twice prior spilling.  Once prior spilling might have
 560         // spilled 'soft', 2nd prior spill should have spilled 'hard' and
 561         // further spilling is unlikely to make progress.
 562         if( _spilled_once.test(n->_idx) ) {
 563           lrg._was_spilled1 = 1;
 564           if( _spilled_twice.test(n->_idx) )
 565             lrg._was_spilled2 = 1;
 566         }
 567 
 568 #ifndef PRODUCT
 569         if (trace_spilling() && lrg._def != NULL) {
 570           // collect defs for MultiDef printing
 571           if (lrg._defs == NULL) {
 572             lrg._defs = new (_ifg->_arena) GrowableArray<Node*>(_ifg->_arena, 2, 0, NULL);
 573             lrg._defs->append(lrg._def);
 574           }
 575           lrg._defs->append(n);
 576         }
 577 #endif
 578 
 579         // Check for a single def LRG; these can spill nicely
 580         // via rematerialization.  Flag as NULL for no def found
 581         // yet, or 'n' for single def or -1 for many defs.
 582         lrg._def = lrg._def ? NodeSentinel : n;
 583 
 584         // Limit result register mask to acceptable registers
 585         const RegMask &rm = n->out_RegMask();
 586         lrg.AND( rm );
 587         // Check for bound register masks
 588         const RegMask &lrgmask = lrg.mask();
 589         if( lrgmask.is_bound1() || lrgmask.is_bound2() )
 590           lrg._is_bound = 1;
 591 
 592         // Check for maximum frequency value


src/share/vm/opto/chaitin.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File