Mercurial > hg > truffle
comparison src/share/vm/opto/lcm.cpp @ 3252:92add02409c9
Merge
author | jmasa |
---|---|
date | Fri, 08 Apr 2011 14:19:50 -0700 |
parents | 1d1603768966 e6beb62de02d |
children | 7d9e451f5416 |
comparison
equal
deleted
inserted
replaced
2437:4f978fb6c81a | 3252:92add02409c9 |
---|---|
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 |