src/share/vm/classfile/classFileParser.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/classfile/classFileParser.cpp	Thu Oct 22 18:35:32 2009
--- new/src/share/vm/classfile/classFileParser.cpp	Thu Oct 22 18:35:32 2009

*** 2509,2535 **** --- 2509,2524 ---- // Adjust the field type from byte to an unmanaged pointer. assert(fac_ptr->nonstatic_byte_count > 0, ""); fac_ptr->nonstatic_byte_count -= 1; (*fields_ptr)->ushort_at_put(i + instanceKlass::signature_index_offset, word_sig_index); if (wordSize == jintSize) { fac_ptr->nonstatic_word_count += 1; } else { fac_ptr->nonstatic_double_count += 1; } ! FieldAllocationType atype = (FieldAllocationType) (*fields_ptr)->ushort_at(i+4); ! FieldAllocationType atype = (FieldAllocationType) (*fields_ptr)->ushort_at(i + instanceKlass::low_offset); assert(atype == NONSTATIC_BYTE, ""); FieldAllocationType new_atype = NONSTATIC_WORD; if (wordSize > jintSize) { if (Universe::field_type_should_be_aligned(T_LONG)) { atype = NONSTATIC_ALIGNED_DOUBLE; } else { atype = NONSTATIC_DOUBLE; } } (*fields_ptr)->ushort_at_put(i+4, new_atype); + (*fields_ptr)->ushort_at_put(i + instanceKlass::low_offset, new_atype); found_vmentry = true; break; } }
*** 3083,3093 **** --- 3072,3082 ---- // The field allocation type was temporarily stored in the offset slot. // oop fields are located before non-oop fields (static and non-static). int len = fields->length(); for (int i = 0; i < len; i += instanceKlass::next_offset) { int real_offset; ! FieldAllocationType atype = (FieldAllocationType) fields->ushort_at(i+4); ! FieldAllocationType atype = (FieldAllocationType) fields->ushort_at(i + instanceKlass::low_offset); switch (atype) { case STATIC_OOP: real_offset = next_static_oop_offset; next_static_oop_offset += heapOopSize; break;
*** 3171,3182 **** --- 3160,3171 ---- next_nonstatic_double_offset += BytesPerLong; break; default: ShouldNotReachHere(); } ! fields->short_at_put(i+4, extract_low_short_from_int(real_offset) ); ! fields->short_at_put(i+5, extract_high_short_from_int(real_offset) ); ! fields->short_at_put(i + instanceKlass::low_offset, extract_low_short_from_int(real_offset)); ! fields->short_at_put(i + instanceKlass::high_offset, extract_high_short_from_int(real_offset)); } // Size of instances int instance_size;

src/share/vm/classfile/classFileParser.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File