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