From 9f522d3c34d7f5451838c29182b4b8752ddf677b Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Wed, 19 Oct 2016 15:21:24 +0000 Subject: Fix some cases where data before a node entry is used --- thumb2copy.s | 60 ++++++++++++++++++++++++++++++------------------------------ 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/thumb2copy.s b/thumb2copy.s index 5ce2ac8..643c9f9 100644 --- a/thumb2copy.s +++ b/thumb2copy.s @@ -145,13 +145,13 @@ copy_lp2_: @ selectors: continue_after_selector_2: ldr r6,[r7] - orr r6,r6,#1 + @orr r6,r6,#1 @bic r6,r6,#1 @ TODO temporary fix tst r6,#2 beq not_in_hnf_2 in_hnf_2: - ldrh r4,[r6,#-2] + ldrh r4,[r6,#-3] cmp r4,#0 beq copy_arity_0_node2 @@ -342,7 +342,7 @@ already_copied_2: b copy_lp1 copy_record_2: - ldrh r12,[r6,#-2+2] + ldrh r12,[r6,#-3+2] sub r4,r4,#256 subs r4,#2 bhi copy_record_node2_3 @@ -605,7 +605,7 @@ not_in_hnf_2: tst r6,#1 beq already_copied_2 - ldr r4,[r6,#-4] + ldr r4,[r6,#-5] cmp r4,#0 ble copy_arity_0_node2_ @@ -665,7 +665,7 @@ copy_indirection_2: tst r6,#1 beq already_copied_2 - ldr r12,[r6,#-4] + ldr r12,[r6,#-5] cmp r12,#-2 beq skip_indirections_2 @@ -682,7 +682,7 @@ skip_indirections_2: tst r6,#1 beq update_indirection_list_2 - ldr r12,[r6,#-4] + ldr r12,[r6,#-5] cmp r12,#-2 beq skip_indirections_2 @@ -708,7 +708,7 @@ copy_selector_2: tst r3,#2 beq copy_arity_1_node2__ - ldrh r12,[r3,#-2] + ldrh r12,[r3,#-3] cmp r12,#2 bls copy_selector_2_ @@ -718,9 +718,9 @@ copy_selector_2: bne copy_arity_1_node2__ .ifdef PIC - add r11,r6,#-8+4 + add r11,r6,#-9+4 .endif - ldr r6,[r6,#-8] + ldr r6,[r6,#-9] lao r12,e__system__nind,8 .ifdef PIC ldrh r6,[r11,r6] @@ -757,9 +757,9 @@ copy_selector_2_2: copy_selector_2_: .ifdef PIC - add r11,r6,#-8+4 + add r11,r6,#-9+4 .endif - ldr r6,[r6,#-8] + ldr r6,[r6,#-9] ldr r3,[sp],#4 lao r12,e__system__nind,9 @@ -785,12 +785,12 @@ copy_record_selector_2: tst r4,#2 beq copy_arity_1_node2_ - ldrh r12,[r4,#-2] + ldrh r12,[r4,#-3] mov r11,#258/2 cmp r12,r11,lsl #1 bls copy_record_selector_2_ - ldrh r12,[r4,#-2+2] + ldrh r12,[r4,#-3+2] cmp r12,#2 bhs copy_selector_2__ @@ -833,9 +833,9 @@ copy_selector_2__: bne copy_arity_1_node2_ copy_record_selector_2_: .ifdef PIC - add r11,r6,#-8+4 + add r11,r6,#-9+4 .endif - ldr r4,[r6,#-8] + ldr r4,[r6,#-9] lao r12,e__system__nind,10 ldr r6,[r7,#4] otoa r12,e__system__nind,10 @@ -862,12 +862,12 @@ copy_strict_record_selector_2: tst r4,#2 beq copy_arity_1_node2_ - ldrh r12,[r4,#-2] + ldrh r12,[r4,#-3] mov r11,#258/2 cmp r12,r11,lsl #1 bls copy_strict_record_selector_2_ - ldrh r12,[r4,#-2+2] + ldrh r12,[r4,#-3+2] cmp r12,#2 blo copy_strict_record_selector_2_b @@ -914,9 +914,9 @@ copy_strict_record_selector_2_b: copy_strict_record_selector_2_: .ifdef PIC - add r11,r6,#-8+4 + add r11,r6,#-9+4 .endif - ldr r4,[r6,#-8] + ldr r4,[r6,#-9] str r3,[sp,#-4]! ldr r6,[r7,#4] @@ -1054,7 +1054,7 @@ copy_array_2: cmp r4,#0 beq copy_array_a2 - ldrh r3,[r4,#-2] + ldrh r3,[r4,#-3] cmp r3,#0 beq copy_strict_basic_array_2 @@ -1140,7 +1140,7 @@ copy_lp1: tst r4,#2 beq not_in_hnf_1 in_hnf_1: - ldrh r3,[r4,#-2] + ldrh r3,[r4,#-3] cmp r3,#0 beq copy_array_21 @@ -1166,7 +1166,7 @@ copy_record_21: subs r3,r3,#2 bhi copy_record_arguments_3 - ldrh r3,[r4,#-2+2] + ldrh r3,[r4,#-3+2] blo copy_record_arguments_1 add r2,r8,#8 @@ -1184,7 +1184,7 @@ copy_record_arguments_3: tst r12,#1 bne record_node_without_arguments_part - ldrh r7,[r4,#-2+2] + ldrh r7,[r4,#-3+2] add r6,r8,r3,lsl #2 add r2,r6,#3*4 @@ -1206,7 +1206,7 @@ record_node_without_arguments_part: b copy_lp2__lp1 not_in_hnf_1: - ldr r3,[r4,#-4] + ldr r3,[r4,#-5] cmp r3,#256 bgt copy_unboxed_closure_arguments @@ -1246,8 +1246,8 @@ copy_array_21: cmp r3,#0 beq copy_array_21_a - ldrh r4,[r3,#-2] - ldrh r3,[r3,#-2+2] + ldrh r4,[r3,#-3] + ldrh r3,[r3,#-3+2] sub r4,r4,#256 cmp r3,#0 beq copy_array_21_b @@ -1256,26 +1256,26 @@ copy_array_21: bne copy_array_21_ab copy_array_21_r_a: - ldr r3,[r8,#-8] + ldr r3,[r8,#-9] mul r3,r4,r3 cmp r3,#0 beq copy_lp1 b copy_lp2_lp1_all_pointers copy_array_21_a: - ldr r3,[r8,#-8] + ldr r3,[r8,#-9] cmp r3,#0 beq copy_lp1 b copy_lp2_lp1_all_pointers copy_array_21_b: - ldr r3,[r8,#-8] + ldr r3,[r8,#-9] mul r3,r4,r3 add r8,r8,r3,lsl #2 b copy_lp1 copy_array_21_ab: - ldr r12,[r8,#-8] + ldr r12,[r8,#-9] cmp r12,#0 beq copy_lp1 -- cgit v1.2.3