comparison src/cpu/x86/vm/assembler_x86.cpp @ 2464:d86923d96dca

7034967: C1: assert(false) failed: error (assembler_sparc.cpp:2043) Summary: Fix -XX:+VerifyOops Reviewed-by: kvn, never
author iveresov
date Fri, 08 Apr 2011 17:03:31 -0700
parents 09f96c3ff1ad
children 15c9a0e16269 5d046bf49ce7
comparison
equal deleted inserted replaced
2463:3f49d30f8184 2464:d86923d96dca
7939 #ifdef _LP64 7939 #ifdef _LP64
7940 push(rscratch1); // save r10, trashed by movptr() 7940 push(rscratch1); // save r10, trashed by movptr()
7941 #endif 7941 #endif
7942 push(rax); // save rax, 7942 push(rax); // save rax,
7943 // addr may contain rsp so we will have to adjust it based on the push 7943 // addr may contain rsp so we will have to adjust it based on the push
7944 // we just did 7944 // we just did (and on 64 bit we do two pushes)
7945 // NOTE: 64bit seemed to have had a bug in that it did movq(addr, rax); which 7945 // NOTE: 64bit seemed to have had a bug in that it did movq(addr, rax); which
7946 // stores rax into addr which is backwards of what was intended. 7946 // stores rax into addr which is backwards of what was intended.
7947 if (addr.uses(rsp)) { 7947 if (addr.uses(rsp)) {
7948 lea(rax, addr); 7948 lea(rax, addr);
7949 pushptr(Address(rax, BytesPerWord)); 7949 pushptr(Address(rax, LP64_ONLY(2 *) BytesPerWord));
7950 } else { 7950 } else {
7951 pushptr(addr); 7951 pushptr(addr);
7952 } 7952 }
7953 7953
7954 ExternalAddress buffer((address) b); 7954 ExternalAddress buffer((address) b);
8394 } else 8394 } else
8395 #endif 8395 #endif
8396 movptr(dst, src); 8396 movptr(dst, src);
8397 } 8397 }
8398 8398
8399 // Doesn't do verfication, generates fixed size code
8400 void MacroAssembler::load_heap_oop_not_null(Register dst, Address src) {
8401 #ifdef _LP64
8402 if (UseCompressedOops) {
8403 movl(dst, src);
8404 decode_heap_oop_not_null(dst);
8405 } else
8406 #endif
8407 movptr(dst, src);
8408 }
8409
8399 void MacroAssembler::store_heap_oop(Address dst, Register src) { 8410 void MacroAssembler::store_heap_oop(Address dst, Register src) {
8400 #ifdef _LP64 8411 #ifdef _LP64
8401 if (UseCompressedOops) { 8412 if (UseCompressedOops) {
8402 assert(!dst.uses(src), "not enough registers"); 8413 assert(!dst.uses(src), "not enough registers");
8403 encode_heap_oop(src); 8414 encode_heap_oop(src);