hotspot/src/share/vm/code/dependencies.cpp
changeset 203 2e348cc9121a
parent 1 489c9b5090e2
child 235 735f15bdea80
--- a/hotspot/src/share/vm/code/dependencies.cpp	Mon Feb 25 15:05:44 2008 -0800
+++ b/hotspot/src/share/vm/code/dependencies.cpp	Wed Feb 27 00:23:37 2008 -0800
@@ -882,6 +882,14 @@
   // Must not move the class hierarchy during this check:
   assert_locked_or_safepoint(Compile_lock);
 
+  int nof_impls = instanceKlass::cast(context_type)->nof_implementors();
+  if (nof_impls > 1) {
+    // Avoid this case: *I.m > { A.m, C }; B.m > C
+    // %%% Until this is fixed more systematically, bail out.
+    // See corresponding comment in find_witness_anywhere.
+    return context_type;
+  }
+
   assert(!is_participant(new_type), "only old classes are participants");
   if (participants_hide_witnesses) {
     // If the new type is a subtype of a participant, we are done.