src/share/vm/classfile/stackMapFrame.cpp

changeset 2754
7144a1d6e0a9
parent 2585
c1a6154012c8
child 2759
3449f5e02cc4
     1.1 --- a/src/share/vm/classfile/stackMapFrame.cpp	Fri Apr 01 15:15:37 2011 -0700
     1.2 +++ b/src/share/vm/classfile/stackMapFrame.cpp	Thu Mar 31 08:08:50 2011 -0400
     1.3 @@ -208,8 +208,10 @@
     1.4    return true;
     1.5  }
     1.6  
     1.7 -bool StackMapFrame::is_assignable_to(const StackMapFrame* target, TRAPS) const {
     1.8 -  if (_max_locals != target->max_locals() || _stack_size != target->stack_size()) {
     1.9 +bool StackMapFrame::is_assignable_to(
    1.10 +    const StackMapFrame* target, bool is_exception_handler, TRAPS) const {
    1.11 +  if (_max_locals != target->max_locals() ||
    1.12 +      _stack_size != target->stack_size()) {
    1.13      return false;
    1.14    }
    1.15    // Only need to compare type elements up to target->locals() or target->stack().
    1.16 @@ -222,7 +224,7 @@
    1.17    bool match_flags = (_flags | target->flags()) == target->flags();
    1.18  
    1.19    return match_locals && match_stack &&
    1.20 -    (match_flags || has_flag_match_exception(target));
    1.21 +    (match_flags || (is_exception_handler && has_flag_match_exception(target)));
    1.22  }
    1.23  
    1.24  VerificationType StackMapFrame::pop_stack_ex(VerificationType type, TRAPS) {

mercurial