src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File c1-coops Cdiff src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp

src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp

Print this page

        

*** 38,48 **** 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); 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); --- 38,48 ---- 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); ! 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);
*** 183,195 **** 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()); } void C1_MacroAssembler::initialize_body(Register base, Register index) { assert_different_registers(base, index); --- 183,205 ---- 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()); ! if (UseCompressedOops) { ! // Save klass ! mov(klass, t1); ! encode_heap_oop_not_null(t1); ! stw(t1, obj, oopDesc::klass_offset_in_bytes()); ! } else { ! st_ptr(klass, obj, oopDesc::klass_offset_in_bytes()); ! } ! if (len->is_valid()) st(len, obj, arrayOopDesc::length_offset_in_bytes()); ! else if (UseCompressedOops) { ! store_klass_gap(G0, obj); ! } } void C1_MacroAssembler::initialize_body(Register base, Register index) { assert_different_registers(base, index);
*** 233,243 **** 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(); initialize_header(obj, klass, noreg, t1, t2); #ifdef ASSERT { --- 243,253 ---- 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::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