This is the mail archive of the java@gcc.gnu.org mailing list for the Java 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]

Questions about GC, _Jv_MarkObj() and reflection data.


I think my patch for removing most reflection data is almost working (yeah!).

My last problem seems to be with classes that use _Jv_MarkObj(). Currently I emit no reflection data for non-static fields. However this does not work if the GC descriptor has a value of 2 (which appears to mean to use _Jv_MarkObj()), as _Jv_MarkObj uses the field reflection data to tell if a field contains a reference.

Lets just say I was a little mystified until I realized the GC was freeing referenced objects and allocating objects of a different type in their place.

The obvious solution is to generate reflection data for non-static fields that contain references. But I wanted to do a sanity check before proceeding.

Currently in make_class_data (in class.c) the call to get_dispatch_table (which creates the vtable and thus the GC descriptor) is done after all the reflection data is generated. My plan is to move it before the field and method arrays are built. Then it should be fairly simple to extract the GC descriptor from the dispatch table tree and use that to decide if field reflection data is needed for reference fields.

Does anyone foresee a problem with doing it this way?

Thanks,
David Daney


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