< prev index next >
src/share/vm/opto/parse3.cpp
Print this page
*** 315,325 ****
} else {
field_type = TypeOopPtr::make_from_klass(field->type()->as_klass());
}
if (bt == T_VALUETYPE && !field->is_static()) {
// Store flattened value type to non-static field
! val->as_ValueType()->store(this, obj, obj, field->holder(), offset);
} else {
store_oop_to_object(control(), obj, adr, adr_type, val, field_type, bt, mo);
}
} else {
bool needs_atomic_access = is_vol || AlwaysAtomicAccesses;
--- 315,325 ----
} else {
field_type = TypeOopPtr::make_from_klass(field->type()->as_klass());
}
if (bt == T_VALUETYPE && !field->is_static()) {
// Store flattened value type to non-static field
! val->as_ValueType()->store_flattened(this, obj, obj, field->holder(), offset);
} else {
store_oop_to_object(control(), obj, adr, adr_type, val, field_type, bt, mo);
}
} else {
bool needs_atomic_access = is_vol || AlwaysAtomicAccesses;
*** 570,580 ****
"vbox: Source class must be a value type and must be loaded and exact");
kill_dead_locals();
ciInstanceKlass* target_vcc_klass = target_klass->as_instance_klass();
! ciInstanceKlass* src_vcc_klass = src_vk->vcc_klass();;
// TODO: Extend type check below if (and once) value type class hierarchies become available.
// (incl. extension to support dynamic type checks).
if (!src_vcc_klass->equals(target_vcc_klass)) {
builtin_throw(Deoptimization::Reason_class_check);
--- 570,580 ----
"vbox: Source class must be a value type and must be loaded and exact");
kill_dead_locals();
ciInstanceKlass* target_vcc_klass = target_klass->as_instance_klass();
! ciInstanceKlass* src_vcc_klass = src_vk->vcc_klass();
// TODO: Extend type check below if (and once) value type class hierarchies become available.
// (incl. extension to support dynamic type checks).
if (!src_vcc_klass->equals(target_vcc_klass)) {
builtin_throw(Deoptimization::Reason_class_check);
*** 590,600 ****
// Store all field values to the newly created object.
// The code below relies on the assumption that the VCC has the
// same memory layout as the derived value type.
// TODO: Once the layout of the two is not the same, update code below.
! vt->as_ValueType()->store_values(this, obj, obj, target_vcc_klass);
// Push the new object onto the stack
push(obj);
}
--- 590,600 ----
// Store all field values to the newly created object.
// The code below relies on the assumption that the VCC has the
// same memory layout as the derived value type.
// TODO: Once the layout of the two is not the same, update code below.
! vt->as_ValueType()->store(this, obj, obj, target_vcc_klass);
// Push the new object onto the stack
push(obj);
}
< prev index next >