summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCamil Staps2016-10-19 15:21:24 +0000
committerCamil Staps2016-10-19 15:21:24 +0000
commit9f522d3c34d7f5451838c29182b4b8752ddf677b (patch)
tree476cee1bc9e4f1ce5055d2f079561d88a76144de
parentMaybe Fix for having the LSB on 1, by flipping its meaning in the garbage col... (diff)
Fix some cases where data before a node entry is used
-rw-r--r--thumb2copy.s60
1 files 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