src/share/vm/opto/idealKit.hpp

Print this page
rev 5661 : 8024921: PPC64 (part 113): Extend Load and Store nodes to know about memory ordering.


 209   Node* URShiftX(Node* l, Node* r) { return transform(new (C) URShiftXNode(l, r)); }
 210   Node* ConX(jint k) { return (Node*)gvn().MakeConX(k); }
 211   Node* CastPX(Node* ctl, Node* p) { return transform(new (C) CastP2XNode(ctl, p)); }
 212 
 213   // Memory operations
 214 
 215   // This is the base version which is given an alias index.
 216   Node* load(Node* ctl,
 217              Node* adr,
 218              const Type* t,
 219              BasicType bt,
 220              int adr_idx,
 221              bool require_atomic_access = false);
 222 
 223   // Return the new StoreXNode
 224   Node* store(Node* ctl,
 225               Node* adr,
 226               Node* val,
 227               BasicType bt,
 228               int adr_idx,
 229               bool require_atomic_access = false);

 230 
 231   // Store a card mark ordered after store_oop
 232   Node* storeCM(Node* ctl,
 233                 Node* adr,
 234                 Node* val,
 235                 Node* oop_store,
 236                 int oop_adr_idx,
 237                 BasicType bt,
 238                 int adr_idx);
 239 
 240   // Trivial call
 241   void make_leaf_call(const TypeFunc *slow_call_type,
 242                       address slow_call,
 243                       const char *leaf_name,
 244                       Node* parm0,
 245                       Node* parm1 = NULL,
 246                       Node* parm2 = NULL,
 247                       Node* parm3 = NULL);
 248 
 249   void make_leaf_call_no_fp(const TypeFunc *slow_call_type,


 209   Node* URShiftX(Node* l, Node* r) { return transform(new (C) URShiftXNode(l, r)); }
 210   Node* ConX(jint k) { return (Node*)gvn().MakeConX(k); }
 211   Node* CastPX(Node* ctl, Node* p) { return transform(new (C) CastP2XNode(ctl, p)); }
 212 
 213   // Memory operations
 214 
 215   // This is the base version which is given an alias index.
 216   Node* load(Node* ctl,
 217              Node* adr,
 218              const Type* t,
 219              BasicType bt,
 220              int adr_idx,
 221              bool require_atomic_access = false);
 222 
 223   // Return the new StoreXNode
 224   Node* store(Node* ctl,
 225               Node* adr,
 226               Node* val,
 227               BasicType bt,
 228               int adr_idx,
 229               bool require_atomic_access,
 230               StoreNode::Sem sem);
 231 
 232   // Store a card mark ordered after store_oop
 233   Node* storeCM(Node* ctl,
 234                 Node* adr,
 235                 Node* val,
 236                 Node* oop_store,
 237                 int oop_adr_idx,
 238                 BasicType bt,
 239                 int adr_idx);
 240 
 241   // Trivial call
 242   void make_leaf_call(const TypeFunc *slow_call_type,
 243                       address slow_call,
 244                       const char *leaf_name,
 245                       Node* parm0,
 246                       Node* parm1 = NULL,
 247                       Node* parm2 = NULL,
 248                       Node* parm3 = NULL);
 249 
 250   void make_leaf_call_no_fp(const TypeFunc *slow_call_type,