< prev index next >

src/share/vm/opto/graphKit.hpp

Print this page




 898     _gvn.set_type(iff, iff->Value(&_gvn)); // Value may be known at parse-time
 899     // Place 'if' on worklist if it will be in graph
 900     if (!tst->is_Con())  record_for_igvn(iff);     // Range-check and Null-check removal is later
 901     return iff;
 902   }
 903 
 904   IfNode* create_and_xform_if(Node* ctrl, Node* tst, float prob, float cnt) {
 905     IfNode* iff = new (C) IfNode(ctrl, tst, prob, cnt);// New IfNode's
 906     _gvn.transform(iff);                           // Value may be known at parse-time
 907     // Place 'if' on worklist if it will be in graph
 908     if (!tst->is_Con())  record_for_igvn(iff);     // Range-check and Null-check removal is later
 909     return iff;
 910   }
 911 
 912   // Insert a loop predicate into the graph
 913   void add_predicate(int nargs = 0);
 914   void add_predicate_impl(Deoptimization::DeoptReason reason, int nargs);
 915 
 916   // Produce new array node of stable type
 917   Node* cast_array_to_stable(Node* ary, const TypeAryPtr* ary_type);






 918 };
 919 
 920 // Helper class to support building of control flow branches. Upon
 921 // creation the map and sp at bci are cloned and restored upon de-
 922 // struction. Typical use:
 923 //
 924 // { PreserveJVMState pjvms(this);
 925 //   // code of new branch
 926 // }
 927 // // here the JVM state at bci is established
 928 
 929 class PreserveJVMState: public StackObj {
 930  protected:
 931   GraphKit*      _kit;
 932 #ifdef ASSERT
 933   int            _block;  // PO of current block, if a Parse
 934   int            _bci;
 935 #endif
 936   SafePointNode* _map;
 937   uint           _sp;




 898     _gvn.set_type(iff, iff->Value(&_gvn)); // Value may be known at parse-time
 899     // Place 'if' on worklist if it will be in graph
 900     if (!tst->is_Con())  record_for_igvn(iff);     // Range-check and Null-check removal is later
 901     return iff;
 902   }
 903 
 904   IfNode* create_and_xform_if(Node* ctrl, Node* tst, float prob, float cnt) {
 905     IfNode* iff = new (C) IfNode(ctrl, tst, prob, cnt);// New IfNode's
 906     _gvn.transform(iff);                           // Value may be known at parse-time
 907     // Place 'if' on worklist if it will be in graph
 908     if (!tst->is_Con())  record_for_igvn(iff);     // Range-check and Null-check removal is later
 909     return iff;
 910   }
 911 
 912   // Insert a loop predicate into the graph
 913   void add_predicate(int nargs = 0);
 914   void add_predicate_impl(Deoptimization::DeoptReason reason, int nargs);
 915 
 916   // Produce new array node of stable type
 917   Node* cast_array_to_stable(Node* ary, const TypeAryPtr* ary_type);
 918 
 919   Node* shenandoah_read_barrier(Node* obj);
 920   Node* shenandoah_read_barrier_storeval(Node* obj);
 921   Node* shenandoah_write_barrier(Node* obj);
 922 private:
 923   Node* shenandoah_read_barrier_impl(Node* obj, bool use_ctrl, bool use_mem, bool allow_fromspace);
 924 };
 925 
 926 // Helper class to support building of control flow branches. Upon
 927 // creation the map and sp at bci are cloned and restored upon de-
 928 // struction. Typical use:
 929 //
 930 // { PreserveJVMState pjvms(this);
 931 //   // code of new branch
 932 // }
 933 // // here the JVM state at bci is established
 934 
 935 class PreserveJVMState: public StackObj {
 936  protected:
 937   GraphKit*      _kit;
 938 #ifdef ASSERT
 939   int            _block;  // PO of current block, if a Parse
 940   int            _bci;
 941 #endif
 942   SafePointNode* _map;
 943   uint           _sp;


< prev index next >