1.1 --- a/src/share/vm/opto/memnode.cpp Fri Nov 22 12:14:09 2013 -0800 1.2 +++ b/src/share/vm/opto/memnode.cpp Tue Nov 26 18:38:19 2013 -0800 1.3 @@ -1002,9 +1002,13 @@ 1.4 // a synchronized region. 1.5 while (current->is_Proj()) { 1.6 int opc = current->in(0)->Opcode(); 1.7 - if ((final && (opc == Op_MemBarAcquire || opc == Op_MemBarAcquireLock)) || 1.8 - opc == Op_MemBarRelease || opc == Op_MemBarCPUOrder || 1.9 - opc == Op_MemBarReleaseLock) { 1.10 + if ((final && (opc == Op_MemBarAcquire || 1.11 + opc == Op_MemBarAcquireLock || 1.12 + opc == Op_LoadFence)) || 1.13 + opc == Op_MemBarRelease || 1.14 + opc == Op_StoreFence || 1.15 + opc == Op_MemBarReleaseLock || 1.16 + opc == Op_MemBarCPUOrder) { 1.17 Node* mem = current->in(0)->in(TypeFunc::Memory); 1.18 if (mem->is_MergeMem()) { 1.19 MergeMemNode* merge = mem->as_MergeMem(); 1.20 @@ -2973,15 +2977,17 @@ 1.21 //------------------------------make------------------------------------------- 1.22 MemBarNode* MemBarNode::make(Compile* C, int opcode, int atp, Node* pn) { 1.23 switch (opcode) { 1.24 - case Op_MemBarAcquire: return new(C) MemBarAcquireNode(C, atp, pn); 1.25 - case Op_MemBarRelease: return new(C) MemBarReleaseNode(C, atp, pn); 1.26 - case Op_MemBarAcquireLock: return new(C) MemBarAcquireLockNode(C, atp, pn); 1.27 - case Op_MemBarReleaseLock: return new(C) MemBarReleaseLockNode(C, atp, pn); 1.28 - case Op_MemBarVolatile: return new(C) MemBarVolatileNode(C, atp, pn); 1.29 - case Op_MemBarCPUOrder: return new(C) MemBarCPUOrderNode(C, atp, pn); 1.30 - case Op_Initialize: return new(C) InitializeNode(C, atp, pn); 1.31 - case Op_MemBarStoreStore: return new(C) MemBarStoreStoreNode(C, atp, pn); 1.32 - default: ShouldNotReachHere(); return NULL; 1.33 + case Op_MemBarAcquire: return new(C) MemBarAcquireNode(C, atp, pn); 1.34 + case Op_LoadFence: return new(C) LoadFenceNode(C, atp, pn); 1.35 + case Op_MemBarRelease: return new(C) MemBarReleaseNode(C, atp, pn); 1.36 + case Op_StoreFence: return new(C) StoreFenceNode(C, atp, pn); 1.37 + case Op_MemBarAcquireLock: return new(C) MemBarAcquireLockNode(C, atp, pn); 1.38 + case Op_MemBarReleaseLock: return new(C) MemBarReleaseLockNode(C, atp, pn); 1.39 + case Op_MemBarVolatile: return new(C) MemBarVolatileNode(C, atp, pn); 1.40 + case Op_MemBarCPUOrder: return new(C) MemBarCPUOrderNode(C, atp, pn); 1.41 + case Op_Initialize: return new(C) InitializeNode(C, atp, pn); 1.42 + case Op_MemBarStoreStore: return new(C) MemBarStoreStoreNode(C, atp, pn); 1.43 + default: ShouldNotReachHere(); return NULL; 1.44 } 1.45 } 1.46