src/share/vm/opto/type.cpp

changeset 1775
5b29c2368d93
parent 1714
2432acbee618
parent 1774
09ac706c2623
child 1907
c18cbe5936b8
     1.1 --- a/src/share/vm/opto/type.cpp	Thu Apr 01 20:48:50 2010 -0400
     1.2 +++ b/src/share/vm/opto/type.cpp	Thu Apr 08 15:28:37 2010 -0700
     1.3 @@ -2545,12 +2545,15 @@
     1.4        ftip->is_loaded() &&  ftip->klass()->is_interface() &&
     1.5        ktip->is_loaded() && !ktip->klass()->is_interface()) {
     1.6      // Happens in a CTW of rt.jar, 320-341, no extra flags
     1.7 +    assert(!ftip->klass_is_exact(), "interface could not be exact");
     1.8      return ktip->cast_to_ptr_type(ftip->ptr());
     1.9    }
    1.10 +  // Interface klass type could be exact in opposite to interface type,
    1.11 +  // return it here instead of incorrect Constant ptr J/L/Object (6894807).
    1.12    if (ftkp != NULL && ktkp != NULL &&
    1.13        ftkp->is_loaded() &&  ftkp->klass()->is_interface() &&
    1.14 +      !ftkp->klass_is_exact() && // Keep exact interface klass
    1.15        ktkp->is_loaded() && !ktkp->klass()->is_interface()) {
    1.16 -    // Happens in a CTW of rt.jar, 320-341, no extra flags
    1.17      return ktkp->cast_to_ptr_type(ftkp->ptr());
    1.18    }
    1.19  

mercurial