813 814 // Generate a check-cast idiom. Used by both the check-cast bytecode 815 // and the array-store bytecode 816 Node* gen_checkcast( Node *subobj, Node* superkls, 817 Node* *failure_control = NULL ); 818 819 Node* gen_subtype_check(Node* subklass, Node* superklass) { 820 MergeMemNode* mem = merged_memory(); 821 Node* ctrl = control(); 822 Node* n = Phase::gen_subtype_check(subklass, superklass, &ctrl, mem, &_gvn); 823 set_control(ctrl); 824 return n; 825 } 826 827 // Exact type check used for predicted calls and casts. 828 // Rewrites (*casted_receiver) to be casted to the stronger type. 829 // (Caller is responsible for doing replace_in_map.) 830 Node* type_check_receiver(Node* receiver, ciKlass* klass, float prob, 831 Node* *casted_receiver); 832 833 // implementation of object creation 834 Node* set_output_for_allocation(AllocateNode* alloc, 835 const TypeOopPtr* oop_type, 836 bool deoptimize_on_exception=false); 837 Node* get_layout_helper(Node* klass_node, jint& constant_value); 838 Node* new_instance(Node* klass_node, 839 Node* slow_test = NULL, 840 Node* *return_size_val = NULL, 841 bool deoptimize_on_exception = false); 842 Node* new_array(Node* klass_node, Node* count_val, int nargs, 843 Node* *return_size_val = NULL, 844 bool deoptimize_on_exception = false); 845 846 // java.lang.String helpers 847 Node* load_String_length(Node* str, bool set_ctrl); 848 Node* load_String_value(Node* str, bool set_ctrl); 849 Node* load_String_coder(Node* str, bool set_ctrl); 850 void store_String_value(Node* str, Node* value); 851 void store_String_coder(Node* str, Node* value); 852 Node* capture_memory(const TypePtr* src_type, const TypePtr* dst_type); | 813 814 // Generate a check-cast idiom. Used by both the check-cast bytecode 815 // and the array-store bytecode 816 Node* gen_checkcast( Node *subobj, Node* superkls, 817 Node* *failure_control = NULL ); 818 819 Node* gen_subtype_check(Node* subklass, Node* superklass) { 820 MergeMemNode* mem = merged_memory(); 821 Node* ctrl = control(); 822 Node* n = Phase::gen_subtype_check(subklass, superklass, &ctrl, mem, &_gvn); 823 set_control(ctrl); 824 return n; 825 } 826 827 // Exact type check used for predicted calls and casts. 828 // Rewrites (*casted_receiver) to be casted to the stronger type. 829 // (Caller is responsible for doing replace_in_map.) 830 Node* type_check_receiver(Node* receiver, ciKlass* klass, float prob, 831 Node* *casted_receiver); 832 833 // Inexact type check used for predicted calls. 834 Node* subtype_check_receiver(Node* receiver, ciKlass* klass, 835 Node** casted_receiver); 836 837 // implementation of object creation 838 Node* set_output_for_allocation(AllocateNode* alloc, 839 const TypeOopPtr* oop_type, 840 bool deoptimize_on_exception=false); 841 Node* get_layout_helper(Node* klass_node, jint& constant_value); 842 Node* new_instance(Node* klass_node, 843 Node* slow_test = NULL, 844 Node* *return_size_val = NULL, 845 bool deoptimize_on_exception = false); 846 Node* new_array(Node* klass_node, Node* count_val, int nargs, 847 Node* *return_size_val = NULL, 848 bool deoptimize_on_exception = false); 849 850 // java.lang.String helpers 851 Node* load_String_length(Node* str, bool set_ctrl); 852 Node* load_String_value(Node* str, bool set_ctrl); 853 Node* load_String_coder(Node* str, bool set_ctrl); 854 void store_String_value(Node* str, Node* value); 855 void store_String_coder(Node* str, Node* value); 856 Node* capture_memory(const TypePtr* src_type, const TypePtr* dst_type); |