src/share/vm/classfile/stackMapTable.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
hotspot Cdiff src/share/vm/classfile/stackMapTable.cpp
src/share/vm/classfile/stackMapTable.cpp
Print this page
rev 2236 : 7030388: JCK test failed to reject invalid class check01304m10n.
Summary: Restrict fix for 7020118 to only when checking exception handlers
Reviewed-by: dcubed, dholmes
*** 96,109 ****
}
bool result = true;
StackMapFrame *stackmap_frame = _frame_array[frame_index];
if (match) {
// 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));
}
if (update) {
// Use the frame in stackmap table as current frame
int lsize = stackmap_frame->locals_size();
int ssize = stackmap_frame->stack_size();
--- 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, 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