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