538 Node *bol = igvn.transform(new BoolNode(cmp, BoolTest::ne))->as_Bool(); |
538 Node *bol = igvn.transform(new BoolNode(cmp, BoolTest::ne))->as_Bool(); |
539 IfNode* iff = igvn.transform(new IfNode(in_ctrl, bol, unlikely, COUNT_UNKNOWN))->as_If(); |
539 IfNode* iff = igvn.transform(new IfNode(in_ctrl, bol, unlikely, COUNT_UNKNOWN))->as_If(); |
540 Node* then = igvn.transform(new IfTrueNode(iff)); |
540 Node* then = igvn.transform(new IfTrueNode(iff)); |
541 Node* elsen = igvn.transform(new IfFalseNode(iff)); |
541 Node* elsen = igvn.transform(new IfFalseNode(iff)); |
542 |
542 |
543 Node* new_loadp = igvn.transform(new LoadBarrierSlowRegNode(then, in_mem, in_adr, in_val->adr_type(), |
543 Node* new_loadp = igvn.transform(new LoadBarrierSlowRegNode(then, in_adr, in_val, |
544 (const TypePtr*) in_val->bottom_type(), MemNode::unordered, barrier->is_weak())); |
544 (const TypePtr*) in_val->bottom_type(), barrier->is_weak())); |
545 |
545 |
546 // Create the final region/phi pair to converge cntl/data paths to downstream code |
546 // Create the final region/phi pair to converge cntl/data paths to downstream code |
547 Node* result_region = igvn.transform(new RegionNode(3)); |
547 Node* result_region = igvn.transform(new RegionNode(3)); |
548 result_region->set_req(1, then); |
548 result_region->set_req(1, then); |
549 result_region->set_req(2, elsen); |
549 result_region->set_req(2, elsen); |
665 assert(0, "There should be no load barriers left"); |
665 assert(0, "There should be no load barriers left"); |
666 case Op_ZGetAndSetP: |
666 case Op_ZGetAndSetP: |
667 case Op_ZCompareAndExchangeP: |
667 case Op_ZCompareAndExchangeP: |
668 case Op_ZCompareAndSwapP: |
668 case Op_ZCompareAndSwapP: |
669 case Op_ZWeakCompareAndSwapP: |
669 case Op_ZWeakCompareAndSwapP: |
670 case Op_LoadBarrierSlowReg: |
|
671 #ifdef ASSERT |
670 #ifdef ASSERT |
672 if (VerifyOptoOopOffsets) { |
671 if (VerifyOptoOopOffsets) { |
673 MemNode *mem = n->as_Mem(); |
672 MemNode *mem = n->as_Mem(); |
674 // Check to see if address types have grounded out somehow. |
673 // Check to see if address types have grounded out somehow. |
675 const TypeInstPtr *tp = mem->in(MemNode::Address)->bottom_type()->isa_instptr(); |
674 const TypeInstPtr *tp = mem->in(MemNode::Address)->bottom_type()->isa_instptr(); |