< prev index next >

src/share/vm/opto/graphKit.hpp

Print this page




 847   // Exact type check used for predicted calls and casts.
 848   // Rewrites (*casted_receiver) to be casted to the stronger type.
 849   // (Caller is responsible for doing replace_in_map.)
 850   Node* type_check_receiver(Node* receiver, ciKlass* klass, float prob,
 851                             Node* *casted_receiver);
 852 
 853   // implementation of object creation
 854   Node* set_output_for_allocation(AllocateNode* alloc,
 855                                   const TypeOopPtr* oop_type,
 856                                   bool deoptimize_on_exception=false);
 857   Node* get_layout_helper(Node* klass_node, jint& constant_value);
 858   Node* new_instance(Node* klass_node,
 859                      Node* slow_test = NULL,
 860                      Node* *return_size_val = NULL,
 861                      bool deoptimize_on_exception = false);
 862   Node* new_array(Node* klass_node, Node* count_val, int nargs,
 863                   Node* *return_size_val = NULL,
 864                   bool deoptimize_on_exception = false);
 865 
 866   // java.lang.String helpers
 867   Node* load_String_offset(Node* ctrl, Node* str);
 868   Node* load_String_length(Node* ctrl, Node* str);
 869   Node* load_String_value(Node* ctrl, Node* str);
 870   void store_String_offset(Node* ctrl, Node* str, Node* value);
 871   void store_String_length(Node* ctrl, Node* str, Node* value);
 872   void store_String_value(Node* ctrl, Node* str, Node* value);




 873 
 874   // Handy for making control flow
 875   IfNode* create_and_map_if(Node* ctrl, Node* tst, float prob, float cnt) {
 876     IfNode* iff = new IfNode(ctrl, tst, prob, cnt);// New IfNode's
 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);




 847   // Exact type check used for predicted calls and casts.
 848   // Rewrites (*casted_receiver) to be casted to the stronger type.
 849   // (Caller is responsible for doing replace_in_map.)
 850   Node* type_check_receiver(Node* receiver, ciKlass* klass, float prob,
 851                             Node* *casted_receiver);
 852 
 853   // implementation of object creation
 854   Node* set_output_for_allocation(AllocateNode* alloc,
 855                                   const TypeOopPtr* oop_type,
 856                                   bool deoptimize_on_exception=false);
 857   Node* get_layout_helper(Node* klass_node, jint& constant_value);
 858   Node* new_instance(Node* klass_node,
 859                      Node* slow_test = NULL,
 860                      Node* *return_size_val = NULL,
 861                      bool deoptimize_on_exception = false);
 862   Node* new_array(Node* klass_node, Node* count_val, int nargs,
 863                   Node* *return_size_val = NULL,
 864                   bool deoptimize_on_exception = false);
 865 
 866   // java.lang.String helpers

 867   Node* load_String_length(Node* ctrl, Node* str);
 868   Node* load_String_value(Node* ctrl, Node* str);
 869   Node* load_String_coder(Node* ctrl, Node* str);

 870   void store_String_value(Node* ctrl, Node* str, Node* value);
 871   void store_String_coder(Node* ctrl, Node* str, Node* value);
 872   Node* compress_string(Node* src, Node* dst, Node* count);
 873   void inflate_string(Node* src, Node* dst, Node* count);
 874   void inflate_string_slow(Node* src, Node* dst, Node* start, Node* count);
 875 
 876   // Handy for making control flow
 877   IfNode* create_and_map_if(Node* ctrl, Node* tst, float prob, float cnt) {
 878     IfNode* iff = new IfNode(ctrl, tst, prob, cnt);// New IfNode's
 879     _gvn.set_type(iff, iff->Value(&_gvn)); // Value may be known at parse-time
 880     // Place 'if' on worklist if it will be in graph
 881     if (!tst->is_Con())  record_for_igvn(iff);     // Range-check and Null-check removal is later
 882     return iff;
 883   }
 884 
 885   IfNode* create_and_xform_if(Node* ctrl, Node* tst, float prob, float cnt) {
 886     IfNode* iff = new IfNode(ctrl, tst, prob, cnt);// New IfNode's
 887     _gvn.transform(iff);                           // Value may be known at parse-time
 888     // Place 'if' on worklist if it will be in graph
 889     if (!tst->is_Con())  record_for_igvn(iff);     // Range-check and Null-check removal is later
 890     return iff;
 891   }
 892 
 893   // Insert a loop predicate into the graph
 894   void add_predicate(int nargs = 0);


< prev index next >