Mercurial > hg > arm32-8u40
changeset 7009:62433ddbbee3
Replace literal offsets for METHOD_SIZEOFPARAMETERS and ISTATE_NEXT_FRAME with correct symbolic names.
Fix trace code not to dereference null pointers.
Correct Helper_aputfield and helper_aastore not to use static _byte_map_base.
Comment-out calls to TRACE.
Make sure that ISTATE_METHOD and ISTATE_SELF_LINK are set even when JITting fails.
author | aph |
---|---|
date | Mon, 17 Mar 2014 13:15:25 +0000 |
parents | 4ff2592dbb03 |
children | e0d71a0dd6c6 |
files | src/cpu/zero/vm/asm_helper.cpp src/cpu/zero/vm/cppInterpreter_arm.S |
diffstat | 2 files changed, 16 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/src/cpu/zero/vm/asm_helper.cpp Fri Jul 26 11:31:42 2013 +0100 +++ b/src/cpu/zero/vm/asm_helper.cpp Mon Mar 17 13:15:25 2014 +0000 @@ -378,22 +378,16 @@ goto handle_exception; } } - oop* elem_loc = (oop*)(((address) arrayref->base(T_OBJECT)) + index * sizeof(oop)); - // *(oop*)(((address) arrayref->base(T_OBJECT)) + index * sizeof(oop)) = value; - *elem_loc = value; - // Mark the card - BarrierSet* bs = Universe::heap()->barrier_set(); - static volatile jbyte* _byte_map_base = (volatile jbyte*)(((CardTableModRefBS*)bs)->byte_map_base); - OrderAccess::release_store(&_byte_map_base[(uintptr_t)elem_loc >> CardTableModRefBS::card_shift], 0); + ((objArrayOopDesc *) arrayref)->obj_at_put(index, value); } handle_exception: return istate->thread()->pending_exception(); } -extern "C" void Helper_aputfield(oop obj) +extern "C" void Helper_aputfield(oop obj, oop val, int offset) { BarrierSet* bs = Universe::heap()->barrier_set(); - static volatile jbyte* _byte_map_base = (volatile jbyte*)(((CardTableModRefBS*)bs)->byte_map_base); + jbyte* _byte_map_base = (((CardTableModRefBS*)bs)->byte_map_base); OrderAccess::release_store(&_byte_map_base[(uintptr_t)obj >> CardTableModRefBS::card_shift], 0); }
--- a/src/cpu/zero/vm/cppInterpreter_arm.S Fri Jul 26 11:31:42 2013 +0100 +++ b/src/cpu/zero/vm/cppInterpreter_arm.S Mon Mar 17 13:15:25 2014 +0000 @@ -526,10 +526,13 @@ mrs r4, cpsr mov r0, jpc ldr r1, [thread, #THREAD_TOP_ZERO_FRAME] + cmp r1, #0 sub r1, r1, #ISTATE_NEXT_FRAME + beq 0f + DECACHE_JPC ldr r2, =my_trace blx r2 - msr cpsr, r4 +0: msr cpsr, r4 ldmfd sp!, {r0, r1, r2, r3, r4, ip, lr} .endm @@ -551,7 +554,7 @@ .elseif dispatch_state == 4 DISPATCH_4 .endif - TRACE +@ TRACE moveq pc, ip ldrb r1, [jpc, lr] bic ip, ip, #7 @@ -561,7 +564,7 @@ .endm .macro DISPATCH_BYTECODE - TRACE +@ TRACE @ ldrb r1, [jpc, #2] ldr ip, [dispatch, r0, lsl #2] ldrb r2, [jpc, #1] @@ -870,7 +873,7 @@ SLOW_ENTRY empty_entry: - ldrh r3, [r0, #42] + ldrh r3, [r0, #METHOD_SIZEOFPARAMETERS] ldr r1, [r2, #THREAD_JAVA_SP] add r1, r1, r3, lsl #2 str r1, [r2, #THREAD_JAVA_SP] @@ -879,7 +882,7 @@ FAST_ENTRY fast_empty_entry: - ldrh r3, [r0, #42] + ldrh r3, [r0, #METHOD_SIZEOFPARAMETERS] ldr r1, [thread, #THREAD_JAVA_SP] add r1, r1, r3, lsl #2 str r1, [thread, #THREAD_JAVA_SP] @@ -1081,7 +1084,7 @@ ldr r1, [thread, #THREAD_STACK_SIZE] ldr r3, [thread, #THREAD_STACK_BASE] - add r0, r9, #72 + add r0, r9, #ISTATE_NEXT_FRAME rsb r3, r1, r3 rsb r3, r3, arm_sp @@ -1104,7 +1107,7 @@ str r5, [thread, #THREAD_LAST_JAVA_FP] ldr r5, [thread, #THREAD_JAVA_SP] str r5, [thread, #THREAD_LAST_JAVA_SP] - ldr r11, [r11, #-72 + ISTATE_METHOD] + ldr r11, [r11, #-ISTATE_NEXT_FRAME + ISTATE_METHOD] cmp r1, #0 bne .fast_native_entry_exception ldr r5, [r11, #METHOD_SIGNATUREHANDLER] @@ -1127,7 +1130,7 @@ ldr r11, [thread, #THREAD_TOP_ZERO_FRAME] ldr r1, [thread, #THREAD_PENDING_EXC] mov r3, #0 - ldr r11, [r11, #-72 + ISTATE_METHOD] + ldr r11, [r11, #-ISTATE_NEXT_FRAME + ISTATE_METHOD] cmp r1, #0 str r3, [thread, #THREAD_LAST_JAVA_SP] str r3, [thread, #THREAD_LAST_JAVA_FP] @@ -3353,12 +3356,12 @@ str locals, [istate, #ISTATE_LOCALS] USEC cmp r3, lr str constpool, [istate, #ISTATE_CONSTANTS] + str tmp1, [istate, #ISTATE_METHOD] + str istate, [istate, #ISTATE_SELF_LINK] USEC bcs method_entry_freq_count_overflow DISPATCH_NEXT DISPATCH_NEXT DISPATCH_NEXT - str tmp1, [istate, #ISTATE_METHOD] - str istate, [istate, #ISTATE_SELF_LINK] @ mov lr, #0 @ str lr, [istate, #ISTATE_PREV_LINK] @ str lr, [istate, #ISTATE_CALLEE]