This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Patch: PR java/20338 - Call _Jv_InitClass for private staticmethods in an inner class


Ranjit Mathew wrote:

On Wed, 09 Mar 2005 10:24:09 -0500, Bryce McKinlay <mckinlay@redhat.com> wrote:


Other Java compilers generate "accessor" methods for calls to private
methods in a nested class, the real bug here is that GCJ doesn't do this
- thats why the javac bytecode works fine on gij but gcj-produced
bytecode does not.



Thanks for the explanation. It's strange then that
"java" works with GCJ-generated bytecode. :-/



Yeah, "java" is a bit more lenient. It has an option (-Xfuture iirc) to enable stricter checking. Probably we should have this for gij too.


AFAIU, accessor methods were introduced to
make inner classes work with JVMs without
altering them - while generating native code,
it should not really be necessary, no?


Right.

BTW -findirect_dispatch seems to set
always_initialize_class_p, but that isn't honoured here. Is this another bug or have
I misunderstood things?



I'm not sure what always_initialize_class_p is for, or why it is set for -findirect-dispatch. Maybe Andrew knows. In theory the conditions to initialize a class should be the same regardless of the ABI. With the BC-ABI its just more obvious if a class isn't getting initialized at the right time, because it might not even be linked and you'll see a crash.


There should be no reason to initialize the class when calling a private method, because private methods can (usually) only be called within the same class, thus the class must already be initialized.

Bryce


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]