< 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 >