comparison src/share/vm/opto/lcm.cpp @ 3255:5d046bf49ce7

Merge
author johnc
date Thu, 14 Apr 2011 13:45:41 -0700
parents 92add02409c9
children 7d9e451f5416
comparison
equal deleted inserted replaced
2468:6c97c830fb6f 3255:5d046bf49ce7
686 if( m && cfg->_bbs[m->_idx] == this && !m->is_top() ) 686 if( m && cfg->_bbs[m->_idx] == this && !m->is_top() )
687 local++; // One more block-local input 687 local++; // One more block-local input
688 } 688 }
689 ready_cnt[n->_idx] = local; // Count em up 689 ready_cnt[n->_idx] = local; // Count em up
690 690
691 #ifdef ASSERT
692 if( UseConcMarkSweepGC || UseG1GC ) {
693 if( n->is_Mach() && n->as_Mach()->ideal_Opcode() == Op_StoreCM ) {
694 // Check the precedence edges
695 for (uint prec = n->req(); prec < n->len(); prec++) {
696 Node* oop_store = n->in(prec);
697 if (oop_store != NULL) {
698 assert(cfg->_bbs[oop_store->_idx]->_dom_depth <= this->_dom_depth, "oop_store must dominate card-mark");
699 }
700 }
701 }
702 }
703 #endif
704
691 // A few node types require changing a required edge to a precedence edge 705 // A few node types require changing a required edge to a precedence edge
692 // before allocation. 706 // before allocation.
693 if( UseConcMarkSweepGC || UseG1GC ) {
694 if( n->is_Mach() && n->as_Mach()->ideal_Opcode() == Op_StoreCM ) {
695 // Note: Required edges with an index greater than oper_input_base
696 // are not supported by the allocator.
697 // Note2: Can only depend on unmatched edge being last,
698 // can not depend on its absolute position.
699 Node *oop_store = n->in(n->req() - 1);
700 n->del_req(n->req() - 1);
701 n->add_prec(oop_store);
702 assert(cfg->_bbs[oop_store->_idx]->_dom_depth <= this->_dom_depth, "oop_store must dominate card-mark");
703 }
704 }
705 if( n->is_Mach() && n->req() > TypeFunc::Parms && 707 if( n->is_Mach() && n->req() > TypeFunc::Parms &&
706 (n->as_Mach()->ideal_Opcode() == Op_MemBarAcquire || 708 (n->as_Mach()->ideal_Opcode() == Op_MemBarAcquire ||
707 n->as_Mach()->ideal_Opcode() == Op_MemBarVolatile) ) { 709 n->as_Mach()->ideal_Opcode() == Op_MemBarVolatile) ) {
708 // MemBarAcquire could be created without Precedent edge. 710 // MemBarAcquire could be created without Precedent edge.
709 // del_req() replaces the specified edge with the last input edge 711 // del_req() replaces the specified edge with the last input edge