< prev index next >

src/hotspot/share/runtime/deoptimization.cpp

Print this page

        

@@ -1025,16 +1025,22 @@
     if (!fs.access_flags().is_static() && (!skip_internal || !fs.access_flags().is_internal())) {
       ReassignedField field;
       field._offset = fs.offset();
       field._type = FieldType::basic_type(fs.signature());
       if (field._type == T_VALUETYPE) {
+        if (fs.is_flatten()) {
         // Resolve klass of flattened value type field
         SignatureStream ss(fs.signature(), false);
         Klass* vk = ss.as_klass(Handle(THREAD, klass->class_loader()), Handle(THREAD, klass->protection_domain()), SignatureStream::NCDFError, THREAD);
         guarantee(!HAS_PENDING_EXCEPTION, "Should not have any exceptions pending");
         assert(vk->is_value(), "must be a ValueKlass");
         field._klass = InstanceKlass::cast(vk);
+        } else {
+          // Non-flattened value type field
+          // TODO change this when we use T_VALUETYPEPTR
+          field._type = T_OBJECT;
+        }
       }
       fields->append(field);
     }
   }
   fields->sort(compare);
< prev index next >