Mercurial > hg > truffle
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); |