changeset 7012:6d54b1140edf

Several bug fixes to get eclipse working
author Edward Nevill <ed@camswl.com>
date Fri, 27 Feb 2015 09:59:29 +0000
parents c84c5aae6873
children 584622a1ee06
files src/cpu/zero/vm/arm32JIT.cpp src/cpu/zero/vm/asm_helper.cpp src/cpu/zero/vm/cppInterpreter_arm.S
diffstat 3 files changed, 18 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/cpu/zero/vm/arm32JIT.cpp	Mon Feb 16 13:18:10 2015 +0000
+++ b/src/cpu/zero/vm/arm32JIT.cpp	Fri Feb 27 09:59:29 2015 +0000
@@ -3540,7 +3540,7 @@
     loc >>= 2;
     offset = dest - loc;
     uoff = offset;
-    if (offset >= -(1<<22) && offset < (1<<22))
+    if (offset >= -(1<<23) && offset < (1<<23))
       return out_32(codebuf, A_BL(cond, uoff));
   }
   J_Unimplemented();
--- a/src/cpu/zero/vm/asm_helper.cpp	Mon Feb 16 13:18:10 2015 +0000
+++ b/src/cpu/zero/vm/asm_helper.cpp	Fri Feb 27 09:59:29 2015 +0000
@@ -716,6 +716,7 @@
 	print_def("class_fully_initialized",	instanceKlass::fully_initialized);
 	print_def("class_init_error",		instanceKlass::initialization_error);
 	nl();
+	print_def("flag_is_forced_virtual",	1 << ConstantPoolCacheEntry::is_forced_virtual_shift);
 	print_def("flag_methodInterface",	1 << ConstantPoolCacheEntry::has_method_type_shift);
 	print_def("flag_volatileField",		1 << ConstantPoolCacheEntry::is_volatile_shift);
 	print_def("flag_vfinalMethod",		1 << ConstantPoolCacheEntry::is_vfinal_shift);
--- a/src/cpu/zero/vm/cppInterpreter_arm.S	Mon Feb 16 13:18:10 2015 +0000
+++ b/src/cpu/zero/vm/cppInterpreter_arm.S	Fri Feb 27 09:59:29 2015 +0000
@@ -573,9 +573,11 @@
 	ldrb	r1, [jpc, lr]
         bic     ip, ip, #7
         ldr     pc, [ip, r1, lsl #2]
+	.set	dispatch_state, 0
 	.endm
 
 	.macro	DISPATCH step=0
+@        TRACE
 	ldrb	r0, [jpc, #\step]!
 @        ldrb    r1, [jpc, #2]
         ldr     ip, [dispatch, r0, lsl #2]
@@ -1802,8 +1804,8 @@
 	Opcode	if_acmpeq
         POP    r2, r3
         ldrsb   r1, [jpc, #1]
+        cmp     r3, r2
         ldrb    r2, [jpc, #2]
-        cmp     r3, r2
 	beq	branch_taken
 	DISPATCH	3
 
@@ -1811,40 +1813,40 @@
 	Opcode	if_acmpne
         POP    r2, r3
         ldrsb   r1, [jpc, #1]
+        cmp     r3, r2
         ldrb    r2, [jpc, #2]
-        cmp     r3, r2
 	bne	branch_taken
 	DISPATCH	3
 
 	Opcode	if_icmplt
         POP    r2, r3
         ldrsb   r1, [jpc, #1]
+        cmp     r3, r2
         ldrb    r2, [jpc, #2]
-        cmp     r3, r2
 	blt	branch_taken
 	DISPATCH	3
 
 	Opcode	if_icmpge
         POP    r2, r3
         ldrsb   r1, [jpc, #1]
+        cmp     r3, r2
         ldrb    r2, [jpc, #2]
-        cmp     r3, r2
 	bge	branch_taken
 	DISPATCH	3
 
 	Opcode	if_icmpgt
         POP    r2, r3
         ldrsb   r1, [jpc, #1]
+        cmp     r3, r2
         ldrb    r2, [jpc, #2]
-        cmp     r3, r2
 	bgt	branch_taken
 	DISPATCH	3
 
 	Opcode	if_icmple
         POP    r2, r3
         ldrsb   r1, [jpc, #1]
+        cmp     r3, r2
         ldrb    r2, [jpc, #2]
-        cmp     r3, r2
 	ble	branch_taken
 	DISPATCH	3
 
@@ -2828,7 +2830,7 @@
 	SW_NPC	beq	null_ptr_exception
 .abortentry110:
 	ldr	tmp1, [r2, #4]				@ rcvr->klass()
-	tst	r3, #flag_methodInterface
+	tst	r3, #flag_is_forced_virtual
 	bne	.invokeinterface_methodInterface
 
 	ldr	lr, [r0, #CP_OFFSET+4]			@ lr = iclass
@@ -3014,6 +3016,7 @@
 	bl	_ZN14CppInterpreter19method_handle_entryEP13methodOopDesciP6Thread
 	ldmia	sp!, {regset, pc}
 
+#ifdef FAST_BYTECODES
 	// Common code for fast_aldc and fast_aldc_w
 # r0 = constpool cache entry
 	.macro	aldc	opc, seq_len
@@ -3060,7 +3063,6 @@
         add     r0, constpool, r1, lsl #4
 	aldc opc_fast_aldc_w, 3
 
-#ifdef FAST_BYTECODES
 # r2 = [jpc, #1]
 # r1 = [jpc, #2]
 	Opcode	invokevfinal
@@ -3444,7 +3446,7 @@
 
 	ldr	r2, [thread, #THREAD_TOP_ZERO_FRAME]
 	str	r3, [thread, #THREAD_LAST_JAVA_SP]
-	str	r3, [thread, #THREAD_LAST_JAVA_FP]
+@	str	r3, [thread, #THREAD_LAST_JAVA_FP]
 	ldr	r0, [istate, #ISTATE_METHOD]
 	ldr	r3, [r2, #0]
 	ldrh	r0, [r0, #METHOD_MAXLOCALS]
@@ -5381,7 +5383,7 @@
 	cmp	r2, #0
 	beq	istub_null_ptr_exception
 	ldr	tmp1, [r2, #4]				@ rcvr->klass()
-	tst	r3, #flag_methodInterface
+	tst	r3, #flag_is_forced_virtual
 	bne	istub_methodInterface
 
 	ldr	lr, [r0, #CP_OFFSET+4]			@ lr = iclass
@@ -6714,6 +6716,10 @@
 
 #endif // T2JIT
 
+	// Ensure that any literals generated in the stubs are output here
+	// as this code is copied to the bottom of the code buffer
+	.ltorg
+
 	.global	Thumb2_stubs_end
 	.type Thumb2_stubs_end, %function
 Thumb2_stubs_end: