Currently we have hand-written code to mark Class instances. This is slow and is also bug-prone; we find problems in this code with annoying frequency. It may also be related to PR 16902.
It doesn't look hard to automate marking of Class. Here is a plan: * Rearrange fields of Class so that all marked fields are early, with non-marked fields later. * Change gcj to emit a GC descriptor for Class. Have the compiler abort() if a change is made to Class that causes us not to be able to make a GC descriptor. * For all objects referenced by Class that are dynamically allocated, introduce a new descriptor kind at runtime. Change how these objects are allocated, so that they will be marked by the GC and not by special code as a side effect of marking the class. This should help the problem that Anthony noticed (see email message linked from PR 16902) -- Summary: automate marking of Class object Product: gcc Version: 4.0.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: libgcj AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: tromey at gcc dot gnu dot org CC: gcc-bugs at gcc dot gnu dot org,java-prs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18086