comparison src/cpu/x86/vm/assembler_x86_64.cpp @ 178:6d172e3548cb

6695819: verify_oopx rax: broken oop in decode_heap_oop Summary: Code in gen_subtype_check was encoding rax as an oop on a path where rax was not an oop. Reviewed-by: never, kvn
author coleenp
date Thu, 05 Jun 2008 17:02:54 -0400
parents b130b98db9cf
children 1f809e010142
comparison
equal deleted inserted replaced
177:2a8ec427fbe1 178:6d172e3548cb
5263 5263
5264 void MacroAssembler::decode_heap_oop_not_null(Register r) { 5264 void MacroAssembler::decode_heap_oop_not_null(Register r) {
5265 assert (UseCompressedOops, "should only be used for compressed headers"); 5265 assert (UseCompressedOops, "should only be used for compressed headers");
5266 // Cannot assert, unverified entry point counts instructions (see .ad file) 5266 // Cannot assert, unverified entry point counts instructions (see .ad file)
5267 // vtableStubs also counts instructions in pd_code_size_limit. 5267 // vtableStubs also counts instructions in pd_code_size_limit.
5268 // Also do not verify_oop as this is called by verify_oop.
5268 assert(Address::times_8 == LogMinObjAlignmentInBytes, "decode alg wrong"); 5269 assert(Address::times_8 == LogMinObjAlignmentInBytes, "decode alg wrong");
5269 leaq(r, Address(r12_heapbase, r, Address::times_8, 0)); 5270 leaq(r, Address(r12_heapbase, r, Address::times_8, 0));
5270 } 5271 }
5271 5272
5272 void MacroAssembler::decode_heap_oop_not_null(Register dst, Register src) { 5273 void MacroAssembler::decode_heap_oop_not_null(Register dst, Register src) {
5273 assert (UseCompressedOops, "should only be used for compressed headers"); 5274 assert (UseCompressedOops, "should only be used for compressed headers");
5274 // Cannot assert, unverified entry point counts instructions (see .ad file) 5275 // Cannot assert, unverified entry point counts instructions (see .ad file)
5275 // vtableStubs also counts instructions in pd_code_size_limit. 5276 // vtableStubs also counts instructions in pd_code_size_limit.
5277 // Also do not verify_oop as this is called by verify_oop.
5276 assert(Address::times_8 == LogMinObjAlignmentInBytes, "decode alg wrong"); 5278 assert(Address::times_8 == LogMinObjAlignmentInBytes, "decode alg wrong");
5277 leaq(dst, Address(r12_heapbase, src, Address::times_8, 0)); 5279 leaq(dst, Address(r12_heapbase, src, Address::times_8, 0));
5278 } 5280 }
5279 5281
5280 Assembler::Condition MacroAssembler::negate_condition(Assembler::Condition cond) { 5282 Assembler::Condition MacroAssembler::negate_condition(Assembler::Condition cond) {