comparison src/share/vm/classfile/stackMapTable.cpp @ 2472:7144a1d6e0a9

7030388: JCK test failed to reject invalid class check01304m10n. Summary: Restrict fix for 7020118 to only when checking exception handlers Reviewed-by: dcubed, dholmes
author kamg
date Thu, 31 Mar 2011 08:08:50 -0400
parents 3582bf76420e
children 3449f5e02cc4
comparison
equal deleted inserted replaced
2471:37be97a58393 2472:7144a1d6e0a9
96 } 96 }
97 97
98 bool result = true; 98 bool result = true;
99 StackMapFrame *stackmap_frame = _frame_array[frame_index]; 99 StackMapFrame *stackmap_frame = _frame_array[frame_index];
100 if (match) { 100 if (match) {
101 // when checking handler target, match == true && update == false
102 bool is_exception_handler = !update;
101 // Has direct control flow from last instruction, need to match the two 103 // Has direct control flow from last instruction, need to match the two
102 // frames. 104 // frames.
103 result = frame->is_assignable_to( 105 result = frame->is_assignable_to(
104 stackmap_frame, CHECK_VERIFY_(frame->verifier(), false)); 106 stackmap_frame, is_exception_handler,
107 CHECK_VERIFY_(frame->verifier(), false));
105 } 108 }
106 if (update) { 109 if (update) {
107 // Use the frame in stackmap table as current frame 110 // Use the frame in stackmap table as current frame
108 int lsize = stackmap_frame->locals_size(); 111 int lsize = stackmap_frame->locals_size();
109 int ssize = stackmap_frame->stack_size(); 112 int ssize = stackmap_frame->stack_size();