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]

Re: Questions about GC, _Jv_MarkObj() and reflection data.


David Daney writes:
 > 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.

Well, all you *really* need is a bitmap, but OK.

 > 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?

I can't forsee any, no.  

Andrew.


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