< 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,352 **** } 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)) { return oopFactory::new_objArray(k, length, THREAD); } else { return oopFactory::new_valueArray(k, length, THREAD); } } --- 342,352 ---- } 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_nullable_type(element_mirror)) { return oopFactory::new_objArray(k, length, THREAD); } else { return oopFactory::new_valueArray(k, length, THREAD); } }
*** 758,770 **** } // 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()) { ValueKlass* vk = ValueKlass::cast(InstanceKlass::cast(k)); ! return vk->value_mirror(); } else { return k->java_mirror(); } } --- 758,770 ---- } // 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 (k->is_value()) { ValueKlass* vk = ValueKlass::cast(InstanceKlass::cast(k)); ! return qtype_if_value ? vk->value_mirror() : vk->nullable_mirror(); } else { return k->java_mirror(); } }
*** 950,960 **** 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; } if (fd->is_flattened()) { modifiers |= JVM_ACC_FIELD_FLATTENED; } java_lang_reflect_Field::set_modifiers(rh(), modifiers); --- 950,962 ---- 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_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,1240 **** 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) { rtype = T_VALUETYPE; } else { rtype = T_OBJECT; } --- 1232,1242 ---- 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::inline_type_mirror(return_type_mirror) == return_type_mirror) { rtype = T_VALUETYPE; } else { rtype = T_OBJECT; }
< prev index next >