src/cpu/x86/vm/assembler_x86.cpp

changeset 1938
02e771df338e
parent 1934
e9ff18c4ace7
child 2039
66c5dadb4d61
     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() {

mercurial