diff options
author | roland <none@none> | 2011-12-20 16:56:50 +0100 |
---|---|---|
committer | roland <none@none> | 2011-12-20 16:56:50 +0100 |
commit | f79d19e408291ee5524c40c4ab93281a462953a3 (patch) | |
tree | 7918337a79fbf00f608c96a780e2701d48d2837f /src/share/vm/opto/graphKit.cpp | |
parent | 4dca39c61dad47469f5936a88c87fdaef119f2e1 (diff) |
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
Diffstat (limited to 'src/share/vm/opto/graphKit.cpp')
-rw-r--r-- | src/share/vm/opto/graphKit.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/share/vm/opto/graphKit.cpp b/src/share/vm/opto/graphKit.cpp index 0fc0a7c4f..565896079 100644 --- a/src/share/vm/opto/graphKit.cpp +++ b/src/share/vm/opto/graphKit.cpp @@ -3337,6 +3337,19 @@ InitializeNode* AllocateNode::initialization() { return NULL; } +// Trace Allocate -> Proj[Parm] -> MemBarStoreStore +MemBarStoreStoreNode* AllocateNode::storestore() { + ProjNode* rawoop = proj_out(AllocateNode::RawAddress); + if (rawoop == NULL) return NULL; + for (DUIterator_Fast imax, i = rawoop->fast_outs(imax); i < imax; i++) { + Node* storestore = rawoop->fast_out(i); + if (storestore->is_MemBarStoreStore()) { + return storestore->as_MemBarStoreStore(); + } + } + return NULL; +} + //----------------------------- loop predicates --------------------------- //------------------------------add_predicate_impl---------------------------- |