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