< prev index next >

src/share/vm/opto/graphKit.hpp

Print this page




 877     _gvn.set_type(iff, iff->Value(&_gvn)); // Value may be known at parse-time
 878     // Place 'if' on worklist if it will be in graph
 879     if (!tst->is_Con())  record_for_igvn(iff);     // Range-check and Null-check removal is later
 880     return iff;
 881   }
 882 
 883   IfNode* create_and_xform_if(Node* ctrl, Node* tst, float prob, float cnt) {
 884     IfNode* iff = new IfNode(ctrl, tst, prob, cnt);// New IfNode's
 885     _gvn.transform(iff);                           // Value may be known at parse-time
 886     // Place 'if' on worklist if it will be in graph
 887     if (!tst->is_Con())  record_for_igvn(iff);     // Range-check and Null-check removal is later
 888     return iff;
 889   }
 890 
 891   // Insert a loop predicate into the graph
 892   void add_predicate(int nargs = 0);
 893   void add_predicate_impl(Deoptimization::DeoptReason reason, int nargs);
 894 
 895   // Produce new array node of stable type
 896   Node* cast_array_to_stable(Node* ary, const TypeAryPtr* ary_type);







 897 };
 898 
 899 // Helper class to support building of control flow branches. Upon
 900 // creation the map and sp at bci are cloned and restored upon de-
 901 // struction. Typical use:
 902 //
 903 // { PreserveJVMState pjvms(this);
 904 //   // code of new branch
 905 // }
 906 // // here the JVM state at bci is established
 907 
 908 class PreserveJVMState: public StackObj {
 909  protected:
 910   GraphKit*      _kit;
 911 #ifdef ASSERT
 912   int            _block;  // PO of current block, if a Parse
 913   int            _bci;
 914 #endif
 915   SafePointNode* _map;
 916   uint           _sp;




 877     _gvn.set_type(iff, iff->Value(&_gvn)); // Value may be known at parse-time
 878     // Place 'if' on worklist if it will be in graph
 879     if (!tst->is_Con())  record_for_igvn(iff);     // Range-check and Null-check removal is later
 880     return iff;
 881   }
 882 
 883   IfNode* create_and_xform_if(Node* ctrl, Node* tst, float prob, float cnt) {
 884     IfNode* iff = new IfNode(ctrl, tst, prob, cnt);// New IfNode's
 885     _gvn.transform(iff);                           // Value may be known at parse-time
 886     // Place 'if' on worklist if it will be in graph
 887     if (!tst->is_Con())  record_for_igvn(iff);     // Range-check and Null-check removal is later
 888     return iff;
 889   }
 890 
 891   // Insert a loop predicate into the graph
 892   void add_predicate(int nargs = 0);
 893   void add_predicate_impl(Deoptimization::DeoptReason reason, int nargs);
 894 
 895   // Produce new array node of stable type
 896   Node* cast_array_to_stable(Node* ary, const TypeAryPtr* ary_type);
 897 
 898   Node* shenandoah_read_barrier(Node* obj);
 899   Node* shenandoah_read_barrier_nomem(Node* obj);
 900   Node* shenandoah_write_barrier(Node* obj);
 901   void shenandoah_acmp_barrier(Node*& a, Node*& b);
 902 private:
 903   Node* shenandoah_read_barrier_impl(Node* obj, bool use_ctrl, bool use_mem);
 904 };
 905 
 906 // Helper class to support building of control flow branches. Upon
 907 // creation the map and sp at bci are cloned and restored upon de-
 908 // struction. Typical use:
 909 //
 910 // { PreserveJVMState pjvms(this);
 911 //   // code of new branch
 912 // }
 913 // // here the JVM state at bci is established
 914 
 915 class PreserveJVMState: public StackObj {
 916  protected:
 917   GraphKit*      _kit;
 918 #ifdef ASSERT
 919   int            _block;  // PO of current block, if a Parse
 920   int            _bci;
 921 #endif
 922   SafePointNode* _map;
 923   uint           _sp;


< prev index next >