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