src/share/vm/classfile/stackMapTable.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/classfile/stackMapTable.cpp Thu Mar 31 08:21:27 2011
--- new/src/share/vm/classfile/stackMapTable.cpp Thu Mar 31 08:21:26 2011
*** 96,109 ****
--- 96,112 ----
}
bool result = true;
StackMapFrame *stackmap_frame = _frame_array[frame_index];
if (match) {
+ // when checking handler target, match == true && update == false
+ bool is_exception_handler = !update;
// Has direct control flow from last instruction, need to match the two
// frames.
result = frame->is_assignable_to(
! stackmap_frame, CHECK_VERIFY_(frame->verifier(), false));
! stackmap_frame, is_exception_handler,
+ CHECK_VERIFY_(frame->verifier(), false));
}
if (update) {
// Use the frame in stackmap table as current frame
int lsize = stackmap_frame->locals_size();
int ssize = stackmap_frame->stack_size();
src/share/vm/classfile/stackMapTable.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File