diff src/share/vm/opto/type.cpp @ 1340:5b29c2368d93

Merge
author lana
date Thu, 08 Apr 2010 15:28:37 -0700
parents 2432acbee618 09ac706c2623
children c18cbe5936b8
line wrap: on
line diff
--- a/src/share/vm/opto/type.cpp	Thu Apr 01 20:48:50 2010 -0400
+++ b/src/share/vm/opto/type.cpp	Thu Apr 08 15:28:37 2010 -0700
@@ -2545,12 +2545,15 @@
       ftip->is_loaded() &&  ftip->klass()->is_interface() &&
       ktip->is_loaded() && !ktip->klass()->is_interface()) {
     // Happens in a CTW of rt.jar, 320-341, no extra flags
+    assert(!ftip->klass_is_exact(), "interface could not be exact");
     return ktip->cast_to_ptr_type(ftip->ptr());
   }
+  // Interface klass type could be exact in opposite to interface type,
+  // return it here instead of incorrect Constant ptr J/L/Object (6894807).
   if (ftkp != NULL && ktkp != NULL &&
       ftkp->is_loaded() &&  ftkp->klass()->is_interface() &&
+      !ftkp->klass_is_exact() && // Keep exact interface klass
       ktkp->is_loaded() && !ktkp->klass()->is_interface()) {
-    // Happens in a CTW of rt.jar, 320-341, no extra flags
     return ktkp->cast_to_ptr_type(ftkp->ptr());
   }