src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp Thu Nov 18 19:20:36 2010
--- new/src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp Thu Nov 18 19:20:36 2010
*** 28,38 ****
--- 28,38 ----
void C1_MacroAssembler::inline_cache_check(Register receiver, Register iCache) {
Label L;
const Register temp_reg = G3_scratch;
// Note: needs more testing of out-of-line vs. inline slow case
verify_oop(receiver);
! ld_ptr(receiver, oopDesc::klass_offset_in_bytes(), temp_reg);
! load_klass(receiver, temp_reg);
cmp(temp_reg, iCache);
brx(Assembler::equal, true, Assembler::pt, L);
delayed()->nop();
AddressLiteral ic_miss(SharedRuntime::get_ic_miss_stub());
jump_to(ic_miss, temp_reg);
*** 173,185 ****
--- 173,198 ----
if (UseBiasedLocking && !len->is_valid()) {
ld_ptr(klass, Klass::prototype_header_offset_in_bytes() + klassOopDesc::klass_part_offset_in_bytes(), t1);
} else {
set((intx)markOopDesc::prototype(), t1);
}
! st_ptr(t1 , obj, oopDesc::mark_offset_in_bytes ());
st_ptr(klass, obj, oopDesc::klass_offset_in_bytes ());
! if (len->is_valid()) st(len , obj, arrayOopDesc::length_offset_in_bytes());
+ #ifdef _LP64
! if (UseCompressedOops) {
+ // Save klass
+ mov(klass, t1);
+ encode_heap_oop(t1);
+ stw(t1, obj, oopDesc::klass_offset_in_bytes());
+ } else
+ #endif
+ st_ptr(klass, obj, oopDesc::klass_offset_in_bytes());
+ if (len->is_valid()) st(len, obj, arrayOopDesc::length_offset_in_bytes());
+ #ifdef _LP64
+ else if (UseCompressedOops) {
+ store_klass_gap(G0, obj);
+ }
+ #endif
}
void C1_MacroAssembler::initialize_body(Register base, Register index) {
assert_different_registers(base, index);
*** 223,233 ****
--- 236,246 ----
Register var_size_in_bytes, // object size in bytes if unknown at compile time; invalid otherwise
int con_size_in_bytes, // object size in bytes if known at compile time
Register t1, // temp register
Register t2 // temp register
) {
! const int hdr_size_in_bytes = instanceOopDesc::base_offset_in_bytes();
! const int hdr_size_in_bytes = instanceOopDesc::header_size() * HeapWordSize;
initialize_header(obj, klass, noreg, t1, t2);
#ifdef ASSERT
{
src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File