diff src/share/vm/classfile/stackMapFrame.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 c1a6154012c8
children 3449f5e02cc4
line wrap: on
line diff
--- a/src/share/vm/classfile/stackMapFrame.cpp	Fri Apr 01 15:15:37 2011 -0700
+++ b/src/share/vm/classfile/stackMapFrame.cpp	Thu Mar 31 08:08:50 2011 -0400
@@ -208,8 +208,10 @@
   return true;
 }
 
-bool StackMapFrame::is_assignable_to(const StackMapFrame* target, TRAPS) const {
-  if (_max_locals != target->max_locals() || _stack_size != target->stack_size()) {
+bool StackMapFrame::is_assignable_to(
+    const StackMapFrame* target, bool is_exception_handler, TRAPS) const {
+  if (_max_locals != target->max_locals() ||
+      _stack_size != target->stack_size()) {
     return false;
   }
   // Only need to compare type elements up to target->locals() or target->stack().
@@ -222,7 +224,7 @@
   bool match_flags = (_flags | target->flags()) == target->flags();
 
   return match_locals && match_stack &&
-    (match_flags || has_flag_match_exception(target));
+    (match_flags || (is_exception_handler && has_flag_match_exception(target)));
 }
 
 VerificationType StackMapFrame::pop_stack_ex(VerificationType type, TRAPS) {