equal
deleted
inserted
replaced
2596 |
2596 |
2597 // Memory barrier to prevent normal and 'unsafe' accesses from |
2597 // Memory barrier to prevent normal and 'unsafe' accesses from |
2598 // bypassing each other. Happens after null checks, so the |
2598 // bypassing each other. Happens after null checks, so the |
2599 // exception paths do not take memory state from the memory barrier, |
2599 // exception paths do not take memory state from the memory barrier, |
2600 // so there's no problems making a strong assert about mixing users |
2600 // so there's no problems making a strong assert about mixing users |
2601 // of safe & unsafe memory. Otherwise fails in a CTW of rt.jar |
2601 // of safe & unsafe memory. |
2602 // around 5701, class sun/reflect/UnsafeBooleanFieldAccessorImpl. |
|
2603 if (need_mem_bar) insert_mem_bar(Op_MemBarCPUOrder); |
2602 if (need_mem_bar) insert_mem_bar(Op_MemBarCPUOrder); |
2604 |
2603 |
2605 if (!is_store) { |
2604 if (!is_store) { |
2606 MemNode::MemOrd mo = is_volatile ? MemNode::acquire : MemNode::unordered; |
2605 MemNode::MemOrd mo = is_volatile ? MemNode::acquire : MemNode::unordered; |
2607 Node* p = make_load(control(), adr, value_type, type, adr_type, mo, is_volatile); |
2606 Node* p = make_load(control(), adr, value_type, type, adr_type, mo, is_volatile); |