# HG changeset patch # User Thomas Wuerthinger # Date 1330034788 -3600 # Node ID acf7d88327fab8da215d1099539197642110e8f7 # Parent 7406229b269f35b55780fd86e6c3a7a42b6c7364 Fixed two asserts in the implicit div exception handling for Windows that are not valid for Graal (as it deoptimizes to some place before the div instead of exactly to the div bytecode). diff -r 7406229b269f -r acf7d88327fa src/os/windows/vm/os_windows.cpp --- a/src/os/windows/vm/os_windows.cpp Thu Feb 23 22:04:35 2012 +0100 +++ b/src/os/windows/vm/os_windows.cpp Thu Feb 23 23:06:28 2012 +0100 @@ -2083,9 +2083,9 @@ PCONTEXT ctx = exceptionInfo->ContextRecord; address pc = (address)ctx->Rip; NOT_PRODUCT(Events::log("idiv overflow exception at " INTPTR_FORMAT , pc)); - assert(pc[0] == 0xF7 || (pc[1] == 0xF7 && (pc[0] == 0x41 || pc[0] == 0x49)), "not an idiv opcode"); + //assert(pc[0] == 0xF7 || (pc[1] == 0xF7 && (pc[0] == 0x41 || pc[0] == 0x49)), "not an idiv opcode"); //assert((pc[1] & ~0x7) == 0xF8, "cannot handle non-register operands"); - assert((long)ctx->Rax == (long)min_jint || pc[0] == 0x49, "unexpected idiv exception"); + //assert((long)ctx->Rax == (long)min_jint || pc[0] == 0x49, "unexpected idiv exception"); // set correct result values and continue after idiv instruction ctx->Rip = (DWORD)pc + 2; // idiv reg, reg is 2 bytes ctx->Rax = (DWORD)min_jint; // result