Mercurial > hg > graal-jvmci-8
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(); |