src/os_cpu/windows_x86/vm/os_windows_x86.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
*** old/src/os_cpu/windows_x86/vm/os_windows_x86.cpp Tue Oct 12 12:06:26 2010
--- new/src/os_cpu/windows_x86/vm/os_windows_x86.cpp Tue Oct 12 12:06:25 2010
*** 385,396 ****
--- 385,396 ----
st->print( "RSP=" INTPTR_FORMAT, uc->Rsp);
st->print(", RBP=" INTPTR_FORMAT, uc->Rbp);
st->print(", RSI=" INTPTR_FORMAT, uc->Rsi);
st->print(", RDI=" INTPTR_FORMAT, uc->Rdi);
st->cr();
! st->print( "R8=" INTPTR_FORMAT, uc->R8);
! st->print(", R9=" INTPTR_FORMAT, uc->R9);
! st->print( "R8 =" INTPTR_FORMAT, uc->R8);
! st->print(", R9 =" INTPTR_FORMAT, uc->R9);
st->print(", R10=" INTPTR_FORMAT, uc->R10);
st->print(", R11=" INTPTR_FORMAT, uc->R11);
st->cr();
st->print( "R12=" INTPTR_FORMAT, uc->R12);
st->print(", R13=" INTPTR_FORMAT, uc->R13);
*** 397,462 ****
--- 397,406 ----
st->print(", R14=" INTPTR_FORMAT, uc->R14);
st->print(", R15=" INTPTR_FORMAT, uc->R15);
st->cr();
st->print( "RIP=" INTPTR_FORMAT, uc->Rip);
st->print(", EFLAGS=" INTPTR_FORMAT, uc->EFlags);
st->cr();
st->cr();
st->print_cr("Register to memory mapping:");
st->cr();
// this is only for the "general purpose" registers
st->print_cr("RAX=" INTPTR_FORMAT, uc->Rax);
print_location(st, uc->Rax);
st->cr();
st->print_cr("RBX=" INTPTR_FORMAT, uc->Rbx);
print_location(st, uc->Rbx);
st->cr();
st->print_cr("RCX=" INTPTR_FORMAT, uc->Rcx);
print_location(st, uc->Rcx);
st->cr();
st->print_cr("RDX=" INTPTR_FORMAT, uc->Rdx);
print_location(st, uc->Rdx);
st->cr();
st->print_cr("RSP=" INTPTR_FORMAT, uc->Rsp);
print_location(st, uc->Rsp);
st->cr();
st->print_cr("RBP=" INTPTR_FORMAT, uc->Rbp);
print_location(st, uc->Rbp);
st->cr();
st->print_cr("RSI=" INTPTR_FORMAT, uc->Rsi);
print_location(st, uc->Rsi);
st->cr();
st->print_cr("RDI=" INTPTR_FORMAT, uc->Rdi);
print_location(st, uc->Rdi);
st->cr();
st->print_cr("R8 =" INTPTR_FORMAT, uc->R8);
print_location(st, uc->R8);
st->cr();
st->print_cr("R9 =" INTPTR_FORMAT, uc->R9);
print_location(st, uc->R9);
st->cr();
st->print_cr("R10=" INTPTR_FORMAT, uc->R10);
print_location(st, uc->R10);
st->cr();
st->print_cr("R11=" INTPTR_FORMAT, uc->R11);
print_location(st, uc->R11);
st->cr();
st->print_cr("R12=" INTPTR_FORMAT, uc->R12);
print_location(st, uc->R12);
st->cr();
st->print_cr("R13=" INTPTR_FORMAT, uc->R13);
print_location(st, uc->R13);
st->cr();
st->print_cr("R14=" INTPTR_FORMAT, uc->R14);
print_location(st, uc->R14);
st->cr();
st->print_cr("R15=" INTPTR_FORMAT, uc->R15);
print_location(st, uc->R15);
#else
st->print( "EAX=" INTPTR_FORMAT, uc->Eax);
st->print(", EBX=" INTPTR_FORMAT, uc->Ebx);
st->print(", ECX=" INTPTR_FORMAT, uc->Ecx);
st->print(", EDX=" INTPTR_FORMAT, uc->Edx);
*** 466,507 ****
--- 410,419 ----
st->print(", ESI=" INTPTR_FORMAT, uc->Esi);
st->print(", EDI=" INTPTR_FORMAT, uc->Edi);
st->cr();
st->print( "EIP=" INTPTR_FORMAT, uc->Eip);
st->print(", EFLAGS=" INTPTR_FORMAT, uc->EFlags);
st->cr();
st->cr();
st->print_cr("Register to memory mapping:");
st->cr();
// this is only for the "general purpose" registers
st->print_cr("EAX=" INTPTR_FORMAT, uc->Eax);
print_location(st, uc->Eax);
st->cr();
st->print_cr("EBX=" INTPTR_FORMAT, uc->Ebx);
print_location(st, uc->Ebx);
st->cr();
st->print_cr("ECX=" INTPTR_FORMAT, uc->Ecx);
print_location(st, uc->Ecx);
st->cr();
st->print_cr("EDX=" INTPTR_FORMAT, uc->Edx);
print_location(st, uc->Edx);
st->cr();
st->print_cr("ESP=" INTPTR_FORMAT, uc->Esp);
print_location(st, uc->Esp);
st->cr();
st->print_cr("EBP=" INTPTR_FORMAT, uc->Ebp);
print_location(st, uc->Ebp);
st->cr();
st->print_cr("ESI=" INTPTR_FORMAT, uc->Esi);
print_location(st, uc->Esi);
st->cr();
st->print_cr("EDI=" INTPTR_FORMAT, uc->Edi);
print_location(st, uc->Edi);
#endif // AMD64
st->cr();
st->cr();
intptr_t *sp = (intptr_t *)uc->REG_SP;
*** 512,524 ****
--- 424,478 ----
// Note: it may be unsafe to inspect memory near pc. For example, pc may
// point to garbage if entry point in an nmethod is corrupted. Leave
// this at the end, and hope for the best.
address pc = (address)uc->REG_PC;
st->print_cr("Instructions: (pc=" PTR_FORMAT ")", pc);
! print_hex_dump(st, pc - 16, pc + 16, sizeof(char));
! print_hex_dump(st, pc - 32, pc + 32, sizeof(char));
st->cr();
}
+
+
+ void os::print_register_info(outputStream *st, void *context) {
+ if (context == NULL) return;
+
+ CONTEXT* uc = (CONTEXT*)context;
+
+ st->print_cr("Register to memory mapping:");
+ st->cr();
+
+ // this is only for the "general purpose" registers
+
+ #ifdef AMD64
+ st->print("RAX="); print_location(st, uc->Rax);
+ st->print("RBX="); print_location(st, uc->Rbx);
+ st->print("RCX="); print_location(st, uc->Rcx);
+ st->print("RDX="); print_location(st, uc->Rdx);
+ st->print("RSP="); print_location(st, uc->Rsp);
+ st->print("RBP="); print_location(st, uc->Rbp);
+ st->print("RSI="); print_location(st, uc->Rsi);
+ st->print("RDI="); print_location(st, uc->Rdi);
+ st->print("R8 ="); print_location(st, uc->R8);
+ st->print("R9 ="); print_location(st, uc->R9);
+ st->print("R10="); print_location(st, uc->R10);
+ st->print("R11="); print_location(st, uc->R11);
+ st->print("R12="); print_location(st, uc->R12);
+ st->print("R13="); print_location(st, uc->R13);
+ st->print("R14="); print_location(st, uc->R14);
+ st->print("R15="); print_location(st, uc->R15);
+ #else
+ st->print("EAX="); print_location(st, uc->Eax);
+ st->print("EBX="); print_location(st, uc->Ebx);
+ st->print("ECX="); print_location(st, uc->Ecx);
+ st->print("EDX="); print_location(st, uc->Edx);
+ st->print("ESP="); print_location(st, uc->Esp);
+ st->print("EBP="); print_location(st, uc->Ebp);
+ st->print("ESI="); print_location(st, uc->Esi);
+ st->print("EDI="); print_location(st, uc->Edi);
+ #endif
+
+ st->cr();
+ }
extern "C" int SafeFetch32 (int * adr, int Err) {
int rv = Err ;
_try {
rv = *((volatile int *) adr) ;
src/os_cpu/windows_x86/vm/os_windows_x86.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File