850 851 // Generate a check-cast idiom. Used by both the check-cast bytecode 852 // and the array-store bytecode 853 Node* gen_checkcast( Node *subobj, Node* superkls, 854 Node* *failure_control = NULL ); 855 856 Node* gen_subtype_check(Node* subklass, Node* superklass) { 857 MergeMemNode* mem = merged_memory(); 858 Node* ctrl = control(); 859 Node* n = Phase::gen_subtype_check(subklass, superklass, &ctrl, mem, &_gvn); 860 set_control(ctrl); 861 return n; 862 } 863 864 // Exact type check used for predicted calls and casts. 865 // Rewrites (*casted_receiver) to be casted to the stronger type. 866 // (Caller is responsible for doing replace_in_map.) 867 Node* type_check_receiver(Node* receiver, ciKlass* klass, float prob, 868 Node* *casted_receiver); 869 870 // implementation of object creation 871 Node* set_output_for_allocation(AllocateNode* alloc, 872 const TypeOopPtr* oop_type, 873 bool deoptimize_on_exception=false); 874 Node* get_layout_helper(Node* klass_node, jint& constant_value); 875 Node* new_instance(Node* klass_node, 876 Node* slow_test = NULL, 877 Node* *return_size_val = NULL, 878 bool deoptimize_on_exception = false); 879 Node* new_array(Node* klass_node, Node* count_val, int nargs, 880 Node* *return_size_val = NULL, 881 bool deoptimize_on_exception = false); 882 883 // java.lang.String helpers 884 Node* load_String_length(Node* ctrl, Node* str); 885 Node* load_String_value(Node* ctrl, Node* str); 886 Node* load_String_coder(Node* ctrl, Node* str); 887 void store_String_value(Node* ctrl, Node* str, Node* value); 888 void store_String_coder(Node* ctrl, Node* str, Node* value); 889 Node* capture_memory(const TypePtr* src_type, const TypePtr* dst_type); | 850 851 // Generate a check-cast idiom. Used by both the check-cast bytecode 852 // and the array-store bytecode 853 Node* gen_checkcast( Node *subobj, Node* superkls, 854 Node* *failure_control = NULL ); 855 856 Node* gen_subtype_check(Node* subklass, Node* superklass) { 857 MergeMemNode* mem = merged_memory(); 858 Node* ctrl = control(); 859 Node* n = Phase::gen_subtype_check(subklass, superklass, &ctrl, mem, &_gvn); 860 set_control(ctrl); 861 return n; 862 } 863 864 // Exact type check used for predicted calls and casts. 865 // Rewrites (*casted_receiver) to be casted to the stronger type. 866 // (Caller is responsible for doing replace_in_map.) 867 Node* type_check_receiver(Node* receiver, ciKlass* klass, float prob, 868 Node* *casted_receiver); 869 870 Node* subtype_check_receiver(Node* receiver, ciKlass* klass, 871 Node** casted_receiver); 872 873 // implementation of object creation 874 Node* set_output_for_allocation(AllocateNode* alloc, 875 const TypeOopPtr* oop_type, 876 bool deoptimize_on_exception=false); 877 Node* get_layout_helper(Node* klass_node, jint& constant_value); 878 Node* new_instance(Node* klass_node, 879 Node* slow_test = NULL, 880 Node* *return_size_val = NULL, 881 bool deoptimize_on_exception = false); 882 Node* new_array(Node* klass_node, Node* count_val, int nargs, 883 Node* *return_size_val = NULL, 884 bool deoptimize_on_exception = false); 885 886 // java.lang.String helpers 887 Node* load_String_length(Node* ctrl, Node* str); 888 Node* load_String_value(Node* ctrl, Node* str); 889 Node* load_String_coder(Node* ctrl, Node* str); 890 void store_String_value(Node* ctrl, Node* str, Node* value); 891 void store_String_coder(Node* ctrl, Node* str, Node* value); 892 Node* capture_memory(const TypePtr* src_type, const TypePtr* dst_type); |