comparison src/share/vm/opto/lcm.cpp @ 1100:f96a1a986f7b

6895383: JCK test throws NPE for method compiled with Escape Analysis Summary: Add missing checks for MemBar nodes in EA. Reviewed-by: never
author kvn
date Wed, 09 Dec 2009 16:40:45 -0800
parents fbde8ec322d0
children 97125851f396
comparison
equal deleted inserted replaced
1099:c5d3d979ae27 1100:f96a1a986f7b
614 n->del_req(n->req() - 1); 614 n->del_req(n->req() - 1);
615 n->add_prec(oop_store); 615 n->add_prec(oop_store);
616 assert(cfg->_bbs[oop_store->_idx]->_dom_depth <= this->_dom_depth, "oop_store must dominate card-mark"); 616 assert(cfg->_bbs[oop_store->_idx]->_dom_depth <= this->_dom_depth, "oop_store must dominate card-mark");
617 } 617 }
618 } 618 }
619 if( n->is_Mach() && n->as_Mach()->ideal_Opcode() == Op_MemBarAcquire && 619 if( n->is_Mach() && n->req() > TypeFunc::Parms &&
620 n->req() > TypeFunc::Parms ) { 620 (n->as_Mach()->ideal_Opcode() == Op_MemBarAcquire ||
621 n->as_Mach()->ideal_Opcode() == Op_MemBarVolatile) ) {
621 // MemBarAcquire could be created without Precedent edge. 622 // MemBarAcquire could be created without Precedent edge.
622 // del_req() replaces the specified edge with the last input edge 623 // del_req() replaces the specified edge with the last input edge
623 // and then removes the last edge. If the specified edge > number of 624 // and then removes the last edge. If the specified edge > number of
624 // edges the last edge will be moved outside of the input edges array 625 // edges the last edge will be moved outside of the input edges array
625 // and the edge will be lost. This is why this code should be 626 // and the edge will be lost. This is why this code should be