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