1.1 --- a/src/cpu/x86/vm/assembler_x86.cpp Wed Jun 02 22:45:42 2010 -0700 1.2 +++ b/src/cpu/x86/vm/assembler_x86.cpp Thu Jun 03 14:20:27 2010 -0700 1.3 @@ -7643,6 +7643,9 @@ 1.4 // Pass register number to verify_oop_subroutine 1.5 char* b = new char[strlen(s) + 50]; 1.6 sprintf(b, "verify_oop: %s: %s", reg->name(), s); 1.7 +#ifdef _LP64 1.8 + push(rscratch1); // save r10, trashed by movptr() 1.9 +#endif 1.10 push(rax); // save rax, 1.11 push(reg); // pass register argument 1.12 ExternalAddress buffer((address) b); 1.13 @@ -7653,6 +7656,7 @@ 1.14 // call indirectly to solve generation ordering problem 1.15 movptr(rax, ExternalAddress(StubRoutines::verify_oop_subroutine_entry_address())); 1.16 call(rax); 1.17 + // Caller pops the arguments (oop, message) and restores rax, r10 1.18 } 1.19 1.20 1.21 @@ -7767,6 +7771,9 @@ 1.22 char* b = new char[strlen(s) + 50]; 1.23 sprintf(b, "verify_oop_addr: %s", s); 1.24 1.25 +#ifdef _LP64 1.26 + push(rscratch1); // save r10, trashed by movptr() 1.27 +#endif 1.28 push(rax); // save rax, 1.29 // addr may contain rsp so we will have to adjust it based on the push 1.30 // we just did 1.31 @@ -7789,7 +7796,7 @@ 1.32 // call indirectly to solve generation ordering problem 1.33 movptr(rax, ExternalAddress(StubRoutines::verify_oop_subroutine_entry_address())); 1.34 call(rax); 1.35 - // Caller pops the arguments and restores rax, from the stack 1.36 + // Caller pops the arguments (addr, message) and restores rax, r10. 1.37 } 1.38 1.39 void MacroAssembler::verify_tlab() {