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