864 865 // implementation of object creation 866 Node* set_output_for_allocation(AllocateNode* alloc, 867 const TypeOopPtr* oop_type, 868 bool deoptimize_on_exception=false); 869 Node* get_layout_helper(Node* klass_node, jint& constant_value); 870 Node* new_instance(Node* klass_node, 871 Node* slow_test = NULL, 872 Node* *return_size_val = NULL, 873 bool deoptimize_on_exception = false); 874 Node* new_array(Node* klass_node, Node* count_val, int nargs, 875 Node* *return_size_val = NULL, 876 bool deoptimize_on_exception = false); 877 878 // java.lang.String helpers 879 Node* load_String_length(Node* ctrl, Node* str); 880 Node* load_String_value(Node* ctrl, Node* str); 881 Node* load_String_coder(Node* ctrl, Node* str); 882 void store_String_value(Node* ctrl, Node* str, Node* value); 883 void store_String_coder(Node* ctrl, Node* str, Node* value); 884 Node* compress_string(Node* src, Node* dst, Node* count); 885 void inflate_string(Node* src, Node* dst, Node* count); 886 void inflate_string_slow(Node* src, Node* dst, Node* start, Node* count); 887 888 // Handy for making control flow 889 IfNode* create_and_map_if(Node* ctrl, Node* tst, float prob, float cnt) { 890 IfNode* iff = new IfNode(ctrl, tst, prob, cnt);// New IfNode's 891 _gvn.set_type(iff, iff->Value(&_gvn)); // Value may be known at parse-time 892 // Place 'if' on worklist if it will be in graph 893 if (!tst->is_Con()) record_for_igvn(iff); // Range-check and Null-check removal is later 894 return iff; 895 } 896 897 IfNode* create_and_xform_if(Node* ctrl, Node* tst, float prob, float cnt) { 898 IfNode* iff = new IfNode(ctrl, tst, prob, cnt);// New IfNode's 899 _gvn.transform(iff); // Value may be known at parse-time 900 // Place 'if' on worklist if it will be in graph 901 if (!tst->is_Con()) record_for_igvn(iff); // Range-check and Null-check removal is later 902 return iff; 903 } 904 905 // Insert a loop predicate into the graph | 864 865 // implementation of object creation 866 Node* set_output_for_allocation(AllocateNode* alloc, 867 const TypeOopPtr* oop_type, 868 bool deoptimize_on_exception=false); 869 Node* get_layout_helper(Node* klass_node, jint& constant_value); 870 Node* new_instance(Node* klass_node, 871 Node* slow_test = NULL, 872 Node* *return_size_val = NULL, 873 bool deoptimize_on_exception = false); 874 Node* new_array(Node* klass_node, Node* count_val, int nargs, 875 Node* *return_size_val = NULL, 876 bool deoptimize_on_exception = false); 877 878 // java.lang.String helpers 879 Node* load_String_length(Node* ctrl, Node* str); 880 Node* load_String_value(Node* ctrl, Node* str); 881 Node* load_String_coder(Node* ctrl, Node* str); 882 void store_String_value(Node* ctrl, Node* str, Node* value); 883 void store_String_coder(Node* ctrl, Node* str, Node* value); 884 Node* compress_string(Node* src, const TypeAryPtr* src_type, Node* dst, Node* count); 885 void inflate_string(Node* src, Node* dst, const TypeAryPtr* dst_type, Node* count); 886 void inflate_string_slow(Node* src, Node* dst, Node* start, Node* count); 887 888 // Handy for making control flow 889 IfNode* create_and_map_if(Node* ctrl, Node* tst, float prob, float cnt) { 890 IfNode* iff = new IfNode(ctrl, tst, prob, cnt);// New IfNode's 891 _gvn.set_type(iff, iff->Value(&_gvn)); // Value may be known at parse-time 892 // Place 'if' on worklist if it will be in graph 893 if (!tst->is_Con()) record_for_igvn(iff); // Range-check and Null-check removal is later 894 return iff; 895 } 896 897 IfNode* create_and_xform_if(Node* ctrl, Node* tst, float prob, float cnt) { 898 IfNode* iff = new IfNode(ctrl, tst, prob, cnt);// New IfNode's 899 _gvn.transform(iff); // Value may be known at parse-time 900 // Place 'if' on worklist if it will be in graph 901 if (!tst->is_Con()) record_for_igvn(iff); // Range-check and Null-check removal is later 902 return iff; 903 } 904 905 // Insert a loop predicate into the graph |