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
|