src/share/vm/opto/memnode.hpp

changeset 3047
f1c12354c3f7
parent 2708
1d1603768966
child 3052
1af104d6cf99
equal deleted inserted replaced
3046:a19c671188cb 3047:f1c12354c3f7
877 Node* precedent = NULL); 877 Node* precedent = NULL);
878 }; 878 };
879 879
880 // "Acquire" - no following ref can move before (but earlier refs can 880 // "Acquire" - no following ref can move before (but earlier refs can
881 // follow, like an early Load stalled in cache). Requires multi-cpu 881 // follow, like an early Load stalled in cache). Requires multi-cpu
882 // visibility. Inserted after a volatile load or FastLock. 882 // visibility. Inserted after a volatile load.
883 class MemBarAcquireNode: public MemBarNode { 883 class MemBarAcquireNode: public MemBarNode {
884 public: 884 public:
885 MemBarAcquireNode(Compile* C, int alias_idx, Node* precedent) 885 MemBarAcquireNode(Compile* C, int alias_idx, Node* precedent)
886 : MemBarNode(C, alias_idx, precedent) {} 886 : MemBarNode(C, alias_idx, precedent) {}
887 virtual int Opcode() const; 887 virtual int Opcode() const;
888 }; 888 };
889 889
890 // "Release" - no earlier ref can move after (but later refs can move 890 // "Release" - no earlier ref can move after (but later refs can move
891 // up, like a speculative pipelined cache-hitting Load). Requires 891 // up, like a speculative pipelined cache-hitting Load). Requires
892 // multi-cpu visibility. Inserted before a volatile store or FastUnLock. 892 // multi-cpu visibility. Inserted before a volatile store.
893 class MemBarReleaseNode: public MemBarNode { 893 class MemBarReleaseNode: public MemBarNode {
894 public: 894 public:
895 MemBarReleaseNode(Compile* C, int alias_idx, Node* precedent) 895 MemBarReleaseNode(Compile* C, int alias_idx, Node* precedent)
896 : MemBarNode(C, alias_idx, precedent) {}
897 virtual int Opcode() const;
898 };
899
900 // "Acquire" - no following ref can move before (but earlier refs can
901 // follow, like an early Load stalled in cache). Requires multi-cpu
902 // visibility. Inserted after a FastLock.
903 class MemBarAcquireLockNode: public MemBarNode {
904 public:
905 MemBarAcquireLockNode(Compile* C, int alias_idx, Node* precedent)
906 : MemBarNode(C, alias_idx, precedent) {}
907 virtual int Opcode() const;
908 };
909
910 // "Release" - no earlier ref can move after (but later refs can move
911 // up, like a speculative pipelined cache-hitting Load). Requires
912 // multi-cpu visibility. Inserted before a FastUnLock.
913 class MemBarReleaseLockNode: public MemBarNode {
914 public:
915 MemBarReleaseLockNode(Compile* C, int alias_idx, Node* precedent)
896 : MemBarNode(C, alias_idx, precedent) {} 916 : MemBarNode(C, alias_idx, precedent) {}
897 virtual int Opcode() const; 917 virtual int Opcode() const;
898 }; 918 };
899 919
900 // Ordering between a volatile store and a following volatile load. 920 // Ordering between a volatile store and a following volatile load.

mercurial