< prev index next >

src/share/vm/opto/graphKit.hpp

Print this page
rev 13055 : Implement barriers for maintaining connection matrix.


 909     return iff;
 910   }
 911 
 912   IfNode* create_and_xform_if(Node* ctrl, Node* tst, float prob, float cnt) {
 913     IfNode* iff = new IfNode(ctrl, tst, prob, cnt);// New IfNode's
 914     _gvn.transform(iff);                           // Value may be known at parse-time
 915     // Place 'if' on worklist if it will be in graph
 916     if (!tst->is_Con())  record_for_igvn(iff);     // Range-check and Null-check removal is later
 917     return iff;
 918   }
 919 
 920   // Insert a loop predicate into the graph
 921   void add_predicate(int nargs = 0);
 922   void add_predicate_impl(Deoptimization::DeoptReason reason, int nargs);
 923 
 924   Node* make_constant_from_field(ciField* field, Node* obj);
 925 
 926   // Produce new array node of stable type
 927   Node* cast_array_to_stable(Node* ary, const TypeAryPtr* ary_type);
 928 

 929   Node* shenandoah_read_barrier(Node* obj);
 930   Node* shenandoah_read_barrier_storeval(Node* obj);
 931   Node* shenandoah_write_barrier(Node* obj);
 932   Node* cmp_objects(Node* a, Node* b);
 933 private:
 934   Node* shenandoah_read_barrier_impl(Node* obj, bool use_ctrl, bool use_mem, bool allow_fromspace);
 935 };
 936 
 937 // Helper class to support building of control flow branches. Upon
 938 // creation the map and sp at bci are cloned and restored upon de-
 939 // struction. Typical use:
 940 //
 941 // { PreserveJVMState pjvms(this);
 942 //   // code of new branch
 943 // }
 944 // // here the JVM state at bci is established
 945 
 946 class PreserveJVMState: public StackObj {
 947  protected:
 948   GraphKit*      _kit;




 909     return iff;
 910   }
 911 
 912   IfNode* create_and_xform_if(Node* ctrl, Node* tst, float prob, float cnt) {
 913     IfNode* iff = new IfNode(ctrl, tst, prob, cnt);// New IfNode's
 914     _gvn.transform(iff);                           // Value may be known at parse-time
 915     // Place 'if' on worklist if it will be in graph
 916     if (!tst->is_Con())  record_for_igvn(iff);     // Range-check and Null-check removal is later
 917     return iff;
 918   }
 919 
 920   // Insert a loop predicate into the graph
 921   void add_predicate(int nargs = 0);
 922   void add_predicate_impl(Deoptimization::DeoptReason reason, int nargs);
 923 
 924   Node* make_constant_from_field(ciField* field, Node* obj);
 925 
 926   // Produce new array node of stable type
 927   Node* cast_array_to_stable(Node* ary, const TypeAryPtr* ary_type);
 928 
 929   void shenandoah_update_matrix(Node* adr, Node* val);
 930   Node* shenandoah_read_barrier(Node* obj);
 931   Node* shenandoah_read_barrier_storeval(Node* obj);
 932   Node* shenandoah_write_barrier(Node* obj);
 933   Node* cmp_objects(Node* a, Node* b);
 934 private:
 935   Node* shenandoah_read_barrier_impl(Node* obj, bool use_ctrl, bool use_mem, bool allow_fromspace);
 936 };
 937 
 938 // Helper class to support building of control flow branches. Upon
 939 // creation the map and sp at bci are cloned and restored upon de-
 940 // struction. Typical use:
 941 //
 942 // { PreserveJVMState pjvms(this);
 943 //   // code of new branch
 944 // }
 945 // // here the JVM state at bci is established
 946 
 947 class PreserveJVMState: public StackObj {
 948  protected:
 949   GraphKit*      _kit;


< prev index next >