Mercurial > hg > release > icedtea6-1.6
changeset 1666:6bec6d168a87
Bug fixes to ARM interpreter
author | enevill@E101646 |
---|---|
date | Tue, 25 Aug 2009 09:27:59 +0100 |
parents | b8d4584ef200 |
children | da9eb62e065f |
files | ChangeLog ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S |
diffstat | 2 files changed, 24 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Thu Aug 20 20:42:36 2009 +0100 +++ b/ChangeLog Tue Aug 25 09:27:59 2009 +0100 @@ -1,3 +1,12 @@ +2009-08-25 Edward Nevill <ed@camswl.com> + + * cppInterpreter_arm.s + - 4 X bug fixes + - Java PC incorrect at safepoint branch + - constpool pointer not restored at safepoint branch + - wide astore nor popping stack + - native entry does not save r6 + 2009-08-20 Andrew John Hughes <ahughes@redhat.com> * Makefile.am:
--- a/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S Thu Aug 20 20:42:36 2009 +0100 +++ b/ports/hotspot/src/cpu/zero/vm/cppInterpreter_arm.S Tue Aug 25 09:27:59 2009 +0100 @@ -1744,6 +1744,9 @@ cmp r1, #1 bne branch_no_check + sub jpc, jpc, ip @ Point jpc back at the branch + mov tmp1, ip @ Save offset in tmp1 + ldr r3, [istate, #ISTATE_THREAD] mov r0, sp str r3, [sp] @@ -1752,14 +1755,16 @@ str jpc, [istate, #ISTATE_BCP] str stack, [istate, #ISTATE_STACK] bl _ZN20SafepointSynchronize5blockEP10JavaThread + ldr constpool, [istate, #ISTATE_CONSTANTS] ldr r0, [istate, #ISTATE_THREAD] ldr stack, [istate, #ISTATE_STACK] + add constpool, constpool, #CONST_POOL_OFFSET ldr r3, [r0, #THREAD_PENDING_EXC] ldr jpc, [istate, #ISTATE_BCP] cmp r3, #0 ldr locals, [istate, #ISTATE_LOCALS] bne handle_exception - DISPATCH_START 0 + DISPATCH_START_REG tmp1 @ Refetch opcode and update jpc again branch_no_check: DISPATCH_BYTECODE @@ -3061,6 +3066,7 @@ DISPATCH 4 case_wide_istore: case_wide_fstore: +case_wide_astore: POP r2 str r2, [locals, -r1, lsl #2] DISPATCH 4 @@ -3076,13 +3082,6 @@ sub r1, locals, r1, lsl #2 stmda r1, {r2, r3} DISPATCH 4 -case_wide_astore: - mov r3, r1 - mov r0, stack - mvn r1, #0 - mov r2, locals - bl _ZN19BytecodeInterpreter6astoreEPiiS0_i - DISPATCH 4 do_wide_ret: ldr r2, [istate, #ISTATE_METHOD] ldr r2, [r2, #8] @@ -3709,7 +3708,7 @@ ALIGN_CODE native_entry: adrl ip, dispatch_init_adcon - stmfd sp!, {r3, r4, r5, r7, r9, r10, r11, lr} + stmfd sp!, {r4, r5, r6, r7, r9, r10, r11, lr} @--- ldmia ip, {dispatch, r7} mov r11, r0 @@ -3925,7 +3924,7 @@ ldr r2, [r9, #THREAD_ACTIVE_HANDLES] mov r3, #0 @ ECN: Now that the object is safe on the Java stack str r3, [r2, #128] @ stack, with the Thread SP updated, clear the active_handles. - ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} + ldmfd sp!, {r4, r5, r6, r7, r9, r10, r11, pc} .native_return_short: mov r0, r0, lsl #16 mov r0, r0, asr #16 @@ -3933,29 +3932,29 @@ str r0, [r5, #-4]! .native_return_void: str r5, [r9, #THREAD_JAVA_SP] - ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} + ldmfd sp!, {r4, r5, r6, r7, r9, r10, r11, pc} .native_return_dw: stmdb r5!, {r0, r1} str r5, [r9, #THREAD_JAVA_SP] - ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} + ldmfd sp!, {r4, r5, r6, r7, r9, r10, r11, pc} .native_return_byte: mov r0, r0, lsl #24 mov r0, r0, asr #24 str r0, [r5, #-4]! str r5, [r9, #THREAD_JAVA_SP] - ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} + ldmfd sp!, {r4, r5, r6, r7, r9, r10, r11, pc} .native_return_char: mov r0, r0, lsl #16 mov r0, r0, lsr #16 str r0, [r5, #-4]! str r5, [r9, #THREAD_JAVA_SP] - ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} + ldmfd sp!, {r4, r5, r6, r7, r9, r10, r11, pc} .native_return_bool: ands r0, r0, #255 movne r0, #1 str r0, [r5, #-4]! str r5, [r9, #THREAD_JAVA_SP] - ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} + ldmfd sp!, {r4, r5, r6, r7, r9, r10, r11, pc} .native_entry_throw_stack_overflow: str r0, [r9, #THREAD_LAST_JAVA_SP] @@ -3973,7 +3972,7 @@ add r5, r5, r3, lsl #2 str r5, [r9, #THREAD_JAVA_SP] - ldmfd sp!, {r3, r4, r5, r7, r9, r10, r11, pc} + ldmfd sp!, {r4, r5, r6, r7, r9, r10, r11, pc} .native_entry_do_special: stmdb sp!, {r0, r1} mov r0, r9