RFR 8245289: Clean up offset code in JavaClasses

coleen.phillimore at oracle.com coleen.phillimore at oracle.com
Tue May 26 12:39:44 UTC 2020


Summary: Use X macro to declare and define offset, and declare accessors 
when needed, also make names consistent.

Changes include.

1. making all offset field names start with underscore.
2. renamed blah_offset_in_bytes to just blah_offset (they are all in 
bytes and would never be in "words")
3. Use X macro to declare then define the field offsets to avoid 
retyping all that
4. Use X macro to define accessors for classes that needed them, so that 
the accessors can check if the field has been initialized. Since these 
are member fields and static fields, their offsets can never be zero, so 
there's no need to have a test for -1.  I kept some _initialized members 
for a couple of classes.  They can be removed later if we want.
   - I didn't change offset field access internally in the class member 
functions everywhere because it wouldn't be a net improvements in lines 
of code
5. removed "private" keyword because in class declarations fields are 
private by default.

Most of these classes have accessor patterns like

void java_lang_Class::set_class_loader(oop java_class, oop loader) {
   assert(_class_loader_offset != 0, "offsets should have been 
initialized");
   java_class->obj_field_put(_class_loader_offset, loader);
}

oop java_lang_Class::class_loader(oop java_class) {
   assert(_class_loader_offset != 0, "must be set");
   return java_class->obj_field(_class_loader_offset);
}

So it seems like it'd be useful to wrap that up with the X macro too, 
but there are also a lot of classes that don't have this pattern for all 
of the fields, ie. they do some other things so there's be too many 
exceptions to make this a nice code savings change.  The jvmci code has 
this sort of giant X macro that is, in my opinion, completely unreadable.

Anyway, this is an improvement for now and tested tier1-6.  What do you 
think?

open webrev at http://cr.openjdk.java.net/~coleenp/2020/8245289.01/webrev
bug link https://bugs.openjdk.java.net/browse/JDK-8245289

thanks,
Coleen



More information about the hotspot-dev mailing list