We have similar pattern in {instanceKlass, typeArrayKlass, objArrayKlass, etc}.hpp::
static ObjArrayKlass* cast(Klass* k) {
return const_cast<ObjArrayKlass*>(cast(const_cast<const Klass*>(k)));
}
static const ObjArrayKlass* cast(const Klass* k) {
assert(k->is_objArray_klass(), "cast to ObjArrayKlass");
return static_cast<const ObjArrayKlass*>(k);
}
Seeing the word "cast" three times on a single line is confusing.
Proposed cleanup:
template <typename O, typename K>
static O* cast_impl(K* k) {
assert(k->is_objArray_klass(), "cast to ObjArrayKlass");
return static_cast<O*>(k);
}
static ObjArrayKlass* cast(Klass* k) {
return cast_impl<ObjArrayKlass>(k);
}
static const ObjArrayKlass* cast(const Klass* k) {
return cast_impl<const ObjArrayKlass>(k);
}
static ObjArrayKlass* cast(Klass* k) {
return const_cast<ObjArrayKlass*>(cast(const_cast<const Klass*>(k)));
}
static const ObjArrayKlass* cast(const Klass* k) {
assert(k->is_objArray_klass(), "cast to ObjArrayKlass");
return static_cast<const ObjArrayKlass*>(k);
}
Seeing the word "cast" three times on a single line is confusing.
Proposed cleanup:
template <typename O, typename K>
static O* cast_impl(K* k) {
assert(k->is_objArray_klass(), "cast to ObjArrayKlass");
return static_cast<O*>(k);
}
static ObjArrayKlass* cast(Klass* k) {
return cast_impl<ObjArrayKlass>(k);
}
static const ObjArrayKlass* cast(const Klass* k) {
return cast_impl<const ObjArrayKlass>(k);
}
- relates to
-
JDK-8140485 Class load and creation cleanup
-
- Resolved
-