Mercurial > hg > graal-compiler
diff c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotXirGenerator.java @ 1936:8d88c9ac9247
Correct deopt handler entry. New flag -XX:+TraceSignals. More detailed deopt printing.
author | Thomas Wuerthinger <wuerthinger@ssw.jku.at> |
---|---|
date | Thu, 23 Dec 2010 18:13:28 +0100 |
parents | b1f2e875300a |
children | 00bc9eaf0e24 |
line wrap: on
line diff
--- a/c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotXirGenerator.java Wed Dec 22 19:47:39 2010 +0100 +++ b/c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotXirGenerator.java Thu Dec 23 18:13:28 2010 +0100 @@ -51,6 +51,7 @@ private static final Integer MARK_OSR_ENTRY = 0x0003; private static final Integer MARK_UNWIND_ENTRY = 0x0004; private static final Integer MARK_EXCEPTION_HANDLER_ENTRY = 0x0005; + private static final Integer MARK_DEOPT_HANDLER_ENTRY = 0x0006; private static final Integer MARK_STATIC_CALL_STUB = 0x1000; @@ -128,6 +129,11 @@ asm.callRuntime(config.handleExceptionStub, null); asm.shouldNotReachHere(); + asm.nop(1); + asm.mark(MARK_DEOPT_HANDLER_ENTRY); + asm.callRuntime(config.handleDeoptStub, null); + asm.shouldNotReachHere(); + if (!is(STATIC_METHOD, flags)) { asm.bindOutOfLine(unverifiedStub); asm.jmpRuntime(config.inlineCacheMissStub); @@ -663,11 +669,10 @@ } else { length = asm.createTemp("length", CiKind.Int); if (implicitNullException) { - asm.nop(1); + //asm.nop(1); asm.mark(MARK_IMPLICIT_NULL); } asm.pload(CiKind.Int, length, array, asm.i(config.arrayLengthOffset), implicitNullException); - implicitNullException = false; } asm.jugteq(failBoundsCheck, index, length); implicitNullException = false; @@ -1088,6 +1093,8 @@ asm.callRuntime(config.accessFieldStub, null); asm.jmp(patchSite); + // Check if we need NOP instructions like in C1 to "not destroy the world". + state = State.Finished; } }