< prev index next >
src/hotspot/share/runtime/reflection.cpp
Print this page
rev 55127 : 8223351: [lworld] Primary mirror and nullable mirror for inline type
Reviewed-by: tbd
@@ -342,11 +342,11 @@
} else {
Klass* k = java_lang_Class::as_Klass(element_mirror);
if (k->is_array_klass() && ArrayKlass::cast(k)->dimension() >= MAX_DIM) {
THROW_0(vmSymbols::java_lang_IllegalArgumentException());
}
- if (java_lang_Class::is_box_type(element_mirror)) {
+ if (java_lang_Class::is_nullable_type(element_mirror)) {
return oopFactory::new_objArray(k, length, THREAD);
} else {
return oopFactory::new_valueArray(k, length, THREAD);
}
}
@@ -758,13 +758,13 @@
}
// Returns Q-mirror if qtype_if_value is true and k is a ValueKlass;
// otherwise returns java_mirror or L-mirror for ValueKlass
static oop java_mirror(Klass* k, jboolean qtype_if_value) {
- if (qtype_if_value && k->is_value()) {
+ if (k->is_value()) {
ValueKlass* vk = ValueKlass::cast(InstanceKlass::cast(k));
- return vk->value_mirror();
+ return qtype_if_value ? vk->value_mirror() : vk->nullable_mirror();
} else {
return k->java_mirror();
}
}
@@ -950,11 +950,13 @@
java_lang_reflect_Field::set_name(rh(), name());
java_lang_reflect_Field::set_type(rh(), type());
// Note the ACC_ANNOTATION bit, which is a per-class access flag, is never set here.
int modifiers = fd->access_flags().as_int() & JVM_RECOGNIZED_FIELD_MODIFIERS;
if (fd->is_flattenable()) {
- modifiers |= JVM_ACC_FLATTENABLE;
+ modifiers |= JVM_ACC_FIELD_FLATTENABLE;
+ // JVM_ACC_FLATTENABLE should not be set in LWorld. set_is_flattenable should be re-examined.
+ modifiers &= ~JVM_ACC_FLATTENABLE;
}
if (fd->is_flattened()) {
modifiers |= JVM_ACC_FIELD_FLATTENED;
}
java_lang_reflect_Field::set_modifiers(rh(), modifiers);
@@ -1230,11 +1232,11 @@
oop return_type_mirror = java_lang_reflect_Method::return_type(method_mirror);
BasicType rtype;
if (java_lang_Class::is_primitive(return_type_mirror)) {
rtype = basic_type_mirror_to_basic_type(return_type_mirror, CHECK_NULL);
- } else if (java_lang_Class::value_mirror(return_type_mirror) == return_type_mirror) {
+ } else if (java_lang_Class::inline_type_mirror(return_type_mirror) == return_type_mirror) {
rtype = T_VALUETYPE;
} else {
rtype = T_OBJECT;
}
< prev index next >