Mercurial > hg > truffle
comparison src/share/vm/opto/macro.cpp @ 14456:abec000618bf
Merge
author | kvn |
---|---|
date | Tue, 28 Jan 2014 12:25:34 -0800 |
parents | de6a9e811145 2113136690bc |
children | 4ca6dc0799b6 62c54fcc0a35 |
comparison
equal
deleted
inserted
replaced
14269:2a8891e0a082 | 14456:abec000618bf |
---|---|
1082 | 1082 |
1083 | 1083 |
1084 Node* PhaseMacroExpand::make_load(Node* ctl, Node* mem, Node* base, int offset, const Type* value_type, BasicType bt) { | 1084 Node* PhaseMacroExpand::make_load(Node* ctl, Node* mem, Node* base, int offset, const Type* value_type, BasicType bt) { |
1085 Node* adr = basic_plus_adr(base, offset); | 1085 Node* adr = basic_plus_adr(base, offset); |
1086 const TypePtr* adr_type = adr->bottom_type()->is_ptr(); | 1086 const TypePtr* adr_type = adr->bottom_type()->is_ptr(); |
1087 Node* value = LoadNode::make(_igvn, ctl, mem, adr, adr_type, value_type, bt); | 1087 Node* value = LoadNode::make(_igvn, ctl, mem, adr, adr_type, value_type, bt, MemNode::unordered); |
1088 transform_later(value); | 1088 transform_later(value); |
1089 return value; | 1089 return value; |
1090 } | 1090 } |
1091 | 1091 |
1092 | 1092 |
1093 Node* PhaseMacroExpand::make_store(Node* ctl, Node* mem, Node* base, int offset, Node* value, BasicType bt) { | 1093 Node* PhaseMacroExpand::make_store(Node* ctl, Node* mem, Node* base, int offset, Node* value, BasicType bt) { |
1094 Node* adr = basic_plus_adr(base, offset); | 1094 Node* adr = basic_plus_adr(base, offset); |
1095 mem = StoreNode::make(_igvn, ctl, mem, adr, NULL, value, bt); | 1095 mem = StoreNode::make(_igvn, ctl, mem, adr, NULL, value, bt, MemNode::unordered); |
1096 transform_later(mem); | 1096 transform_later(mem); |
1097 return mem; | 1097 return mem; |
1098 } | 1098 } |
1099 | 1099 |
1100 //============================================================================= | 1100 //============================================================================= |
1270 } | 1270 } |
1271 | 1271 |
1272 // Load(-locked) the heap top. | 1272 // Load(-locked) the heap top. |
1273 // See note above concerning the control input when using a TLAB | 1273 // See note above concerning the control input when using a TLAB |
1274 Node *old_eden_top = UseTLAB | 1274 Node *old_eden_top = UseTLAB |
1275 ? new (C) LoadPNode (ctrl, contended_phi_rawmem, eden_top_adr, TypeRawPtr::BOTTOM, TypeRawPtr::BOTTOM) | 1275 ? new (C) LoadPNode (ctrl, contended_phi_rawmem, eden_top_adr, TypeRawPtr::BOTTOM, TypeRawPtr::BOTTOM, MemNode::unordered) |
1276 : new (C) LoadPLockedNode(contended_region, contended_phi_rawmem, eden_top_adr); | 1276 : new (C) LoadPLockedNode(contended_region, contended_phi_rawmem, eden_top_adr, MemNode::acquire); |
1277 | 1277 |
1278 transform_later(old_eden_top); | 1278 transform_later(old_eden_top); |
1279 // Add to heap top to get a new heap top | 1279 // Add to heap top to get a new heap top |
1280 Node *new_eden_top = new (C) AddPNode(top(), old_eden_top, size_in_bytes); | 1280 Node *new_eden_top = new (C) AddPNode(top(), old_eden_top, size_in_bytes); |
1281 transform_later(new_eden_top); | 1281 transform_later(new_eden_top); |
1318 // StorePConditional produces flags for a test PLUS a modified raw | 1318 // StorePConditional produces flags for a test PLUS a modified raw |
1319 // memory state. | 1319 // memory state. |
1320 if (UseTLAB) { | 1320 if (UseTLAB) { |
1321 Node* store_eden_top = | 1321 Node* store_eden_top = |
1322 new (C) StorePNode(needgc_false, contended_phi_rawmem, eden_top_adr, | 1322 new (C) StorePNode(needgc_false, contended_phi_rawmem, eden_top_adr, |
1323 TypeRawPtr::BOTTOM, new_eden_top); | 1323 TypeRawPtr::BOTTOM, new_eden_top, MemNode::unordered); |
1324 transform_later(store_eden_top); | 1324 transform_later(store_eden_top); |
1325 fast_oop_ctrl = needgc_false; // No contention, so this is the fast path | 1325 fast_oop_ctrl = needgc_false; // No contention, so this is the fast path |
1326 fast_oop_rawmem = store_eden_top; | 1326 fast_oop_rawmem = store_eden_top; |
1327 } else { | 1327 } else { |
1328 Node* store_eden_top = | 1328 Node* store_eden_top = |
1698 | 1698 |
1699 Node *eden_pf_adr = new (C) AddPNode( top()/*not oop*/, thread, | 1699 Node *eden_pf_adr = new (C) AddPNode( top()/*not oop*/, thread, |
1700 _igvn.MakeConX(in_bytes(JavaThread::tlab_pf_top_offset())) ); | 1700 _igvn.MakeConX(in_bytes(JavaThread::tlab_pf_top_offset())) ); |
1701 transform_later(eden_pf_adr); | 1701 transform_later(eden_pf_adr); |
1702 | 1702 |
1703 Node *old_pf_wm = new (C) LoadPNode( needgc_false, | 1703 Node *old_pf_wm = new (C) LoadPNode(needgc_false, |
1704 contended_phi_rawmem, eden_pf_adr, | 1704 contended_phi_rawmem, eden_pf_adr, |
1705 TypeRawPtr::BOTTOM, TypeRawPtr::BOTTOM ); | 1705 TypeRawPtr::BOTTOM, TypeRawPtr::BOTTOM, |
1706 MemNode::unordered); | |
1706 transform_later(old_pf_wm); | 1707 transform_later(old_pf_wm); |
1707 | 1708 |
1708 // check against new_eden_top | 1709 // check against new_eden_top |
1709 Node *need_pf_cmp = new (C) CmpPNode( new_eden_top, old_pf_wm ); | 1710 Node *need_pf_cmp = new (C) CmpPNode( new_eden_top, old_pf_wm ); |
1710 transform_later(need_pf_cmp); | 1711 transform_later(need_pf_cmp); |
1724 Node *new_pf_wmt = new (C) AddPNode( top(), old_pf_wm, | 1725 Node *new_pf_wmt = new (C) AddPNode( top(), old_pf_wm, |
1725 _igvn.MakeConX(AllocatePrefetchDistance) ); | 1726 _igvn.MakeConX(AllocatePrefetchDistance) ); |
1726 transform_later(new_pf_wmt ); | 1727 transform_later(new_pf_wmt ); |
1727 new_pf_wmt->set_req(0, need_pf_true); | 1728 new_pf_wmt->set_req(0, need_pf_true); |
1728 | 1729 |
1729 Node *store_new_wmt = new (C) StorePNode( need_pf_true, | 1730 Node *store_new_wmt = new (C) StorePNode(need_pf_true, |
1730 contended_phi_rawmem, eden_pf_adr, | 1731 contended_phi_rawmem, eden_pf_adr, |
1731 TypeRawPtr::BOTTOM, new_pf_wmt ); | 1732 TypeRawPtr::BOTTOM, new_pf_wmt, |
1733 MemNode::unordered); | |
1732 transform_later(store_new_wmt); | 1734 transform_later(store_new_wmt); |
1733 | 1735 |
1734 // adding prefetches | 1736 // adding prefetches |
1735 pf_phi_abio->init_req( fall_in_path, i_o ); | 1737 pf_phi_abio->init_req( fall_in_path, i_o ); |
1736 | 1738 |