diff src/share/vm/classfile/stackMapFrame.cpp @ 2477:3449f5e02cc4

Merge
author coleenp
date Tue, 12 Apr 2011 14:18:53 -0700
parents 1d1603768966 7144a1d6e0a9
children 4ee06e614636
line wrap: on
line diff
--- a/src/share/vm/classfile/stackMapFrame.cpp	Sat Apr 09 21:16:12 2011 -0700
+++ b/src/share/vm/classfile/stackMapFrame.cpp	Tue Apr 12 14:18:53 2011 -0700
@@ -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) {