src/share/vm/opto/memnode.hpp

changeset 6489
50fdb38839eb
parent 6485
da862781b584
child 6503
a9becfeecd1b
equal deleted inserted replaced
6488:4cdf4f71177d 6489: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

mercurial