src/share/vm/runtime/relocator.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File hotspot Cdiff src/share/vm/runtime/relocator.cpp

src/share/vm/runtime/relocator.cpp

Print this page
rev 3510 : 7116786: RFE: Detailed information on VerifyErrors
Summary: Provide additional detail in VerifyError messages
Reviewed-by:

*** 463,479 **** // The width of instruction at "bci" is changing by "delta". Adjust the stack // map frames. void Relocator::adjust_stack_map_table(int bci, int delta) { if (method()->has_stackmap_table()) { typeArrayOop data = method()->stackmap_data(); ! // The data in the array is a classfile representation of the stackmap ! // table attribute, less the initial u2 tag and u4 attribute_length fields. ! stack_map_table_attribute* attr = stack_map_table_attribute::at( ! (address)data->byte_at_addr(0) - (sizeof(u2) + sizeof(u4))); ! int count = attr->number_of_entries(); ! stack_map_frame* frame = attr->entries(); int bci_iter = -1; bool offset_adjusted = false; // only need to adjust one offset for (int i = 0; i < count; ++i) { int offset_delta = frame->offset_delta(); --- 463,478 ---- // The width of instruction at "bci" is changing by "delta". Adjust the stack // map frames. void Relocator::adjust_stack_map_table(int bci, int delta) { if (method()->has_stackmap_table()) { typeArrayOop data = method()->stackmap_data(); ! // The data in the array is a classfile representation of the stackmap table ! stack_map_table* sm_table = ! stack_map_table::at((address)data->byte_at_addr(0)); ! int count = sm_table->number_of_entries(); ! stack_map_frame* frame = sm_table->entries(); int bci_iter = -1; bool offset_adjusted = false; // only need to adjust one offset for (int i = 0; i < count; ++i) { int offset_delta = frame->offset_delta();
*** 511,521 **** // Now convert the frames in place if (frame->is_same_frame()) { same_frame_extended::create_at(frame_addr, new_offset_delta); } else { ! same_frame_1_stack_item_extended::create_at( frame_addr, new_offset_delta, NULL); // the verification_info_type should already be at the right spot } } offset_adjusted = true; // needs to be done only once, since subsequent --- 510,520 ---- // Now convert the frames in place if (frame->is_same_frame()) { same_frame_extended::create_at(frame_addr, new_offset_delta); } else { ! same_locals_1_stack_item_extended::create_at( frame_addr, new_offset_delta, NULL); // the verification_info_type should already be at the right spot } } offset_adjusted = true; // needs to be done only once, since subsequent
src/share/vm/runtime/relocator.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File