Mercurial > hg > graal-jvmci-8
comparison src/share/vm/classfile/classFileParser.cpp @ 10303:205dd30230e1
8012939: @Contended doesn't work correctly with inheritance
Summary: Fix instance_size miscalculation.
Reviewed-by: jrose, kvn
author | shade |
---|---|
date | Fri, 17 May 2013 01:43:48 +0400 |
parents | a9270d9ecb13 |
children | 50e9396d5257 |
comparison
equal
deleted
inserted
replaced
10301:17db82f22f1e | 10303:205dd30230e1 |
---|---|
3163 ((fac->count[STATIC_SHORT]) * BytesPerShort); | 3163 ((fac->count[STATIC_SHORT]) * BytesPerShort); |
3164 | 3164 |
3165 first_nonstatic_field_offset = instanceOopDesc::base_offset_in_bytes() + | 3165 first_nonstatic_field_offset = instanceOopDesc::base_offset_in_bytes() + |
3166 nonstatic_field_size * heapOopSize; | 3166 nonstatic_field_size * heapOopSize; |
3167 | 3167 |
3168 next_nonstatic_field_offset = first_nonstatic_field_offset; | |
3169 | |
3168 // class is contended, pad before all the fields | 3170 // class is contended, pad before all the fields |
3169 if (parsed_annotations->is_contended()) { | 3171 if (parsed_annotations->is_contended()) { |
3170 first_nonstatic_field_offset += pad_size; | 3172 next_nonstatic_field_offset += pad_size; |
3171 } | 3173 } |
3172 | |
3173 next_nonstatic_field_offset = first_nonstatic_field_offset; | |
3174 | 3174 |
3175 unsigned int nonstatic_double_count = fac->count[NONSTATIC_DOUBLE] - fac_contended.count[NONSTATIC_DOUBLE]; | 3175 unsigned int nonstatic_double_count = fac->count[NONSTATIC_DOUBLE] - fac_contended.count[NONSTATIC_DOUBLE]; |
3176 unsigned int nonstatic_word_count = fac->count[NONSTATIC_WORD] - fac_contended.count[NONSTATIC_WORD]; | 3176 unsigned int nonstatic_word_count = fac->count[NONSTATIC_WORD] - fac_contended.count[NONSTATIC_WORD]; |
3177 unsigned int nonstatic_short_count = fac->count[NONSTATIC_SHORT] - fac_contended.count[NONSTATIC_SHORT]; | 3177 unsigned int nonstatic_short_count = fac->count[NONSTATIC_SHORT] - fac_contended.count[NONSTATIC_SHORT]; |
3178 unsigned int nonstatic_byte_count = fac->count[NONSTATIC_BYTE] - fac_contended.count[NONSTATIC_BYTE]; | 3178 unsigned int nonstatic_byte_count = fac->count[NONSTATIC_BYTE] - fac_contended.count[NONSTATIC_BYTE]; |
3560 | 3560 |
3561 next_nonstatic_type_offset = align_size_up(notaligned_offset, wordSize ); | 3561 next_nonstatic_type_offset = align_size_up(notaligned_offset, wordSize ); |
3562 int instance_size = align_object_size(next_nonstatic_type_offset / wordSize); | 3562 int instance_size = align_object_size(next_nonstatic_type_offset / wordSize); |
3563 | 3563 |
3564 assert(instance_size == align_object_size(align_size_up( | 3564 assert(instance_size == align_object_size(align_size_up( |
3565 (instanceOopDesc::base_offset_in_bytes() + nonstatic_field_size*heapOopSize + ((parsed_annotations->is_contended()) ? pad_size : 0)), | 3565 (instanceOopDesc::base_offset_in_bytes() + nonstatic_field_size*heapOopSize), |
3566 wordSize) / wordSize), "consistent layout helper value"); | 3566 wordSize) / wordSize), "consistent layout helper value"); |
3567 | 3567 |
3568 // Number of non-static oop map blocks allocated at end of klass. | 3568 // Number of non-static oop map blocks allocated at end of klass. |
3569 const unsigned int total_oop_map_count = | 3569 const unsigned int total_oop_map_count = |
3570 compute_oop_map_count(_super_klass, nonstatic_oop_map_count, | 3570 compute_oop_map_count(_super_klass, nonstatic_oop_map_count, |