4759 Node* n1 = LoadKlassNode::make(_gvn, immutable_memory(), p1, TypeRawPtr::BOTTOM); |
4759 Node* n1 = LoadKlassNode::make(_gvn, immutable_memory(), p1, TypeRawPtr::BOTTOM); |
4760 Node* dest_elem_klass = _gvn.transform(n1); |
4760 Node* dest_elem_klass = _gvn.transform(n1); |
4761 Node* cv = generate_checkcast_arraycopy(adr_type, |
4761 Node* cv = generate_checkcast_arraycopy(adr_type, |
4762 dest_elem_klass, |
4762 dest_elem_klass, |
4763 src, src_offset, dest, dest_offset, |
4763 src, src_offset, dest, dest_offset, |
4764 copy_length); |
4764 ConvI2X(copy_length)); |
4765 if (cv == NULL) cv = intcon(-1); // failure (no stub available) |
4765 if (cv == NULL) cv = intcon(-1); // failure (no stub available) |
4766 checked_control = control(); |
4766 checked_control = control(); |
4767 checked_i_o = i_o(); |
4767 checked_i_o = i_o(); |
4768 checked_mem = memory(adr_type); |
4768 checked_mem = memory(adr_type); |
4769 checked_value = cv; |
4769 checked_value = cv; |
5204 // look in each non-null element's class, at the desired klass's |
5204 // look in each non-null element's class, at the desired klass's |
5205 // super_check_offset, for the desired klass. |
5205 // super_check_offset, for the desired klass. |
5206 int sco_offset = Klass::super_check_offset_offset_in_bytes() + sizeof(oopDesc); |
5206 int sco_offset = Klass::super_check_offset_offset_in_bytes() + sizeof(oopDesc); |
5207 Node* p3 = basic_plus_adr(dest_elem_klass, sco_offset); |
5207 Node* p3 = basic_plus_adr(dest_elem_klass, sco_offset); |
5208 Node* n3 = new(C, 3) LoadINode(NULL, memory(p3), p3, _gvn.type(p3)->is_ptr()); |
5208 Node* n3 = new(C, 3) LoadINode(NULL, memory(p3), p3, _gvn.type(p3)->is_ptr()); |
5209 Node* check_offset = _gvn.transform(n3); |
5209 Node* check_offset = ConvI2X(_gvn.transform(n3)); |
5210 Node* check_value = dest_elem_klass; |
5210 Node* check_value = dest_elem_klass; |
5211 |
5211 |
5212 Node* src_start = array_element_address(src, src_offset, T_OBJECT); |
5212 Node* src_start = array_element_address(src, src_offset, T_OBJECT); |
5213 Node* dest_start = array_element_address(dest, dest_offset, T_OBJECT); |
5213 Node* dest_start = array_element_address(dest, dest_offset, T_OBJECT); |
5214 |
5214 |