ARM: Fix crash in assembler interpreter
Andrew Haley
aph at redhat.com
Tue Jan 31 04:28:45 PST 2012
Xerxes Rånby reported that he'd found a very rare crash in the GC when
running the ARM assembler interpreter in an interpreter-only
environment. The problem was tracked down to an incorrect saved
bytecode pointer in the interpreter state. The fix is very simple:
write the pointer back to the interpreter state when returning from
a method.
We've tested this pretty extensively, so I'm committing this to trunk,
but I think it should go in the 1.11 branch too. OK?
Andrew.
2012-01-31 Andrew Haley <aph at redhat.com>
* arm_port/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S
(return_check_monitors): DECACHE_JPC so that the saved bytecode
pointer is correct for the GC.
--- a/arm_port/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S Tue Jan 31 07:17:17 2012 -0500
+++ b/arm_port/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S Tue Jan 31 07:19:24 2012 -0500
@@ -3576,6 +3576,7 @@
return_check_monitors:
stmdb arm_sp!, {r4, lr}
+ DECACHE_JPC
ldr r2, [istate, #ISTATE_METHOD]
ldr r4, [r2, #METHOD_ACCESSFLAGS]
tst r4, #1<<5
More information about the distro-pkg-dev
mailing list