ClassLoader: unexpected exception during linking

Tom Tromey tromey@redhat.com
Wed Dec 4 17:37:00 GMT 2002


>>>>> "Jeff" == Jeff Sturm <jsturm@one-point.com> writes:

Jeff> Yesterday I found that isVirtualMethod fails to consider final
Jeff> methods.

Good catch, thanks.

Jeff> -      if (!isVirtualMethod(meth))
Jeff> +      if (meth->index == (_Jv_ushort)0xffff)

This patch causes the appended program to hang with `gij'.

I think the fix is to change _Jv_LayoutVTableMethods to check for
final methods (that don't override a method in the superclass) when
constructing the vtable.  I'm testing it now.

Tom

class x
{
  public int x1 () { return 3; }
}

public class t extends x
{
  public final int x1() { return 5; }
  public final int x2() { return 7; }

  public static void main(String[] args)
  {
    t z = new t();
    System.out.println(z.x1());
    System.out.println(z.x2());
  }
}



More information about the Java mailing list