comparison src/cpu/x86/vm/templateTable_x86_64.cpp @ 167:feeb96a45707

6696264: assert("narrow oop can never be zero") for GCBasher & ParNewGC Summary: decouple set_klass() with zeroing the gap when compressed. Reviewed-by: kvn, ysr, jrose
author coleenp
date Wed, 28 May 2008 21:06:24 -0700
parents ba764ed4b6f2
children d1605aabd0a1 6aae2f9d0294
comparison
equal deleted inserted replaced
166:aaa1137c5ef4 167:feeb96a45707
3161 __ movq(Address(rax, oopDesc::mark_offset_in_bytes()), rscratch1); 3161 __ movq(Address(rax, oopDesc::mark_offset_in_bytes()), rscratch1);
3162 } else { 3162 } else {
3163 __ movptr(Address(rax, oopDesc::mark_offset_in_bytes()), 3163 __ movptr(Address(rax, oopDesc::mark_offset_in_bytes()),
3164 (intptr_t) markOopDesc::prototype()); // header (address 0x1) 3164 (intptr_t) markOopDesc::prototype()); // header (address 0x1)
3165 } 3165 }
3166 __ store_klass(rax, rsi); // klass 3166 __ xorl(rcx, rcx); // use zero reg to clear memory (shorter code)
3167 __ store_klass_gap(rax, rcx); // zero klass gap for compressed oops
3168 __ store_klass(rax, rsi); // store klass last
3167 __ jmp(done); 3169 __ jmp(done);
3168 } 3170 }
3169 3171
3170 { 3172 {
3171 SkipIfEqual skip(_masm, &DTraceAllocProbes, false); 3173 SkipIfEqual skip(_masm, &DTraceAllocProbes, false);