invokespecial on abstract method

Andrew Haley aph@redhat.com
Thu Oct 2 16:33:00 GMT 2003


Christian Stuellenberg writes:
 > 
 > An invokespecial to an abstract method should throw a
 > java.lang.AbstractMethodError at execution time (as e.g. an JVM-1.3
 > does), but I'm not able to compile this with gcj.
I'm in favour of errors being detected early. One of the features of
gcj, and it's arguable whether it's good or bad, is that we get errors
for missing methods at link time. A trad JVM doesn't do this because
it doesn't have a link phase.
 > If I look at the bytecode there is an invokespecial on an abstract
 > method:
 > Method public size () -> int
 > 0 iconst_1
 > 1 ifeq 9
 > 4 aload_0
 > 5 invokestatic #6 <Method testbug/fun.size (Ltestbug/A;)I>
 > 8 ireturn
 > 9 aload_0
 > 10 invokenonvirtual #11 <Method java/util/AbstractCollection.size ()I>
 > 13 ireturn
 > Method public get (int) -> java/lang/Object
 > 0 iload_1
 > 1 iconst_0
 > 2 if_icmpne 11
 > 5 aload_0
 > 6 iload_1
 > 7 invokestatic #15 <Method testbug/fun.get (Ltestbug/A;I)Ljava/lang/Object;>
 > 10 areturn
 > 11 aload_0
 > 12 iload_1
 > 13 invokenonvirtual #20 <Method java/util/AbstractList.get (I)Ljava/lang/Object;
 > 16 areturn
 > Method public <init> () -> void
 > 0 aload_0
 > 1 invokenonvirtual #24 <Method java/util/AbstractList.<init>
 > ()V>
 > 4 return
Where?
 > But if I even use
 > gij -jar testing-out.jar
 > it gives me (in german):
 > Speicherzugriffsfehler
 > 
 > So, there seems to be something wrong, doesn't it?
Yes.
Andrew.


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /