src/share/vm/opto/buildOopMap.cpp

Print this page




 538       if (j < block->number_of_nodes()) {
 539         break;
 540       }
 541     }
 542     if (i == cfg->number_of_blocks()) {
 543       break;                    // Got 'em all
 544     }
 545 #ifndef PRODUCT
 546     if( PrintOpto && Verbose )
 547       tty->print_cr("retripping live calc");
 548 #endif
 549     // Force the issue (expensively): recheck everybody
 550     for (i = 1; i < cfg->number_of_blocks(); i++) {
 551       worklist->push(cfg->get_block(i));
 552     }
 553   }
 554 }
 555 
 556 // Collect GC mask info - where are all the OOPs?
 557 void Compile::BuildOopMaps() {
 558   NOT_PRODUCT( TracePhase t3("bldOopMaps", &_t_buildOopMaps, TimeCompiler); )
 559   // Can't resource-mark because I need to leave all those OopMaps around,
 560   // or else I need to resource-mark some arena other than the default.
 561   // ResourceMark rm;              // Reclaim all OopFlows when done
 562   int max_reg = _regalloc->_max_reg; // Current array extent
 563 
 564   Arena *A = Thread::current()->resource_area();
 565   Block_List worklist;          // Worklist of pending blocks
 566 
 567   int max_reg_ints = round_to(max_reg, BitsPerInt)>>LogBitsPerInt;
 568   Dict *safehash = NULL;        // Used for assert only
 569   // Compute a backwards liveness per register.  Needs a bitarray of
 570   // #blocks x (#registers, rounded up to ints)
 571   safehash = new Dict(cmpkey,hashkey,A);
 572   do_liveness( _regalloc, _cfg, &worklist, max_reg_ints, A, safehash );
 573   OopFlow *free_list = NULL;    // Free, unused
 574 
 575   // Array mapping blocks to completed oopflows
 576   OopFlow **flows = NEW_ARENA_ARRAY(A, OopFlow*, _cfg->number_of_blocks());
 577   memset( flows, 0, _cfg->number_of_blocks() * sizeof(OopFlow*) );
 578 




 538       if (j < block->number_of_nodes()) {
 539         break;
 540       }
 541     }
 542     if (i == cfg->number_of_blocks()) {
 543       break;                    // Got 'em all
 544     }
 545 #ifndef PRODUCT
 546     if( PrintOpto && Verbose )
 547       tty->print_cr("retripping live calc");
 548 #endif
 549     // Force the issue (expensively): recheck everybody
 550     for (i = 1; i < cfg->number_of_blocks(); i++) {
 551       worklist->push(cfg->get_block(i));
 552     }
 553   }
 554 }
 555 
 556 // Collect GC mask info - where are all the OOPs?
 557 void Compile::BuildOopMaps() {
 558   TracePhase t3("bldOopMaps", &timers[_t_buildOopMaps]);
 559   // Can't resource-mark because I need to leave all those OopMaps around,
 560   // or else I need to resource-mark some arena other than the default.
 561   // ResourceMark rm;              // Reclaim all OopFlows when done
 562   int max_reg = _regalloc->_max_reg; // Current array extent
 563 
 564   Arena *A = Thread::current()->resource_area();
 565   Block_List worklist;          // Worklist of pending blocks
 566 
 567   int max_reg_ints = round_to(max_reg, BitsPerInt)>>LogBitsPerInt;
 568   Dict *safehash = NULL;        // Used for assert only
 569   // Compute a backwards liveness per register.  Needs a bitarray of
 570   // #blocks x (#registers, rounded up to ints)
 571   safehash = new Dict(cmpkey,hashkey,A);
 572   do_liveness( _regalloc, _cfg, &worklist, max_reg_ints, A, safehash );
 573   OopFlow *free_list = NULL;    // Free, unused
 574 
 575   // Array mapping blocks to completed oopflows
 576   OopFlow **flows = NEW_ARENA_ARRAY(A, OopFlow*, _cfg->number_of_blocks());
 577   memset( flows, 0, _cfg->number_of_blocks() * sizeof(OopFlow*) );
 578