Mercurial > hg > graal-jvmci-8
comparison src/share/vm/opto/memnode.cpp @ 4763:1dc233a8c7fe
7121140: Allocation paths require explicit memory synchronization operations for RMO systems
Summary: adds store store barrier after initialization of header and body of objects.
Reviewed-by: never, kvn
author | roland |
---|---|
date | Tue, 20 Dec 2011 16:56:50 +0100 |
parents | 069ab3f976d3 |
children | 35acf8f0a2e4 |
comparison
equal
deleted
inserted
replaced
4762:069ab3f976d3 | 4763:1dc233a8c7fe |
---|---|
2719 case Op_MemBarAcquireLock: return new(C, len) MemBarAcquireLockNode(C, atp, pn); | 2719 case Op_MemBarAcquireLock: return new(C, len) MemBarAcquireLockNode(C, atp, pn); |
2720 case Op_MemBarReleaseLock: return new(C, len) MemBarReleaseLockNode(C, atp, pn); | 2720 case Op_MemBarReleaseLock: return new(C, len) MemBarReleaseLockNode(C, atp, pn); |
2721 case Op_MemBarVolatile: return new(C, len) MemBarVolatileNode(C, atp, pn); | 2721 case Op_MemBarVolatile: return new(C, len) MemBarVolatileNode(C, atp, pn); |
2722 case Op_MemBarCPUOrder: return new(C, len) MemBarCPUOrderNode(C, atp, pn); | 2722 case Op_MemBarCPUOrder: return new(C, len) MemBarCPUOrderNode(C, atp, pn); |
2723 case Op_Initialize: return new(C, len) InitializeNode(C, atp, pn); | 2723 case Op_Initialize: return new(C, len) InitializeNode(C, atp, pn); |
2724 case Op_MemBarStoreStore: return new(C, len) MemBarStoreStoreNode(C, atp, pn); | |
2724 default: ShouldNotReachHere(); return NULL; | 2725 default: ShouldNotReachHere(); return NULL; |
2725 } | 2726 } |
2726 } | 2727 } |
2727 | 2728 |
2728 //------------------------------Ideal------------------------------------------ | 2729 //------------------------------Ideal------------------------------------------ |
2868 // will be considered for capture by an InitializeNode. This puts a | 2869 // will be considered for capture by an InitializeNode. This puts a |
2869 // reasonable limit on the complexity of optimized initializations. | 2870 // reasonable limit on the complexity of optimized initializations. |
2870 | 2871 |
2871 //---------------------------InitializeNode------------------------------------ | 2872 //---------------------------InitializeNode------------------------------------ |
2872 InitializeNode::InitializeNode(Compile* C, int adr_type, Node* rawoop) | 2873 InitializeNode::InitializeNode(Compile* C, int adr_type, Node* rawoop) |
2873 : _is_complete(Incomplete), | 2874 : _is_complete(Incomplete), _does_not_escape(false), |
2874 MemBarNode(C, adr_type, rawoop) | 2875 MemBarNode(C, adr_type, rawoop) |
2875 { | 2876 { |
2876 init_class_id(Class_Initialize); | 2877 init_class_id(Class_Initialize); |
2877 | 2878 |
2878 assert(adr_type == Compile::AliasIdxRaw, "only valid atp"); | 2879 assert(adr_type == Compile::AliasIdxRaw, "only valid atp"); |