< prev index next >

src/hotspot/share/runtime/deoptimization.cpp

Print this page

        

*** 501,511 **** // non-parameter locals of the first unpacked interpreted frame. // Compute that adjustment. caller_adjustment = last_frame_adjust(callee_parameters, callee_locals); } ! // If the sender is deoptimized the we must retrieve the address of the handler // since the frame will "magically" show the original pc before the deopt // and we'd undo the deopt. frame_pcs[0] = deopt_sender.raw_pc(); --- 501,511 ---- // non-parameter locals of the first unpacked interpreted frame. // Compute that adjustment. caller_adjustment = last_frame_adjust(callee_parameters, callee_locals); } ! // If the sender is deoptimized we must retrieve the address of the handler // since the frame will "magically" show the original pc before the deopt // and we'd undo the deopt. frame_pcs[0] = deopt_sender.raw_pc();
*** 1006,1026 **** GrowableArray<ReassignedField>* fields = new GrowableArray<ReassignedField>(); for (AllFieldStream fs(klass); !fs.done(); fs.next()) { if (!fs.access_flags().is_static() && (!skip_internal || !fs.access_flags().is_internal())) { ReassignedField field; field._offset = fs.offset(); ! field._type = fs.is_flattened() ? T_VALUETYPE : FieldType::basic_type(fs.signature()); ! if (field._type == T_VALUETYPE) { if (fs.is_flattened()) { // Resolve klass of flattened value type field Klass* vk = klass->get_value_field_klass(fs.index()); ! assert(vk->is_value(), "must be a ValueKlass"); ! field._klass = InstanceKlass::cast(vk); ! } else { ! // Non-flattened value type field ! field._type = T_VALUETYPEPTR; ! } } fields->append(field); } } fields->sort(compare); --- 1006,1021 ---- GrowableArray<ReassignedField>* fields = new GrowableArray<ReassignedField>(); for (AllFieldStream fs(klass); !fs.done(); fs.next()) { 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 (fs.is_flattened()) { // Resolve klass of flattened value type field Klass* vk = klass->get_value_field_klass(fs.index()); ! field._klass = ValueKlass::cast(vk); ! field._type = T_VALUETYPE; } fields->append(field); } } fields->sort(compare);
*** 1030,1040 **** StackValue* value = StackValue::create_stack_value(fr, reg_map, scope_field); int offset = base_offset + fields->at(i)._offset; BasicType type = fields->at(i)._type; switch (type) { case T_OBJECT: - case T_VALUETYPEPTR: case T_ARRAY: assert(value->type() == T_OBJECT, "Agreement."); obj->obj_field_put(offset, value->get_obj()()); break; --- 1025,1034 ----
< prev index next >