comparison src/cpu/sparc/vm/assembler_sparc.cpp @ 4762:069ab3f976d3

7118863: Move sizeof(klassOopDesc) into the *Klass::*_offset_in_bytes() functions Summary: Moved sizeof(klassOopDesc), changed the return type to ByteSize and removed the _in_bytes suffix. Reviewed-by: never, bdelsart, coleenp, jrose
author stefank
date Wed, 07 Dec 2011 11:35:03 +0100
parents e6b1331a51d2
children 33df1aeaebbf 1d7922586cf6
comparison
equal deleted inserted replaced
4761:65149e74c706 4762:069ab3f976d3
3034 Register temp2_reg, 3034 Register temp2_reg,
3035 Label* L_success, 3035 Label* L_success,
3036 Label* L_failure, 3036 Label* L_failure,
3037 Label* L_slow_path, 3037 Label* L_slow_path,
3038 RegisterOrConstant super_check_offset) { 3038 RegisterOrConstant super_check_offset) {
3039 int sc_offset = (klassOopDesc::header_size() * HeapWordSize + 3039 int sc_offset = in_bytes(Klass::secondary_super_cache_offset());
3040 Klass::secondary_super_cache_offset_in_bytes()); 3040 int sco_offset = in_bytes(Klass::super_check_offset_offset());
3041 int sco_offset = (klassOopDesc::header_size() * HeapWordSize +
3042 Klass::super_check_offset_offset_in_bytes());
3043 3041
3044 bool must_load_sco = (super_check_offset.constant_or_zero() == -1); 3042 bool must_load_sco = (super_check_offset.constant_or_zero() == -1);
3045 bool need_slow_path = (must_load_sco || 3043 bool need_slow_path = (must_load_sco ||
3046 super_check_offset.constant_or_zero() == sco_offset); 3044 super_check_offset.constant_or_zero() == sco_offset);
3047 3045
3157 if (L_success == NULL) { L_success = &L_fallthrough; label_nulls++; } 3155 if (L_success == NULL) { L_success = &L_fallthrough; label_nulls++; }
3158 if (L_failure == NULL) { L_failure = &L_fallthrough; label_nulls++; } 3156 if (L_failure == NULL) { L_failure = &L_fallthrough; label_nulls++; }
3159 assert(label_nulls <= 1, "at most one NULL in the batch"); 3157 assert(label_nulls <= 1, "at most one NULL in the batch");
3160 3158
3161 // a couple of useful fields in sub_klass: 3159 // a couple of useful fields in sub_klass:
3162 int ss_offset = (klassOopDesc::header_size() * HeapWordSize + 3160 int ss_offset = in_bytes(Klass::secondary_supers_offset());
3163 Klass::secondary_supers_offset_in_bytes()); 3161 int sc_offset = in_bytes(Klass::secondary_super_cache_offset());
3164 int sc_offset = (klassOopDesc::header_size() * HeapWordSize +
3165 Klass::secondary_super_cache_offset_in_bytes());
3166 3162
3167 // Do a linear scan of the secondary super-klass chain. 3163 // Do a linear scan of the secondary super-klass chain.
3168 // This code is rarely used, so simplicity is a virtue here. 3164 // This code is rarely used, so simplicity is a virtue here.
3169 3165
3170 #ifndef PRODUCT 3166 #ifndef PRODUCT
3334 assert(markOopDesc::age_shift == markOopDesc::lock_bits + markOopDesc::biased_lock_bits, "biased locking makes assumptions about bit layout"); 3330 assert(markOopDesc::age_shift == markOopDesc::lock_bits + markOopDesc::biased_lock_bits, "biased locking makes assumptions about bit layout");
3335 and3(mark_reg, markOopDesc::biased_lock_mask_in_place, temp_reg); 3331 and3(mark_reg, markOopDesc::biased_lock_mask_in_place, temp_reg);
3336 cmp_and_brx_short(temp_reg, markOopDesc::biased_lock_pattern, Assembler::notEqual, Assembler::pn, cas_label); 3332 cmp_and_brx_short(temp_reg, markOopDesc::biased_lock_pattern, Assembler::notEqual, Assembler::pn, cas_label);
3337 3333
3338 load_klass(obj_reg, temp_reg); 3334 load_klass(obj_reg, temp_reg);
3339 ld_ptr(Address(temp_reg, Klass::prototype_header_offset_in_bytes() + klassOopDesc::klass_part_offset_in_bytes()), temp_reg); 3335 ld_ptr(Address(temp_reg, Klass::prototype_header_offset()), temp_reg);
3340 or3(G2_thread, temp_reg, temp_reg); 3336 or3(G2_thread, temp_reg, temp_reg);
3341 xor3(mark_reg, temp_reg, temp_reg); 3337 xor3(mark_reg, temp_reg, temp_reg);
3342 andcc(temp_reg, ~((int) markOopDesc::age_mask_in_place), temp_reg); 3338 andcc(temp_reg, ~((int) markOopDesc::age_mask_in_place), temp_reg);
3343 if (counters != NULL) { 3339 if (counters != NULL) {
3344 cond_inc(Assembler::equal, (address) counters->biased_lock_entry_count_addr(), mark_reg, temp_reg); 3340 cond_inc(Assembler::equal, (address) counters->biased_lock_entry_count_addr(), mark_reg, temp_reg);
3411 // the bias from one thread to another directly in this situation. 3407 // the bias from one thread to another directly in this situation.
3412 // 3408 //
3413 // FIXME: due to a lack of registers we currently blow away the age 3409 // FIXME: due to a lack of registers we currently blow away the age
3414 // bits in this situation. Should attempt to preserve them. 3410 // bits in this situation. Should attempt to preserve them.
3415 load_klass(obj_reg, temp_reg); 3411 load_klass(obj_reg, temp_reg);
3416 ld_ptr(Address(temp_reg, Klass::prototype_header_offset_in_bytes() + klassOopDesc::klass_part_offset_in_bytes()), temp_reg); 3412 ld_ptr(Address(temp_reg, Klass::prototype_header_offset()), temp_reg);
3417 or3(G2_thread, temp_reg, temp_reg); 3413 or3(G2_thread, temp_reg, temp_reg);
3418 casn(mark_addr.base(), mark_reg, temp_reg); 3414 casn(mark_addr.base(), mark_reg, temp_reg);
3419 // If the biasing toward our thread failed, this means that 3415 // If the biasing toward our thread failed, this means that
3420 // another thread succeeded in biasing it toward itself and we 3416 // another thread succeeded in biasing it toward itself and we
3421 // need to revoke that bias. The revocation will occur in the 3417 // need to revoke that bias. The revocation will occur in the
3441 // normal locking code. 3437 // normal locking code.
3442 // 3438 //
3443 // FIXME: due to a lack of registers we currently blow away the age 3439 // FIXME: due to a lack of registers we currently blow away the age
3444 // bits in this situation. Should attempt to preserve them. 3440 // bits in this situation. Should attempt to preserve them.
3445 load_klass(obj_reg, temp_reg); 3441 load_klass(obj_reg, temp_reg);
3446 ld_ptr(Address(temp_reg, Klass::prototype_header_offset_in_bytes() + klassOopDesc::klass_part_offset_in_bytes()), temp_reg); 3442 ld_ptr(Address(temp_reg, Klass::prototype_header_offset()), temp_reg);
3447 casn(mark_addr.base(), mark_reg, temp_reg); 3443 casn(mark_addr.base(), mark_reg, temp_reg);
3448 // Fall through to the normal CAS-based lock, because no matter what 3444 // Fall through to the normal CAS-based lock, because no matter what
3449 // the result of the above CAS, some thread must have succeeded in 3445 // the result of the above CAS, some thread must have succeeded in
3450 // removing the bias bit from the object's header. 3446 // removing the bias bit from the object's header.
3451 if (counters != NULL) { 3447 if (counters != NULL) {