Mercurial > hg > graal-jvmci-8
comparison src/share/vm/opto/memnode.hpp @ 14439:50fdb38839eb
8028515: PPPC64 (part 113.2): opto: Introduce LoadFence/StoreFence.
Summary: Use new nodes for loadFence/storeFence intrinsics in C2.
Reviewed-by: kvn, dholmes
author | goetz |
---|---|
date | Tue, 26 Nov 2013 18:38:19 -0800 |
parents | da862781b584 |
children | abec000618bf |
comparison
equal
deleted
inserted
replaced
14438:4cdf4f71177d | 14439:50fdb38839eb |
---|---|
992 MemBarAcquireNode(Compile* C, int alias_idx, Node* precedent) | 992 MemBarAcquireNode(Compile* C, int alias_idx, Node* precedent) |
993 : MemBarNode(C, alias_idx, precedent) {} | 993 : MemBarNode(C, alias_idx, precedent) {} |
994 virtual int Opcode() const; | 994 virtual int Opcode() const; |
995 }; | 995 }; |
996 | 996 |
997 // "Acquire" - no following ref can move before (but earlier refs can | |
998 // follow, like an early Load stalled in cache). Requires multi-cpu | |
999 // visibility. Inserted independ of any load, as required | |
1000 // for intrinsic sun.misc.Unsafe.loadFence(). | |
1001 class LoadFenceNode: public MemBarNode { | |
1002 public: | |
1003 LoadFenceNode(Compile* C, int alias_idx, Node* precedent) | |
1004 : MemBarNode(C, alias_idx, precedent) {} | |
1005 virtual int Opcode() const; | |
1006 }; | |
1007 | |
997 // "Release" - no earlier ref can move after (but later refs can move | 1008 // "Release" - no earlier ref can move after (but later refs can move |
998 // up, like a speculative pipelined cache-hitting Load). Requires | 1009 // up, like a speculative pipelined cache-hitting Load). Requires |
999 // multi-cpu visibility. Inserted before a volatile store. | 1010 // multi-cpu visibility. Inserted before a volatile store. |
1000 class MemBarReleaseNode: public MemBarNode { | 1011 class MemBarReleaseNode: public MemBarNode { |
1001 public: | 1012 public: |
1002 MemBarReleaseNode(Compile* C, int alias_idx, Node* precedent) | 1013 MemBarReleaseNode(Compile* C, int alias_idx, Node* precedent) |
1014 : MemBarNode(C, alias_idx, precedent) {} | |
1015 virtual int Opcode() const; | |
1016 }; | |
1017 | |
1018 // "Release" - no earlier ref can move after (but later refs can move | |
1019 // up, like a speculative pipelined cache-hitting Load). Requires | |
1020 // multi-cpu visibility. Inserted independent of any store, as required | |
1021 // for intrinsic sun.misc.Unsafe.storeFence(). | |
1022 class StoreFenceNode: public MemBarNode { | |
1023 public: | |
1024 StoreFenceNode(Compile* C, int alias_idx, Node* precedent) | |
1003 : MemBarNode(C, alias_idx, precedent) {} | 1025 : MemBarNode(C, alias_idx, precedent) {} |
1004 virtual int Opcode() const; | 1026 virtual int Opcode() const; |
1005 }; | 1027 }; |
1006 | 1028 |
1007 // "Acquire" - no following ref can move before (but earlier refs can | 1029 // "Acquire" - no following ref can move before (but earlier refs can |