comparison src/cpu/x86/vm/assembler_x86.cpp @ 1793:d257356e35f0

6939224: MethodHandle.invokeGeneric needs to perform the correct set of conversions Reviewed-by: never
author jrose
date Mon, 13 Sep 2010 23:24:30 -0700
parents d6f45b55c972
children d55217dc206f
comparison
equal deleted inserted replaced
1792:d20603ee9e10 1793:d257356e35f0
4991 // This is the value of eip which points to where verify_oop will return. 4991 // This is the value of eip which points to where verify_oop will return.
4992 if (os::message_box(msg, "Execution stopped, print registers?")) { 4992 if (os::message_box(msg, "Execution stopped, print registers?")) {
4993 ttyLocker ttyl; 4993 ttyLocker ttyl;
4994 tty->print_cr("eip = 0x%08x", eip); 4994 tty->print_cr("eip = 0x%08x", eip);
4995 #ifndef PRODUCT 4995 #ifndef PRODUCT
4996 tty->cr(); 4996 if ((WizardMode || Verbose) && PrintMiscellaneous) {
4997 findpc(eip); 4997 tty->cr();
4998 tty->cr(); 4998 findpc(eip);
4999 tty->cr();
5000 }
4999 #endif 5001 #endif
5000 tty->print_cr("rax, = 0x%08x", rax); 5002 tty->print_cr("rax = 0x%08x", rax);
5001 tty->print_cr("rbx, = 0x%08x", rbx); 5003 tty->print_cr("rbx = 0x%08x", rbx);
5002 tty->print_cr("rcx = 0x%08x", rcx); 5004 tty->print_cr("rcx = 0x%08x", rcx);
5003 tty->print_cr("rdx = 0x%08x", rdx); 5005 tty->print_cr("rdx = 0x%08x", rdx);
5004 tty->print_cr("rdi = 0x%08x", rdi); 5006 tty->print_cr("rdi = 0x%08x", rdi);
5005 tty->print_cr("rsi = 0x%08x", rsi); 5007 tty->print_cr("rsi = 0x%08x", rsi);
5006 tty->print_cr("rbp, = 0x%08x", rbp); 5008 tty->print_cr("rbp = 0x%08x", rbp);
5007 tty->print_cr("rsp = 0x%08x", rsp); 5009 tty->print_cr("rsp = 0x%08x", rsp);
5008 BREAKPOINT; 5010 BREAKPOINT;
5011 assert(false, "start up GDB");
5009 } 5012 }
5010 } else { 5013 } else {
5011 ttyLocker ttyl; 5014 ttyLocker ttyl;
5012 ::tty->print_cr("=============== DEBUG MESSAGE: %s ================\n", msg); 5015 ::tty->print_cr("=============== DEBUG MESSAGE: %s ================\n", msg);
5013 assert(false, "DEBUG MESSAGE"); 5016 assert(false, "DEBUG MESSAGE");
7675 7678
7676 // load indirectly to solve generation ordering problem 7679 // load indirectly to solve generation ordering problem
7677 movptr(tmp, ExternalAddress((address) delayed_value_addr)); 7680 movptr(tmp, ExternalAddress((address) delayed_value_addr));
7678 7681
7679 #ifdef ASSERT 7682 #ifdef ASSERT
7680 Label L; 7683 { Label L;
7681 testptr(tmp, tmp); 7684 testptr(tmp, tmp);
7682 jccb(Assembler::notZero, L); 7685 if (WizardMode) {
7683 hlt(); 7686 jcc(Assembler::notZero, L);
7684 bind(L); 7687 char* buf = new char[40];
7688 sprintf(buf, "DelayedValue="INTPTR_FORMAT, delayed_value_addr[1]);
7689 stop(buf);
7690 } else {
7691 jccb(Assembler::notZero, L);
7692 hlt();
7693 }
7694 bind(L);
7695 }
7685 #endif 7696 #endif
7686 7697
7687 if (offset != 0) 7698 if (offset != 0)
7688 addptr(tmp, offset); 7699 addptr(tmp, offset);
7689 7700