src/share/vm/code/dependencies.cpp

changeset 465
65a06b4a51b8
parent 435
a61af66fc99e
child 497
cd0742ba123c
     1.1 --- a/src/share/vm/code/dependencies.cpp	Mon Feb 25 15:05:44 2008 -0800
     1.2 +++ b/src/share/vm/code/dependencies.cpp	Wed Feb 27 00:23:37 2008 -0800
     1.3 @@ -882,6 +882,14 @@
     1.4    // Must not move the class hierarchy during this check:
     1.5    assert_locked_or_safepoint(Compile_lock);
     1.6  
     1.7 +  int nof_impls = instanceKlass::cast(context_type)->nof_implementors();
     1.8 +  if (nof_impls > 1) {
     1.9 +    // Avoid this case: *I.m > { A.m, C }; B.m > C
    1.10 +    // %%% Until this is fixed more systematically, bail out.
    1.11 +    // See corresponding comment in find_witness_anywhere.
    1.12 +    return context_type;
    1.13 +  }
    1.14 +
    1.15    assert(!is_participant(new_type), "only old classes are participants");
    1.16    if (participants_hide_witnesses) {
    1.17      // If the new type is a subtype of a participant, we are done.

mercurial