changeset 3675:3a05d8465ff1

Relaxed idiv exception handler assert.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Mon, 21 Nov 2011 14:12:10 +0100
parents d3d3dd0a3421
children 285d51520d4c
files src/os/windows/vm/os_windows.cpp
diffstat 1 files changed, 3 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/os/windows/vm/os_windows.cpp	Mon Nov 21 13:56:38 2011 +0100
+++ b/src/os/windows/vm/os_windows.cpp	Mon Nov 21 14:12:10 2011 +0100
@@ -2074,9 +2074,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, "not an idiv opcode");
-  assert((pc[1] & ~0x7) == 0xF8, "cannot handle non-register operands");
-  assert(ctx->Rax == min_jint, "unexpected idiv exception");
+  assert(pc[0] == 0xF7 || (pc[1] == 0xF7 && pc[0] == 0x41), "not an idiv opcode");
+  //assert((pc[1] & ~0x7) == 0xF8, "cannot handle non-register operands");
+  assert((long)ctx->Rax == (long)min_jint, "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