changeset 3856:9747f83d7a38

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 Fri, 21 Mar 2014 20:57:28 +0000
parents 71fc00fc11be
children 72a544aeb892
files src/cpu/zero/vm/asm_helper.cpp src/cpu/zero/vm/cppInterpreter_arm.S
diffstat 2 files changed, 14 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/src/cpu/zero/vm/asm_helper.cpp	Mon Mar 17 13:40:34 2014 +0000
+++ b/src/cpu/zero/vm/asm_helper.cpp	Fri Mar 21 20:57:28 2014 +0000
@@ -360,22 +360,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	Mon Mar 17 13:40:34 2014 +0000
+++ b/src/cpu/zero/vm/cppInterpreter_arm.S	Fri Mar 21 20:57:28 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, lr, ip}	
 	.endm
 	
@@ -861,7 +864,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]
@@ -870,7 +873,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]
@@ -1072,7 +1075,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
@@ -1095,7 +1098,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]
@@ -1118,7 +1121,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]
@@ -3340,12 +3343,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]