< prev index next >
src/share/vm/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 >