Mercurial > hg > graal-jvmci-8
comparison src/share/vm/opto/library_call.cpp @ 1844:75588558f1bf
6980792: Crash "exception happened outside interpreter, nmethods and vtable stubs (1)"
Reviewed-by: kvn
author | never |
---|---|
date | Thu, 07 Oct 2010 21:40:55 -0700 |
parents | 3e8fbc61cee8 |
children | f95d63e2154a |
comparison
equal
deleted
inserted
replaced
1832:22e4420d19f7 | 1844:75588558f1bf |
---|---|
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 |