Binary Compatibility: vtable entries for final methods

Andrew Haley aph@redhat.com
Fri May 14 02:03:00 GMT 2004


David Daney writes:
 > Andrew Haley wrote:
 > 
 > >"Changing a class that was declared final to no longer be declared
 > >final does not break [binary compatibility.]"
 > >
 > >"Removing the final modifier from a method does not break [binary
 > >compatibility.]"
 > >
 > >So, our practice of making direct calls to final methods and not
 > >generating vtable entries for them must cease. I'm minded to make an
 > >exception for java.lang.Object, because we'd otherwise add a bunch of
 > >vtable entries to every single class for no good reason.
 >
 > You can still make a direct call to a final method from the same class. 
 > Because when you make it non-final you will be recompiling the whole 
 > class and will be able to change the calls to go via the vtable.
That's a good point. There's an outstanding PR because we don't
detect calls made within the same compilation unit, and we should
special case these.
 > I agree that you do have to make a vtable entry for all final methods 
 > (but not private ones).
Yeah, that's how it seems to me.
Ta,
Andrew.


More information about the Java mailing list

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