< prev index next >

src/hotspot/share/opto/graphKit.hpp

Print this page




 875   // Exact type check used for predicted calls and casts.
 876   // Rewrites (*casted_receiver) to be casted to the stronger type.
 877   // (Caller is responsible for doing replace_in_map.)
 878   Node* type_check_receiver(Node* receiver, ciKlass* klass, float prob,
 879                             Node* *casted_receiver);
 880   Node* type_check(Node* recv_klass, const TypeKlassPtr* tklass, float prob);
 881 
 882   // implementation of object creation
 883   Node* set_output_for_allocation(AllocateNode* alloc,
 884                                   const TypeOopPtr* oop_type,
 885                                   bool deoptimize_on_exception=false);
 886   Node* get_layout_helper(Node* klass_node, jint& constant_value);
 887   Node* new_instance(Node* klass_node,
 888                      Node* slow_test = NULL,
 889                      Node* *return_size_val = NULL,
 890                      bool deoptimize_on_exception = false,
 891                      ValueTypeBaseNode* value_node = NULL);
 892   Node* new_array(Node* klass_node, Node* count_val, int nargs,
 893                   Node* *return_size_val = NULL,
 894                   bool deoptimize_on_exception = false);

 895   void initialize_value_type_array(Node* array, Node* length, ciValueKlass* vk, int nargs);
 896 
 897   // java.lang.String helpers
 898   Node* load_String_length(Node* ctrl, Node* str);
 899   Node* load_String_value(Node* ctrl, Node* str);
 900   Node* load_String_coder(Node* ctrl, Node* str);
 901   void store_String_value(Node* ctrl, Node* str, Node* value);
 902   void store_String_coder(Node* ctrl, Node* str, Node* value);
 903   Node* capture_memory(const TypePtr* src_type, const TypePtr* dst_type);
 904   Node* compress_string(Node* src, const TypeAryPtr* src_type, Node* dst, Node* count);
 905   void inflate_string(Node* src, Node* dst, const TypeAryPtr* dst_type, Node* count);
 906   void inflate_string_slow(Node* src, Node* dst, Node* start, Node* count);
 907 
 908   // Handy for making control flow
 909   IfNode* create_and_map_if(Node* ctrl, Node* tst, float prob, float cnt) {
 910     IfNode* iff = new IfNode(ctrl, tst, prob, cnt);// New IfNode's
 911     _gvn.set_type(iff, iff->Value(&_gvn)); // Value may be known at parse-time
 912     // Place 'if' on worklist if it will be in graph
 913     if (!tst->is_Con())  record_for_igvn(iff);     // Range-check and Null-check removal is later
 914     return iff;




 875   // Exact type check used for predicted calls and casts.
 876   // Rewrites (*casted_receiver) to be casted to the stronger type.
 877   // (Caller is responsible for doing replace_in_map.)
 878   Node* type_check_receiver(Node* receiver, ciKlass* klass, float prob,
 879                             Node* *casted_receiver);
 880   Node* type_check(Node* recv_klass, const TypeKlassPtr* tklass, float prob);
 881 
 882   // implementation of object creation
 883   Node* set_output_for_allocation(AllocateNode* alloc,
 884                                   const TypeOopPtr* oop_type,
 885                                   bool deoptimize_on_exception=false);
 886   Node* get_layout_helper(Node* klass_node, jint& constant_value);
 887   Node* new_instance(Node* klass_node,
 888                      Node* slow_test = NULL,
 889                      Node* *return_size_val = NULL,
 890                      bool deoptimize_on_exception = false,
 891                      ValueTypeBaseNode* value_node = NULL);
 892   Node* new_array(Node* klass_node, Node* count_val, int nargs,
 893                   Node* *return_size_val = NULL,
 894                   bool deoptimize_on_exception = false);
 895   // Initialize a non-flattened value type array with default oops
 896   void initialize_value_type_array(Node* array, Node* length, ciValueKlass* vk, int nargs);
 897 
 898   // java.lang.String helpers
 899   Node* load_String_length(Node* ctrl, Node* str);
 900   Node* load_String_value(Node* ctrl, Node* str);
 901   Node* load_String_coder(Node* ctrl, Node* str);
 902   void store_String_value(Node* ctrl, Node* str, Node* value);
 903   void store_String_coder(Node* ctrl, Node* str, Node* value);
 904   Node* capture_memory(const TypePtr* src_type, const TypePtr* dst_type);
 905   Node* compress_string(Node* src, const TypeAryPtr* src_type, Node* dst, Node* count);
 906   void inflate_string(Node* src, Node* dst, const TypeAryPtr* dst_type, Node* count);
 907   void inflate_string_slow(Node* src, Node* dst, Node* start, Node* count);
 908 
 909   // Handy for making control flow
 910   IfNode* create_and_map_if(Node* ctrl, Node* tst, float prob, float cnt) {
 911     IfNode* iff = new IfNode(ctrl, tst, prob, cnt);// New IfNode's
 912     _gvn.set_type(iff, iff->Value(&_gvn)); // Value may be known at parse-time
 913     // Place 'if' on worklist if it will be in graph
 914     if (!tst->is_Con())  record_for_igvn(iff);     // Range-check and Null-check removal is later
 915     return iff;


< prev index next >