This is the mail archive of the gcc-bugs@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]

[Bug java/12857] Illegal method modifier when loading a generated .class


------- Additional Comments From jsturm at gcc dot gnu dot org  2003-11-15 05:29 -------
(In reply to comment #4)
> Jeff, how did the testing go?

I get a miscompilation of java.io.ObjectStreamClass during bootstrap,
introducing 10 new Mauve failures.   The .class file is created with fields in
the exact opposite of their declared order.

The cause is a bit surprising to me.  On the surface the source parser looks as
though it would be reentrant, but it is not.  Moving build_dot_class_method to
pass 1 causes load_class to be used, which may invoke the parser again (though
only during bootstrap when some class files are not available).

So java_reorder_fields is called prematurely on java.io.ObjectStreamClass, when
no fields are yet defined.

Should be fixable by either:
1) Moving build_dot_class_method back to pass 2 (patch_incomplete_class_ref), or
2) Modifying build_dot_class_method to not invoke load_class.

Overall I'm inclined to attempt 2), since the creation of 'class$' may occur in
an anonymous class, and all other inner classes are created in pass 1.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |aph at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12857


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