summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCamil Staps2016-11-26 13:44:41 +0000
committerCamil Staps2016-11-26 13:44:41 +0000
commit355c7daa2cfc3a6b29f72376dcea6a3976a8695f (patch)
treec2cd8bf37d5b9e240b36c473bc6aac88cb74a101
parentWIP fixes for bit 0 in compacting collector (diff)
monster commit: replace all registers with aliases to ease optimisation
-rw-r--r--thumb2ap.s2998
-rw-r--r--thumb2compact.s1225
-rw-r--r--thumb2compact_rmark.s1145
-rw-r--r--thumb2compact_rmarkr.s1233
-rw-r--r--thumb2copy.s1283
-rw-r--r--thumb2divmod.s145
-rw-r--r--thumb2fileIO3.s907
-rw-r--r--thumb2mark.s2727
-rw-r--r--thumb2regs.s27
-rw-r--r--thumb2startup.s4121
10 files changed, 7914 insertions, 7897 deletions
diff --git a/thumb2ap.s b/thumb2ap.s
index 02afada..208d01d 100644
--- a/thumb2ap.s
+++ b/thumb2ap.s
@@ -100,977 +100,977 @@
.globl yet_args_needed_31
ap_32:
- ldr r11,[r8]
- mov r3,#32*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#32*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap32
ap_31:
- ldr r11,[r8]
- mov r3,#31*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#31*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap31
ap_30:
- ldr r11,[r8]
- mov r3,#30*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#30*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap30
ap_29:
- ldr r11,[r8]
- mov r3,#29*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#29*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap29
ap_28:
- ldr r11,[r8]
- mov r3,#28*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#28*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap28
ap_27:
- ldr r11,[r8]
- mov r3,#27*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#27*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap27
ap_26:
- ldr r11,[r8]
- mov r3,#26*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#26*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap26
ap_25:
- ldr r11,[r8]
- mov r3,#25*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#25*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap25
ap_24:
- ldr r11,[r8]
- mov r3,#24*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#24*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap24
ap_23:
- ldr r11,[r8]
- mov r3,#23*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#23*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap23
ap_22:
- ldr r11,[r8]
- mov r3,#22*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#22*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap22
ap_21:
- ldr r11,[r8]
- mov r3,#21*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#21*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap21
ap_20:
- ldr r11,[r8]
- mov r3,#20*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#20*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap20
ap_19:
- ldr r11,[r8]
- mov r3,#19*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#19*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap19
ap_18:
- ldr r11,[r8]
- mov r3,#18*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#18*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap18
ap_17:
- ldr r11,[r8]
- mov r3,#17*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#17*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap17
ap_16:
- ldr r11,[r8]
- mov r3,#16*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#16*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap16
ap_15:
- ldr r11,[r8]
- mov r3,#15*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#15*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap15
ap_14:
- ldr r11,[r8]
- mov r3,#14*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#14*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap14
ap_13:
- ldr r11,[r8]
- mov r3,#13*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#13*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap13
ap_12:
- ldr r11,[r8]
- mov r3,#12*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#12*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap12
ap_11:
- ldr r11,[r8]
- mov r3,#11*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#11*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap11
ap_10:
- ldr r11,[r8]
- mov r3,#10*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#10*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap10
ap_9:
- ldr r11,[r8]
- mov r3,#9*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#9*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap9
ap_8:
- ldr r11,[r8]
- mov r3,#8*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#8*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap8
ap_7:
- ldr r11,[r8]
- mov r3,#7*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#7*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap7
ap_6:
- ldr r11,[r8]
- mov r3,#6*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#6*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap6
ap_5:
- ldr r11,[r8]
- mov r3,#5*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#5*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap5
ap_4:
- ldr r11,[r8]
- mov r3,#4*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#4*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap4
ap_3:
- ldr r11,[r8]
- mov r3,#3*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#3*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap3
ap_2:
- ldr r11,[r8]
- mov r3,#2*8
- ldrh r12,[r11]
- cmp r12,r3
+ ldr ASTACK_3,[ASTACK_2]
+ mov BSTACK_1,#2*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
bne no_fast_ap2_
fast_ap_2_2_:
- add r3,r3,r11
- ldrh r4,[r11,#-2]
- ldr r2,[r3,#-6]
+ add BSTACK_1,BSTACK_1,ASTACK_3
+ ldrh BSTACK_0,[ASTACK_3,#-2]
+ ldr BSTACK_2,[BSTACK_1,#-6]
.ifdef PROFILE
- sub r2,r2,#16
+ sub BSTACK_2,BSTACK_2,#16
.else
- sub r2,r2,#8
+ sub BSTACK_2,BSTACK_2,#8
.endif
- cmp r4,#1
+ cmp BSTACK_0,#1
blo repl_args_0_2
beq repl_args_1
- cmp r4,#3
+ cmp BSTACK_0,#3
blo repl_args_2
- str r7,[r9,#4]
- str r6,[r9],#8
+ str ASTACK_1,[ASTACK_PTR,#4]
+ str ASTACK_0,[ASTACK_PTR],#8
- ldr r7,[r8,#8]
+ ldr ASTACK_1,[ASTACK_2,#8]
b fast_ap_
no_fast_ap2_:
- str r6,[r9],#4
- mov r6,r7
- mov r7,r8
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ mov ASTACK_1,ASTACK_2
b no_fast_ap2
fast_ap_2_2:
- mov r8,r7
- mov r7,r6
- ldr r6,[r9,#-4]!
+ mov ASTACK_2,ASTACK_1
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
b fast_ap_2_2_
fast_ap_2:
- mov r8,r7
- mov r7,r6
- ldr r6,[r9,#-4]!
+ mov ASTACK_2,ASTACK_1
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
fast_ap:
- add r3,r3,r11
- ldrh r4,[r11,#-2]
- ldr r2,[r3,#-6]
+ add BSTACK_1,BSTACK_1,ASTACK_3
+ ldrh BSTACK_0,[ASTACK_3,#-2]
+ ldr BSTACK_2,[BSTACK_1,#-6]
.ifdef PROFILE
- sub r2,r2,#16
+ sub BSTACK_2,BSTACK_2,#16
.else
- sub r2,r2,#8
+ sub BSTACK_2,BSTACK_2,#8
.endif
- cmp r4,#1
+ cmp BSTACK_0,#1
blo repl_args_0
beq repl_args_1
- cmp r4,#3
+ cmp BSTACK_0,#3
blo repl_args_2
- str r7,[r9,#4]
- str r6,[r9],#8
+ str ASTACK_1,[ASTACK_PTR,#4]
+ str ASTACK_0,[ASTACK_PTR],#8
- ldr r7,[r8,#8]
+ ldr ASTACK_1,[ASTACK_2,#8]
fast_ap_:
- ldr r8,[r8,#4]
+ ldr ASTACK_2,[ASTACK_2,#4]
beq repl_args_3
- cmp r4,#5
+ cmp BSTACK_0,#5
blo repl_args_4
beq repl_args_5
- cmp r4,#7
+ cmp BSTACK_0,#7
blo repl_args_6
- sub r4,r4,#2
+ sub BSTACK_0,BSTACK_0,#2
repl_args_7_:
- ldr r1,[r7,r4,lsl #2]
- str r1,[r9],#4
- sub r4,r4,#1
- cmp r4,#6-2
+ ldr BSTACK_3,[ASTACK_1,BSTACK_0,lsl #2]
+ str BSTACK_3,[ASTACK_PTR],#4
+ sub BSTACK_0,BSTACK_0,#1
+ cmp BSTACK_0,#6-2
bne repl_args_7_
repl_args_6:
- ldr r4,[r7,#16]
- str r4,[r9],#12
- ldr r4,[r7,#12]
- str r4,[r9,#-8]
- ldr r4,[r7,#8]
- str r4,[r9,#-4]
- ldr r6,[r7,#4]
- ldr r7,[r7]
- bx r2
+ ldr BSTACK_0,[ASTACK_1,#16]
+ str BSTACK_0,[ASTACK_PTR],#12
+ ldr BSTACK_0,[ASTACK_1,#12]
+ str BSTACK_0,[ASTACK_PTR,#-8]
+ ldr BSTACK_0,[ASTACK_1,#8]
+ str BSTACK_0,[ASTACK_PTR,#-4]
+ ldr ASTACK_0,[ASTACK_1,#4]
+ ldr ASTACK_1,[ASTACK_1]
+ bx BSTACK_2
repl_args_0:
- mov r8,r7
- mov r7,r6
- ldr r6,[r9,#-4]!
+ mov ASTACK_2,ASTACK_1
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
repl_args_0_2:
- bx r2
+ bx BSTACK_2
repl_args_1:
- ldr r8,[r8,#4]
- bx r2
+ ldr ASTACK_2,[ASTACK_2,#4]
+ bx BSTACK_2
repl_args_2:
- str r6,[r9],#4
- mov r6,r7
- ldr r7,[r8,#8]
- ldr r8,[r8,#4]
- bx r2
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ ldr ASTACK_1,[ASTACK_2,#8]
+ ldr ASTACK_2,[ASTACK_2,#4]
+ bx BSTACK_2
repl_args_3:
- ldr r6,[r7,#4]
- ldr r7,[r7]
- bx r2
+ ldr ASTACK_0,[ASTACK_1,#4]
+ ldr ASTACK_1,[ASTACK_1]
+ bx BSTACK_2
repl_args_4:
- ldr r4,[r7,#8]
- str r4,[r9],#4
- ldr r6,[r7,#4]
- ldr r7,[r7]
- bx r2
+ ldr BSTACK_0,[ASTACK_1,#8]
+ str BSTACK_0,[ASTACK_PTR],#4
+ ldr ASTACK_0,[ASTACK_1,#4]
+ ldr ASTACK_1,[ASTACK_1]
+ bx BSTACK_2
repl_args_5:
- ldr r4,[r7,#12]
- str r4,[r9],#8
- ldr r4,[r7,#8]
- str r4,[r9,#-4]
- ldr r6,[r7,#4]
- ldr r7,[r7]
- bx r2
+ ldr BSTACK_0,[ASTACK_1,#12]
+ str BSTACK_0,[ASTACK_PTR],#8
+ ldr BSTACK_0,[ASTACK_1,#8]
+ str BSTACK_0,[ASTACK_PTR,#-4]
+ ldr ASTACK_0,[ASTACK_1,#4]
+ ldr ASTACK_1,[ASTACK_1]
+ bx BSTACK_2
no_fast_ap32:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#31*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#31*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2
no_fast_ap31:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#30*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#30*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2
no_fast_ap30:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#29*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#29*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2
no_fast_ap29:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#28*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#28*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2
no_fast_ap28:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#27*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#27*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2
no_fast_ap27:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#26*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#26*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2
no_fast_ap26:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#25*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#25*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2
no_fast_ap25:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#24*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#24*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2
no_fast_ap24:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#23*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#23*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2
no_fast_ap23:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#22*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#22*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2
no_fast_ap22:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#21*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#21*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2
no_fast_ap21:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#20*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#20*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2
no_fast_ap20:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#19*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#19*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2
no_fast_ap19:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#18*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#18*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2
no_fast_ap18:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#17*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#17*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2
no_fast_ap17:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#16*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#16*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2
no_fast_ap16:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#15*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#15*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2
no_fast_ap15:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#14*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#14*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2
no_fast_ap14:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#13*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#13*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2
no_fast_ap13:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#12*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#12*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2
no_fast_ap12:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#11*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#11*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2
no_fast_ap11:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#10*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#10*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2
no_fast_ap10:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#9*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#9*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2
no_fast_ap9:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#8*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#8*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2
no_fast_ap8:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#7*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#7*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2
no_fast_ap7:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#6*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#6*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2
no_fast_ap6:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#5*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#5*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2
no_fast_ap5:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#4*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#4*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2
no_fast_ap4:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#3*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#3*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2
no_fast_ap3:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r11,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- mov r3,#2*8
- ldrh r12,[r11]
- cmp r12,r3
+ blx SCRATCH_REG
+ ldr ASTACK_3,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ mov BSTACK_1,#2*8
+ ldrh SCRATCH_REG,[ASTACK_3]
+ cmp SCRATCH_REG,BSTACK_1
beq fast_ap_2_2
no_fast_ap2:
- ldr r12,[r11,#2]
+ ldr SCRATCH_REG,[ASTACK_3,#2]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- ldr r8,[r6]
- mov r7,r6
- ldr r6,[r9,#-4]!
- ldr r12,[r8,#2]
- bx r12
+ blx SCRATCH_REG
+ ldr ASTACK_2,[ASTACK_0]
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+ ldr SCRATCH_REG,[ASTACK_2,#2]
+ bx SCRATCH_REG
.ltorg
add_empty_node_2:
- subs r5,r5,#3
+ subs HEAP_FREE,HEAP_FREE,#3
blo add_empty_node_2_gc
add_empty_node_2_gc_:
- lao r12,__cycle__in__spine,1
- mov r8,r7
- mov r7,r6
- mov r6,r10
- otoa r12,__cycle__in__spine,1
- str r12,[r10],#12
+ lao SCRATCH_REG,__cycle__in__spine,1
+ mov ASTACK_2,ASTACK_1
+ mov ASTACK_1,ASTACK_0
+ mov ASTACK_0,HEAP_PTR
+ otoa SCRATCH_REG,__cycle__in__spine,1
+ str SCRATCH_REG,[HEAP_PTR],#12
bx lr
add_empty_node_2_gc:
str lr,[sp,#-4]!
@@ -1079,13 +1079,13 @@ add_empty_node_2_gc:
b add_empty_node_2_gc_
add_empty_node_3:
- subs r5,r5,#3
+ subs HEAP_FREE,HEAP_FREE,#3
blo add_empty_node_3_gc
add_empty_node_3_gc_:
- lao r12,__cycle__in__spine,2
- str r10,[r9],#4
- otoa r12,__cycle__in__spine,2
- str r12,[r10],#12
+ lao SCRATCH_REG,__cycle__in__spine,2
+ str HEAP_PTR,[ASTACK_PTR],#4
+ otoa SCRATCH_REG,__cycle__in__spine,2
+ str SCRATCH_REG,[HEAP_PTR],#12
bx lr
add_empty_node_3_gc:
str lr,[sp,#-4]!
@@ -1094,16 +1094,16 @@ add_empty_node_3_gc:
b add_empty_node_3_gc_
add_empty_node_4:
- subs r5,r5,#3
+ subs HEAP_FREE,HEAP_FREE,#3
blo add_empty_node_4_gc
add_empty_node_4_gc_:
- ldr r11,[r9,#-4]
- str r11,[r9]
- str r10,[r9,#-4]
- lao r12,__cycle__in__spine,3
- add r9,r9,#4
- otoa r12,__cycle__in__spine,3
- str r12,[r10],#12
+ ldr ASTACK_3,[ASTACK_PTR,#-4]
+ str ASTACK_3,[ASTACK_PTR]
+ str HEAP_PTR,[ASTACK_PTR,#-4]
+ lao SCRATCH_REG,__cycle__in__spine,3
+ add ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,__cycle__in__spine,3
+ str SCRATCH_REG,[HEAP_PTR],#12
bx lr
add_empty_node_4_gc:
str lr,[sp,#-4]!
@@ -1112,18 +1112,18 @@ add_empty_node_4_gc:
b add_empty_node_4_gc_
add_empty_node_5:
- subs r5,r5,#3
+ subs HEAP_FREE,HEAP_FREE,#3
blo add_empty_node_5_gc
add_empty_node_5_gc_:
- ldr r11,[r9,#-4]
- str r11,[r9]
- ldr r11,[r9,#-8]
- str r11,[r9,#-4]
- str r10,[r9,#-8]
- lao r12,__cycle__in__spine,4
- add r9,r9,#4
- otoa r12,__cycle__in__spine,4
- str r12,[r10],#12
+ ldr ASTACK_3,[ASTACK_PTR,#-4]
+ str ASTACK_3,[ASTACK_PTR]
+ ldr ASTACK_3,[ASTACK_PTR,#-8]
+ str ASTACK_3,[ASTACK_PTR,#-4]
+ str HEAP_PTR,[ASTACK_PTR,#-8]
+ lao SCRATCH_REG,__cycle__in__spine,4
+ add ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,__cycle__in__spine,4
+ str SCRATCH_REG,[HEAP_PTR],#12
bx lr
add_empty_node_5_gc:
str lr,[sp,#-4]!
@@ -1132,302 +1132,302 @@ add_empty_node_5_gc:
b add_empty_node_5_gc_
add_empty_node_6:
- subs r5,r5,#3
+ subs HEAP_FREE,HEAP_FREE,#3
blo add_empty_node_6_gc
add_empty_node_6_gc_:
- ldr r11,[r9,#-4]
- str r11,[r9]
- ldr r11,[r9,#-8]
- str r11,[r9,#-4]
- ldr r11,[r9,#-12]
- str r11,[r9,#-8]
- str r10,[r9,#-12]
- lao r12,__cycle__in__spine,5
- add r9,r9,#4
- otoa r12,__cycle__in__spine,5
- str r12,[r10],#12
+ ldr ASTACK_3,[ASTACK_PTR,#-4]
+ str ASTACK_3,[ASTACK_PTR]
+ ldr ASTACK_3,[ASTACK_PTR,#-8]
+ str ASTACK_3,[ASTACK_PTR,#-4]
+ ldr ASTACK_3,[ASTACK_PTR,#-12]
+ str ASTACK_3,[ASTACK_PTR,#-8]
+ str HEAP_PTR,[ASTACK_PTR,#-12]
+ lao SCRATCH_REG,__cycle__in__spine,5
+ add ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,__cycle__in__spine,5
+ str SCRATCH_REG,[HEAP_PTR],#12
bx lr
add_empty_node_6_gc:
bl collect_3
b add_empty_node_6_gc_
add_empty_node_7:
- subs r5,r5,#3
+ subs HEAP_FREE,HEAP_FREE,#3
blo add_empty_node_7_gc
add_empty_node_7_gc_:
- ldr r11,[r9,#-4]
- str r11,[r9]
- ldr r11,[r9,#-8]
- str r11,[r9,#-4]
- ldr r11,[r9,#-12]
- str r11,[r9,#-8]
- ldr r11,[r9,#-16]
- str r11,[r9,#-12]
- str r10,[r9,#-16]
- lao r12,__cycle__in__spine,6
- add r9,r9,#4
- otoa r12,__cycle__in__spine,6
- str r12,[r10],#12
+ ldr ASTACK_3,[ASTACK_PTR,#-4]
+ str ASTACK_3,[ASTACK_PTR]
+ ldr ASTACK_3,[ASTACK_PTR,#-8]
+ str ASTACK_3,[ASTACK_PTR,#-4]
+ ldr ASTACK_3,[ASTACK_PTR,#-12]
+ str ASTACK_3,[ASTACK_PTR,#-8]
+ ldr ASTACK_3,[ASTACK_PTR,#-16]
+ str ASTACK_3,[ASTACK_PTR,#-12]
+ str HEAP_PTR,[ASTACK_PTR,#-16]
+ lao SCRATCH_REG,__cycle__in__spine,6
+ add ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,__cycle__in__spine,6
+ str SCRATCH_REG,[HEAP_PTR],#12
bx lr
add_empty_node_7_gc:
bl collect_3
b add_empty_node_7_gc_
add_empty_node_8:
- subs r5,r5,#3
+ subs HEAP_FREE,HEAP_FREE,#3
blo add_empty_node_8_gc
add_empty_node_8_gc_:
- ldr r11,[r9,#-4]
- str r11,[r9]
- ldr r11,[r9,#-8]
- str r11,[r9,#-4]
- ldr r11,[r9,#-12]
- str r11,[r9,#-8]
- ldr r11,[r9,#-16]
- str r11,[r9,#-12]
- ldr r11,[r9,#-20]
- str r11,[r9,#-16]
- str r10,[r9,#-20]
- lao r12,__cycle__in__spine,7
- add r9,r9,#4
- otoa r12,__cycle__in__spine,7
- str r12,[r10],#12
+ ldr ASTACK_3,[ASTACK_PTR,#-4]
+ str ASTACK_3,[ASTACK_PTR]
+ ldr ASTACK_3,[ASTACK_PTR,#-8]
+ str ASTACK_3,[ASTACK_PTR,#-4]
+ ldr ASTACK_3,[ASTACK_PTR,#-12]
+ str ASTACK_3,[ASTACK_PTR,#-8]
+ ldr ASTACK_3,[ASTACK_PTR,#-16]
+ str ASTACK_3,[ASTACK_PTR,#-12]
+ ldr ASTACK_3,[ASTACK_PTR,#-20]
+ str ASTACK_3,[ASTACK_PTR,#-16]
+ str HEAP_PTR,[ASTACK_PTR,#-20]
+ lao SCRATCH_REG,__cycle__in__spine,7
+ add ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,__cycle__in__spine,7
+ str SCRATCH_REG,[HEAP_PTR],#12
bx lr
add_empty_node_8_gc:
bl collect_3
b add_empty_node_8_gc_
add_empty_node_9:
- subs r5,r5,#3
+ subs HEAP_FREE,HEAP_FREE,#3
blo add_empty_node_9_gc
add_empty_node_9_gc_:
- ldr r11,[r9,#-4]
- str r11,[r9]
- ldr r11,[r9,#-8]
- str r11,[r9,#-4]
- ldr r11,[r9,#-12]
- str r11,[r9,#-8]
- ldr r11,[r9,#-16]
- str r11,[r9,#-12]
- ldr r11,[r9,#-20]
- str r11,[r9,#-16]
- ldr r11,[r9,#-24]
- str r11,[r9,#-20]
- str r10,[r9,#-24]
- lao r12,__cycle__in__spine,8
- add r9,r9,#4
- otoa r12,__cycle__in__spine,8
- str r12,[r10],#12
+ ldr ASTACK_3,[ASTACK_PTR,#-4]
+ str ASTACK_3,[ASTACK_PTR]
+ ldr ASTACK_3,[ASTACK_PTR,#-8]
+ str ASTACK_3,[ASTACK_PTR,#-4]
+ ldr ASTACK_3,[ASTACK_PTR,#-12]
+ str ASTACK_3,[ASTACK_PTR,#-8]
+ ldr ASTACK_3,[ASTACK_PTR,#-16]
+ str ASTACK_3,[ASTACK_PTR,#-12]
+ ldr ASTACK_3,[ASTACK_PTR,#-20]
+ str ASTACK_3,[ASTACK_PTR,#-16]
+ ldr ASTACK_3,[ASTACK_PTR,#-24]
+ str ASTACK_3,[ASTACK_PTR,#-20]
+ str HEAP_PTR,[ASTACK_PTR,#-24]
+ lao SCRATCH_REG,__cycle__in__spine,8
+ add ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,__cycle__in__spine,8
+ str SCRATCH_REG,[HEAP_PTR],#12
bx lr
add_empty_node_9_gc:
bl collect_3
b add_empty_node_9_gc_
add_empty_node_10:
- subs r5,r5,#3
+ subs HEAP_FREE,HEAP_FREE,#3
blo add_empty_node_10_gc
add_empty_node_10_gc_:
- ldr r11,[r9,#-4]
- str r11,[r9]
- ldr r11,[r9,#-8]
- str r11,[r9,#-4]
- ldr r11,[r9,#-12]
- str r11,[r9,#-8]
- ldr r11,[r9,#-16]
- str r11,[r9,#-12]
- ldr r11,[r9,#-20]
- str r11,[r9,#-16]
- ldr r11,[r9,#-24]
- str r11,[r9,#-20]
- ldr r11,[r9,#-28]
- str r11,[r9,#-24]
- str r10,[r9,#-28]
- lao r12,__cycle__in__spine,9
- add r9,r9,#4
- otoa r12,__cycle__in__spine,9
- str r12,[r10],#12
+ ldr ASTACK_3,[ASTACK_PTR,#-4]
+ str ASTACK_3,[ASTACK_PTR]
+ ldr ASTACK_3,[ASTACK_PTR,#-8]
+ str ASTACK_3,[ASTACK_PTR,#-4]
+ ldr ASTACK_3,[ASTACK_PTR,#-12]
+ str ASTACK_3,[ASTACK_PTR,#-8]
+ ldr ASTACK_3,[ASTACK_PTR,#-16]
+ str ASTACK_3,[ASTACK_PTR,#-12]
+ ldr ASTACK_3,[ASTACK_PTR,#-20]
+ str ASTACK_3,[ASTACK_PTR,#-16]
+ ldr ASTACK_3,[ASTACK_PTR,#-24]
+ str ASTACK_3,[ASTACK_PTR,#-20]
+ ldr ASTACK_3,[ASTACK_PTR,#-28]
+ str ASTACK_3,[ASTACK_PTR,#-24]
+ str HEAP_PTR,[ASTACK_PTR,#-28]
+ lao SCRATCH_REG,__cycle__in__spine,9
+ add ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,__cycle__in__spine,9
+ str SCRATCH_REG,[HEAP_PTR],#12
bx lr
add_empty_node_10_gc:
bl collect_3
b add_empty_node_10_gc_
add_empty_node_31:
- mov r3,#7
+ mov BSTACK_1,#7
b add_empty_node_11_
add_empty_node_27:
- mov r3,#6
+ mov BSTACK_1,#6
b add_empty_node_11_
add_empty_node_23:
- mov r3,#5
+ mov BSTACK_1,#5
b add_empty_node_11_
add_empty_node_19:
- mov r3,#4
+ mov BSTACK_1,#4
b add_empty_node_11_
add_empty_node_15:
- mov r3,#3
+ mov BSTACK_1,#3
b add_empty_node_11_
add_empty_node_11:
- mov r3,#2
+ mov BSTACK_1,#2
add_empty_node_11_:
- subs r5,r5,#3
+ subs HEAP_FREE,HEAP_FREE,#3
blo add_empty_node_11_gc
add_empty_node_11_gc_:
- mov r4,r9
+ mov BSTACK_0,ASTACK_PTR
add_empty_node_11_lp:
- ldr r11,[r4,#-4]
- str r11,[r4]
- ldr r11,[r4,#-8]
- str r11,[r4,#-4]
- ldr r11,[r4,#-12]
- str r11,[r4,#-8]
- ldr r11,[r4,#-16]
- str r11,[r4,#-12]
- sub r4,r4,#16
- subs r3,r3,#1
+ ldr ASTACK_3,[BSTACK_0,#-4]
+ str ASTACK_3,[BSTACK_0]
+ ldr ASTACK_3,[BSTACK_0,#-8]
+ str ASTACK_3,[BSTACK_0,#-4]
+ ldr ASTACK_3,[BSTACK_0,#-12]
+ str ASTACK_3,[BSTACK_0,#-8]
+ ldr ASTACK_3,[BSTACK_0,#-16]
+ str ASTACK_3,[BSTACK_0,#-12]
+ sub BSTACK_0,BSTACK_0,#16
+ subs BSTACK_1,BSTACK_1,#1
bne add_empty_node_11_lp
- str r10,[r4]
- lao r12,__cycle__in__spine,10
- add r9,r9,#4
- otoa r12,__cycle__in__spine,10
- str r12,[r10],#12
+ str HEAP_PTR,[BSTACK_0]
+ lao SCRATCH_REG,__cycle__in__spine,10
+ add ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,__cycle__in__spine,10
+ str SCRATCH_REG,[HEAP_PTR],#12
bx lr
add_empty_node_11_gc:
bl collect_3
b add_empty_node_11_gc_
add_empty_node_32:
- mov r3,#7
+ mov BSTACK_1,#7
b add_empty_node_12_
add_empty_node_28:
- mov r3,#6
+ mov BSTACK_1,#6
b add_empty_node_12_
add_empty_node_24:
- mov r3,#5
+ mov BSTACK_1,#5
b add_empty_node_12_
add_empty_node_20:
- mov r3,#4
+ mov BSTACK_1,#4
b add_empty_node_12_
add_empty_node_16:
- mov r3,#3
+ mov BSTACK_1,#3
b add_empty_node_12_
add_empty_node_12:
- mov r3,#2
+ mov BSTACK_1,#2
add_empty_node_12_:
- subs r5,r5,#3
+ subs HEAP_FREE,HEAP_FREE,#3
blo add_empty_node_12_gc
add_empty_node_12_gc_:
- mov r4,r9
- ldr r11,[r9,#-4]
- str r11,[r9]
+ mov BSTACK_0,ASTACK_PTR
+ ldr ASTACK_3,[ASTACK_PTR,#-4]
+ str ASTACK_3,[ASTACK_PTR]
add_empty_node_12_lp:
- ldr r11,[r4,#-8]
- str r11,[r4,#-4]
- ldr r11,[r4,#-12]
- str r11,[r4,#-8]
- ldr r11,[r4,#-16]
- str r11,[r4,#-12]
- ldr r11,[r4,#-20]
- str r11,[r4,#-16]!
- subs r3,r3,#1
+ ldr ASTACK_3,[BSTACK_0,#-8]
+ str ASTACK_3,[BSTACK_0,#-4]
+ ldr ASTACK_3,[BSTACK_0,#-12]
+ str ASTACK_3,[BSTACK_0,#-8]
+ ldr ASTACK_3,[BSTACK_0,#-16]
+ str ASTACK_3,[BSTACK_0,#-12]
+ ldr ASTACK_3,[BSTACK_0,#-20]
+ str ASTACK_3,[BSTACK_0,#-16]!
+ subs BSTACK_1,BSTACK_1,#1
bne add_empty_node_12_lp
- str r10,[r4,#-4]
- lao r12,__cycle__in__spine,11
- add r9,r9,#4
- otoa r12,__cycle__in__spine,11
- str r12,[r10],#12
+ str HEAP_PTR,[BSTACK_0,#-4]
+ lao SCRATCH_REG,__cycle__in__spine,11
+ add ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,__cycle__in__spine,11
+ str SCRATCH_REG,[HEAP_PTR],#12
bx lr
add_empty_node_12_gc:
bl collect_3
b add_empty_node_12_gc_
add_empty_node_29:
- mov r3,#6
+ mov BSTACK_1,#6
b add_empty_node_13_
add_empty_node_25:
- mov r3,#5
+ mov BSTACK_1,#5
b add_empty_node_13_
add_empty_node_21:
- mov r3,#4
+ mov BSTACK_1,#4
b add_empty_node_13_
add_empty_node_17:
- mov r3,#3
+ mov BSTACK_1,#3
b add_empty_node_13_
add_empty_node_13:
- mov r3,#2
+ mov BSTACK_1,#2
add_empty_node_13_:
- subs r5,r5,#3
+ subs HEAP_FREE,HEAP_FREE,#3
blo add_empty_node_13_gc
add_empty_node_13_gc_:
- mov r4,r9
- ldr r11,[r9,#-4]
- str r11,[r9]
- ldr r11,[r9,#-8]
- str r11,[r9,#-4]
+ mov BSTACK_0,ASTACK_PTR
+ ldr ASTACK_3,[ASTACK_PTR,#-4]
+ str ASTACK_3,[ASTACK_PTR]
+ ldr ASTACK_3,[ASTACK_PTR,#-8]
+ str ASTACK_3,[ASTACK_PTR,#-4]
add_empty_node_13_lp:
- ldr r11,[r4,#-12]
- str r11,[r4,#-8]
- ldr r11,[r4,#-16]
- str r11,[r4,#-12]
- ldr r11,[r4,#-20]
- str r11,[r4,#-16]
- ldr r11,[r4,#-24]
- str r11,[r4,#-20]
- sub r4,r4,#16
- subs r3,r3,#1
+ ldr ASTACK_3,[BSTACK_0,#-12]
+ str ASTACK_3,[BSTACK_0,#-8]
+ ldr ASTACK_3,[BSTACK_0,#-16]
+ str ASTACK_3,[BSTACK_0,#-12]
+ ldr ASTACK_3,[BSTACK_0,#-20]
+ str ASTACK_3,[BSTACK_0,#-16]
+ ldr ASTACK_3,[BSTACK_0,#-24]
+ str ASTACK_3,[BSTACK_0,#-20]
+ sub BSTACK_0,BSTACK_0,#16
+ subs BSTACK_1,BSTACK_1,#1
bne add_empty_node_13_lp
- str r10,[r4,#-8]
- lao r12,__cycle__in__spine,12
- add r9,r9,#4
- otoa r12,__cycle__in__spine,12
- str r12,[r10],#12
+ str HEAP_PTR,[BSTACK_0,#-8]
+ lao SCRATCH_REG,__cycle__in__spine,12
+ add ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,__cycle__in__spine,12
+ str SCRATCH_REG,[HEAP_PTR],#12
bx lr
add_empty_node_13_gc:
bl collect_3
b add_empty_node_13_gc_
add_empty_node_30:
- mov r3,#6
+ mov BSTACK_1,#6
b add_empty_node_14_
add_empty_node_26:
- mov r3,#5
+ mov BSTACK_1,#5
b add_empty_node_14_
add_empty_node_22:
- mov r3,#4
+ mov BSTACK_1,#4
b add_empty_node_14_
add_empty_node_18:
- mov r3,#3
+ mov BSTACK_1,#3
b add_empty_node_14_
add_empty_node_14:
- mov r3,#2
+ mov BSTACK_1,#2
b add_empty_node_14_
add_empty_node_14_:
- subs r5,r5,#3
+ subs HEAP_FREE,HEAP_FREE,#3
blo add_empty_node_14_gc
add_empty_node_14_gc:
- mov r4,r9
- ldr r11,[r9,#-4]
- str r11,[r9]
- ldr r11,[r9,#-8]
- str r11,[r9,#-4]
- ldr r11,[r9,#-12]
- str r11,[r9,#-8]
+ mov BSTACK_0,ASTACK_PTR
+ ldr ASTACK_3,[ASTACK_PTR,#-4]
+ str ASTACK_3,[ASTACK_PTR]
+ ldr ASTACK_3,[ASTACK_PTR,#-8]
+ str ASTACK_3,[ASTACK_PTR,#-4]
+ ldr ASTACK_3,[ASTACK_PTR,#-12]
+ str ASTACK_3,[ASTACK_PTR,#-8]
add_empty_node_14_lp:
- ldr r11,[r4,#-16]
- str r11,[r4,#-12]
- ldr r11,[r4,#-20]
- str r11,[r4,#-16]
- ldr r11,[r4,#-24]
- str r11,[r4,#-20]
- ldr r11,[r4,#-28]
- str r11,[r4,#-24]
- sub r4,r4,#16
- subs r3,r3,#1
+ ldr ASTACK_3,[BSTACK_0,#-16]
+ str ASTACK_3,[BSTACK_0,#-12]
+ ldr ASTACK_3,[BSTACK_0,#-20]
+ str ASTACK_3,[BSTACK_0,#-16]
+ ldr ASTACK_3,[BSTACK_0,#-24]
+ str ASTACK_3,[BSTACK_0,#-20]
+ ldr ASTACK_3,[BSTACK_0,#-28]
+ str ASTACK_3,[BSTACK_0,#-24]
+ sub BSTACK_0,BSTACK_0,#16
+ subs BSTACK_1,BSTACK_1,#1
bne add_empty_node_14_lp
- str r10,[r4,#-12]
- lao r12,__cycle__in__spine,13
- add r9,r9,#4
- otoa r12,__cycle__in__spine,13
- str r12,[r10],#12
+ str HEAP_PTR,[BSTACK_0,#-12]
+ lao SCRATCH_REG,__cycle__in__spine,13
+ add ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,__cycle__in__spine,13
+ str SCRATCH_REG,[HEAP_PTR],#12
bx lr
add_empty_node_14_gc_:
bl collect_3
@@ -1451,14 +1451,14 @@ add_empty_node_14_gc_:
.ltorg
yet_args_needed_0:
- subs r5,r5,#2
+ subs HEAP_FREE,HEAP_FREE,#2
blo yet_args_needed_0_gc
yet_args_needed_0_gc_r:
- str r6,[r10,#4]
- ldr r4,[r7]
- mov r6,r10
- add r4,r4,#8
- str r4,[r10],#8
+ str ASTACK_0,[HEAP_PTR,#4]
+ ldr BSTACK_0,[ASTACK_1]
+ mov ASTACK_0,HEAP_PTR
+ add BSTACK_0,BSTACK_0,#8
+ str BSTACK_0,[HEAP_PTR],#8
ldr pc,[sp],#4
yet_args_needed_0_gc:
@@ -1467,24 +1467,24 @@ yet_args_needed_0_gc:
.p2align 2
- subs r5,r5,#3
+ subs HEAP_FREE,HEAP_FREE,#3
b build_node_2
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_1:
- subs r5,r5,#3
+ subs HEAP_FREE,HEAP_FREE,#3
blo yet_args_needed_1_gc
yet_args_needed_1_gc_r:
- str r6,[r10,#8]
- ldr r4,[r7]
- mov r6,r10
- add r4,r4,#8
- str r4,[r10]
- ldr r3,[r7,#4]
- str r3,[r10,#4]
- add r10,r10,#12
+ str ASTACK_0,[HEAP_PTR,#8]
+ ldr BSTACK_0,[ASTACK_1]
+ mov ASTACK_0,HEAP_PTR
+ add BSTACK_0,BSTACK_0,#8
+ str BSTACK_0,[HEAP_PTR]
+ ldr BSTACK_1,[ASTACK_1,#4]
+ str BSTACK_1,[HEAP_PTR,#4]
+ add HEAP_PTR,HEAP_PTR,#12
ldr pc,[sp],#4
yet_args_needed_1_gc:
@@ -1494,11 +1494,11 @@ yet_args_needed_1_gc:
build_node_2:
blo build_node_2_gc
build_node_2_gc_r:
- str r3,[r10]
- str r7,[r10,#4]
- str r6,[r10,#8]
- mov r6,r10
- add r10,r10,#12
+ str BSTACK_1,[HEAP_PTR]
+ str ASTACK_1,[HEAP_PTR,#4]
+ str ASTACK_0,[HEAP_PTR,#8]
+ mov ASTACK_0,HEAP_PTR
+ add HEAP_PTR,HEAP_PTR,#12
ldr pc,[sp],#4
build_node_2_gc:
@@ -1507,27 +1507,27 @@ build_node_2_gc:
.p2align 2
- subs r5,r5,#5
+ subs HEAP_FREE,HEAP_FREE,#5
b build_node_3
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_2:
- subs r5,r5,#5
+ subs HEAP_FREE,HEAP_FREE,#5
blo gc_22
gc_r_22:
- ldr r4,[r7]
- str r6,[r10,#4]
- add r4,r4,#8
- ldr r8,[r7,#4]
- str r4,[r10,#8]
- add r6,r10,#8
- str r8,[r10,#12]
- ldr r8,[r7,#8]
- str r8,[r10]
- str r10,[r10,#16]
- add r10,r10,#20
+ ldr BSTACK_0,[ASTACK_1]
+ str ASTACK_0,[HEAP_PTR,#4]
+ add BSTACK_0,BSTACK_0,#8
+ ldr ASTACK_2,[ASTACK_1,#4]
+ str BSTACK_0,[HEAP_PTR,#8]
+ add ASTACK_0,HEAP_PTR,#8
+ str ASTACK_2,[HEAP_PTR,#12]
+ ldr ASTACK_2,[ASTACK_1,#8]
+ str ASTACK_2,[HEAP_PTR]
+ str HEAP_PTR,[HEAP_PTR,#16]
+ add HEAP_PTR,HEAP_PTR,#20
ldr pc,[sp],#4
gc_22: bl collect_2
@@ -1536,16 +1536,16 @@ gc_22: bl collect_2
build_node_3:
blo build_node_3_gc
build_node_3_gc_r:
- str r3,[r10]
- add r8,r10,#12
- str r7,[r10,#4]
- str r8,[r10,#8]
- str r6,[r10,#12]
- mov r6,r10
- ldr r8,[r9,#-4]
- subs r9,r9,#4
- str r8,[r10,#16]
- add r10,r10,#20
+ str BSTACK_1,[HEAP_PTR]
+ add ASTACK_2,HEAP_PTR,#12
+ str ASTACK_1,[HEAP_PTR,#4]
+ str ASTACK_2,[HEAP_PTR,#8]
+ str ASTACK_0,[HEAP_PTR,#12]
+ mov ASTACK_0,HEAP_PTR
+ ldr ASTACK_2,[ASTACK_PTR,#-4]
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ str ASTACK_2,[HEAP_PTR,#16]
+ add HEAP_PTR,HEAP_PTR,#20
ldr pc,[sp],#4
build_node_3_gc:
@@ -1554,30 +1554,30 @@ build_node_3_gc:
.p2align 2
- subs r5,r5,#6
+ subs HEAP_FREE,HEAP_FREE,#6
b build_node_4
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_3:
- subs r5,r5,#6
+ subs HEAP_FREE,HEAP_FREE,#6
blo gc_23
gc_r_23:
- ldr r4,[r7]
- str r6,[r10,#8]
- add r4,r4,#8
- ldr r8,[r7,#4]
- str r4,[r10,#12]
- ldr r7,[r7,#8]
- str r8,[r10,#16]
- ldr r8,[r7]
- str r10,[r10,#20]
- str r8,[r10]
- ldr r8,[r7,#4]
- add r6,r10,#12
- str r8,[r10,#4]
- add r10,r10,#24
+ ldr BSTACK_0,[ASTACK_1]
+ str ASTACK_0,[HEAP_PTR,#8]
+ add BSTACK_0,BSTACK_0,#8
+ ldr ASTACK_2,[ASTACK_1,#4]
+ str BSTACK_0,[HEAP_PTR,#12]
+ ldr ASTACK_1,[ASTACK_1,#8]
+ str ASTACK_2,[HEAP_PTR,#16]
+ ldr ASTACK_2,[ASTACK_1]
+ str HEAP_PTR,[HEAP_PTR,#20]
+ str ASTACK_2,[HEAP_PTR]
+ ldr ASTACK_2,[ASTACK_1,#4]
+ add ASTACK_0,HEAP_PTR,#12
+ str ASTACK_2,[HEAP_PTR,#4]
+ add HEAP_PTR,HEAP_PTR,#24
ldr pc,[sp],#4
gc_23: bl collect_2
@@ -1586,18 +1586,18 @@ gc_23: bl collect_2
build_node_4:
blo build_node_4_gc
build_node_4_gc_r:
- str r3,[r10]
- add r8,r10,#12
- str r7,[r10,#4]
- str r8,[r10,#8]
- str r6,[r10,#12]
- mov r6,r10
- ldr r8,[r9,#-4]
- str r8,[r10,#16]
- ldr r8,[r9,#-8]
- subs r9,r9,#8
- str r8,[r10,#20]
- add r10,r10,#24
+ str BSTACK_1,[HEAP_PTR]
+ add ASTACK_2,HEAP_PTR,#12
+ str ASTACK_1,[HEAP_PTR,#4]
+ str ASTACK_2,[HEAP_PTR,#8]
+ str ASTACK_0,[HEAP_PTR,#12]
+ mov ASTACK_0,HEAP_PTR
+ ldr ASTACK_2,[ASTACK_PTR,#-4]
+ str ASTACK_2,[HEAP_PTR,#16]
+ ldr ASTACK_2,[ASTACK_PTR,#-8]
+ subs ASTACK_PTR,ASTACK_PTR,#8
+ str ASTACK_2,[HEAP_PTR,#20]
+ add HEAP_PTR,HEAP_PTR,#24
ldr pc,[sp],#4
build_node_4_gc:
@@ -1606,32 +1606,32 @@ build_node_4_gc:
.p2align 2
- subs r5,r5,#7
+ subs HEAP_FREE,HEAP_FREE,#7
b build_node_5
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_4:
- subs r5,r5,#7
+ subs HEAP_FREE,HEAP_FREE,#7
blo gc_24
gc_r_24:
- ldr r4,[r7]
- str r6,[r10,#12]
- add r4,r4,#8
- ldr r8,[r7,#4]
- str r4,[r10,#16]
- ldr r7,[r7,#8]
- str r8,[r10,#20]
- ldr r8,[r7]
- str r10,[r10,#24]
- str r8,[r10]
- ldr r8,[r7,#4]
- add r6,r10,#16
- str r8,[r10,#4]
- ldr r8,[r7,#8]
- str r8,[r10,#8]
- add r10,r10,#28
+ ldr BSTACK_0,[ASTACK_1]
+ str ASTACK_0,[HEAP_PTR,#12]
+ add BSTACK_0,BSTACK_0,#8
+ ldr ASTACK_2,[ASTACK_1,#4]
+ str BSTACK_0,[HEAP_PTR,#16]
+ ldr ASTACK_1,[ASTACK_1,#8]
+ str ASTACK_2,[HEAP_PTR,#20]
+ ldr ASTACK_2,[ASTACK_1]
+ str HEAP_PTR,[HEAP_PTR,#24]
+ str ASTACK_2,[HEAP_PTR]
+ ldr ASTACK_2,[ASTACK_1,#4]
+ add ASTACK_0,HEAP_PTR,#16
+ str ASTACK_2,[HEAP_PTR,#4]
+ ldr ASTACK_2,[ASTACK_1,#8]
+ str ASTACK_2,[HEAP_PTR,#8]
+ add HEAP_PTR,HEAP_PTR,#28
ldr pc,[sp],#4
gc_24: bl collect_2
@@ -1640,20 +1640,20 @@ gc_24: bl collect_2
build_node_5:
blo build_node_5_gc
build_node_5_gc_r:
- str r3,[r10]
- add r8,r10,#12
- str r7,[r10,#4]
- str r8,[r10,#8]
- str r6,[r10,#12]
- mov r6,r10
- ldr r8,[r9,#-4]
- str r8,[r10,#16]
- ldr r8,[r9,#-8]
- str r8,[r10,#20]
- ldr r8,[r9,#-12]
- subs r9,r9,#12
- str r8,[r10,#24]
- add r10,r10,#28
+ str BSTACK_1,[HEAP_PTR]
+ add ASTACK_2,HEAP_PTR,#12
+ str ASTACK_1,[HEAP_PTR,#4]
+ str ASTACK_2,[HEAP_PTR,#8]
+ str ASTACK_0,[HEAP_PTR,#12]
+ mov ASTACK_0,HEAP_PTR
+ ldr ASTACK_2,[ASTACK_PTR,#-4]
+ str ASTACK_2,[HEAP_PTR,#16]
+ ldr ASTACK_2,[ASTACK_PTR,#-8]
+ str ASTACK_2,[HEAP_PTR,#20]
+ ldr ASTACK_2,[ASTACK_PTR,#-12]
+ subs ASTACK_PTR,ASTACK_PTR,#12
+ str ASTACK_2,[HEAP_PTR,#24]
+ add HEAP_PTR,HEAP_PTR,#28
ldr pc,[sp],#4
build_node_5_gc:
@@ -1662,369 +1662,369 @@ build_node_5_gc:
.p2align 2
- mov r4,#8
+ mov BSTACK_0,#8
b build_node_
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_5:
- ldr r3,[r7]
- mov r4,#8
+ ldr BSTACK_1,[ASTACK_1]
+ mov BSTACK_0,#8
b yet_args_needed_
.p2align 2
- mov r4,#9
+ mov BSTACK_0,#9
b build_node_
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_6:
- ldr r3,[r7]
- mov r4,#9
+ ldr BSTACK_1,[ASTACK_1]
+ mov BSTACK_0,#9
b yet_args_needed_
.p2align 2
- mov r4,#10
+ mov BSTACK_0,#10
b build_node_
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_7:
- ldr r3,[r7]
- mov r4,#10
+ ldr BSTACK_1,[ASTACK_1]
+ mov BSTACK_0,#10
b yet_args_needed_
.p2align 2
- mov r4,#11
+ mov BSTACK_0,#11
b build_node_
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_8:
- ldr r3,[r7]
- mov r4,#11
+ ldr BSTACK_1,[ASTACK_1]
+ mov BSTACK_0,#11
b yet_args_needed_
.p2align 2
- mov r4,#12
+ mov BSTACK_0,#12
b build_node_
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_9:
- ldr r3,[r7]
- mov r4,#12
+ ldr BSTACK_1,[ASTACK_1]
+ mov BSTACK_0,#12
b yet_args_needed_
.p2align 2
- mov r4,#13
+ mov BSTACK_0,#13
b build_node_
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_10:
- ldr r3,[r7]
- mov r4,#13
+ ldr BSTACK_1,[ASTACK_1]
+ mov BSTACK_0,#13
b yet_args_needed_
.p2align 2
- mov r4,#14
+ mov BSTACK_0,#14
b build_node_
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_11:
- ldr r3,[r7]
- mov r4,#14
+ ldr BSTACK_1,[ASTACK_1]
+ mov BSTACK_0,#14
b yet_args_needed_
.p2align 2
- mov r4,#15
+ mov BSTACK_0,#15
b build_node_
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_12:
- ldr r3,[r7]
- mov r4,#15
+ ldr BSTACK_1,[ASTACK_1]
+ mov BSTACK_0,#15
b yet_args_needed_
.p2align 2
- mov r4,#16
+ mov BSTACK_0,#16
b build_node_
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_13:
- ldr r3,[r7]
- mov r4,#16
+ ldr BSTACK_1,[ASTACK_1]
+ mov BSTACK_0,#16
b yet_args_needed_
.p2align 2
- mov r4,#17
+ mov BSTACK_0,#17
b build_node_
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_14:
- ldr r3,[r7]
- mov r4,#17
+ ldr BSTACK_1,[ASTACK_1]
+ mov BSTACK_0,#17
b yet_args_needed_
.p2align 2
- mov r4,#18
+ mov BSTACK_0,#18
b build_node_
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_15:
- ldr r3,[r7]
- mov r4,#18
+ ldr BSTACK_1,[ASTACK_1]
+ mov BSTACK_0,#18
b yet_args_needed_
.p2align 2
- mov r4,#19
+ mov BSTACK_0,#19
b build_node_
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_16:
- ldr r3,[r7]
- mov r4,#19
+ ldr BSTACK_1,[ASTACK_1]
+ mov BSTACK_0,#19
b yet_args_needed_
.p2align 2
- mov r4,#20
+ mov BSTACK_0,#20
b build_node_
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_17:
- ldr r3,[r7]
- mov r4,#20
+ ldr BSTACK_1,[ASTACK_1]
+ mov BSTACK_0,#20
b yet_args_needed_
.p2align 2
- mov r4,#21
+ mov BSTACK_0,#21
b build_node_
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_18:
- ldr r3,[r7]
- mov r4,#21
+ ldr BSTACK_1,[ASTACK_1]
+ mov BSTACK_0,#21
b yet_args_needed_
.p2align 2
- mov r4,#22
+ mov BSTACK_0,#22
b build_node_
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_19:
- ldr r3,[r7]
- mov r4,#22
+ ldr BSTACK_1,[ASTACK_1]
+ mov BSTACK_0,#22
b yet_args_needed_
.p2align 2
- mov r4,#23
+ mov BSTACK_0,#23
b build_node_
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_20:
- ldr r3,[r7]
- mov r4,#23
+ ldr BSTACK_1,[ASTACK_1]
+ mov BSTACK_0,#23
b yet_args_needed_
.p2align 2
- mov r4,#24
+ mov BSTACK_0,#24
b build_node_
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_21:
- ldr r3,[r7]
- mov r4,#24
+ ldr BSTACK_1,[ASTACK_1]
+ mov BSTACK_0,#24
b yet_args_needed_
.p2align 2
- mov r4,#25
+ mov BSTACK_0,#25
b build_node_
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_22:
- ldr r3,[r7]
- mov r4,#25
+ ldr BSTACK_1,[ASTACK_1]
+ mov BSTACK_0,#25
b yet_args_needed_
.p2align 2
- mov r4,#26
+ mov BSTACK_0,#26
b build_node_
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_23:
- ldr r3,[r7]
- mov r4,#26
+ ldr BSTACK_1,[ASTACK_1]
+ mov BSTACK_0,#26
b yet_args_needed_
.p2align 2
- mov r4,#27
+ mov BSTACK_0,#27
b build_node_
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_24:
- ldr r3,[r7]
- mov r4,#27
+ ldr BSTACK_1,[ASTACK_1]
+ mov BSTACK_0,#27
b yet_args_needed_
.p2align 2
- mov r4,#28
+ mov BSTACK_0,#28
b build_node_
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_25:
- ldr r3,[r7]
- mov r4,#28
+ ldr BSTACK_1,[ASTACK_1]
+ mov BSTACK_0,#28
b yet_args_needed_
.p2align 2
- mov r4,#29
+ mov BSTACK_0,#29
b build_node_
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_26:
- ldr r3,[r7]
- mov r4,#29
+ ldr BSTACK_1,[ASTACK_1]
+ mov BSTACK_0,#29
b yet_args_needed_
.p2align 2
- mov r4,#30
+ mov BSTACK_0,#30
b build_node_
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_27:
- ldr r3,[r7]
- mov r4,#30
+ ldr BSTACK_1,[ASTACK_1]
+ mov BSTACK_0,#30
b yet_args_needed_
.p2align 2
- mov r4,#31
+ mov BSTACK_0,#31
b build_node_
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_28:
- ldr r3,[r7]
- mov r4,#31
+ ldr BSTACK_1,[ASTACK_1]
+ mov BSTACK_0,#31
b yet_args_needed_
.p2align 2
- mov r4,#32
+ mov BSTACK_0,#32
b build_node_
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_29:
- ldr r3,[r7]
- mov r4,#32
+ ldr BSTACK_1,[ASTACK_1]
+ mov BSTACK_0,#32
b yet_args_needed_
.p2align 2
- mov r4,#33
+ mov BSTACK_0,#33
b build_node_
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_30:
- ldr r3,[r7]
- mov r4,#33
+ ldr BSTACK_1,[ASTACK_1]
+ mov BSTACK_0,#33
b yet_args_needed_
.p2align 2
- mov r4,#34
+ mov BSTACK_0,#34
b build_node_
.ifdef PROFILE
nop
nop
.endif
yet_args_needed_31:
- ldr r3,[r7]
- mov r4,#34
+ ldr BSTACK_1,[ASTACK_1]
+ mov BSTACK_0,#34
b yet_args_needed_
yet_args_needed:
@ for more than 4 arguments
- ldr r3,[r7]
- ldrh r4,[r3,#-2]
- add r4,r4,#3
+ ldr BSTACK_1,[ASTACK_1]
+ ldrh BSTACK_0,[BSTACK_1,#-2]
+ add BSTACK_0,BSTACK_0,#3
yet_args_needed_:
- subs r5,r5,r4
+ subs HEAP_FREE,HEAP_FREE,BSTACK_0
blo yet_args_needed_gc
yet_args_needed_gc_r:
- subs r4,r4,#3+1+4
- str r3,[sp,#-4]!
- str r6,[sp,#-4]!
- ldr r3,[r7,#4]
- ldr r7,[r7,#8]
- mov r8,r10
- ldr r6,[r7]
- str r6,[r10]
- ldr r6,[r7,#4]
- str r6,[r10,#4]
- ldr r6,[r7,#8]
- str r6,[r10,#8]
- add r7,r7,#12
- add r10,r10,#12
+ subs BSTACK_0,BSTACK_0,#3+1+4
+ str BSTACK_1,[sp,#-4]!
+ str ASTACK_0,[sp,#-4]!
+ ldr BSTACK_1,[ASTACK_1,#4]
+ ldr ASTACK_1,[ASTACK_1,#8]
+ mov ASTACK_2,HEAP_PTR
+ ldr ASTACK_0,[ASTACK_1]
+ str ASTACK_0,[HEAP_PTR]
+ ldr ASTACK_0,[ASTACK_1,#4]
+ str ASTACK_0,[HEAP_PTR,#4]
+ ldr ASTACK_0,[ASTACK_1,#8]
+ str ASTACK_0,[HEAP_PTR,#8]
+ add ASTACK_1,ASTACK_1,#12
+ add HEAP_PTR,HEAP_PTR,#12
yet_args_needed_cp_a:
- ldr r6,[r7],#4
- str r6,[r10],#4
- subs r4,r4,#1
+ ldr ASTACK_0,[ASTACK_1],#4
+ str ASTACK_0,[HEAP_PTR],#4
+ subs BSTACK_0,BSTACK_0,#1
bge yet_args_needed_cp_a
- ldr r6,[sp],#4
- str r6,[r10]
- ldr r4,[sp],#4
- add r4,r4,#8
- str r4,[r10,#4]
- add r6,r10,#4
- str r3,[r10,#8]
- str r8,[r10,#12]
- add r10,r10,#16
+ ldr ASTACK_0,[sp],#4
+ str ASTACK_0,[HEAP_PTR]
+ ldr BSTACK_0,[sp],#4
+ add BSTACK_0,BSTACK_0,#8
+ str BSTACK_0,[HEAP_PTR,#4]
+ add ASTACK_0,HEAP_PTR,#4
+ str BSTACK_1,[HEAP_PTR,#8]
+ str ASTACK_2,[HEAP_PTR,#12]
+ add HEAP_PTR,HEAP_PTR,#16
ldr pc,[sp],#4
yet_args_needed_gc:
@@ -2032,29 +2032,29 @@ yet_args_needed_gc:
b yet_args_needed_gc_r
build_node_:
- subs r5,r5,r4
+ subs HEAP_FREE,HEAP_FREE,BSTACK_0
blo build_node_gc
build_node_gc_r:
- str r3,[r10]
- add r8,r10,#12
- str r7,[r10,#4]
- str r8,[r10,#8]
- str r6,[r10,#12]
- mov r6,r10
- ldr r8,[r9,#-4]
- str r8,[r10,#16]
- ldr r8,[r9,#-8]
- str r8,[r10,#20]
- ldr r8,[r9,#-12]
- subs r9,r9,#12
- str r8,[r10,#24]
- add r10,r10,#28
-
- subs r4,r4,#5+2
+ str BSTACK_1,[HEAP_PTR]
+ add ASTACK_2,HEAP_PTR,#12
+ str ASTACK_1,[HEAP_PTR,#4]
+ str ASTACK_2,[HEAP_PTR,#8]
+ str ASTACK_0,[HEAP_PTR,#12]
+ mov ASTACK_0,HEAP_PTR
+ ldr ASTACK_2,[ASTACK_PTR,#-4]
+ str ASTACK_2,[HEAP_PTR,#16]
+ ldr ASTACK_2,[ASTACK_PTR,#-8]
+ str ASTACK_2,[HEAP_PTR,#20]
+ ldr ASTACK_2,[ASTACK_PTR,#-12]
+ subs ASTACK_PTR,ASTACK_PTR,#12
+ str ASTACK_2,[HEAP_PTR,#24]
+ add HEAP_PTR,HEAP_PTR,#28
+
+ subs BSTACK_0,BSTACK_0,#5+2
build_node_cp_a:
- ldr r8,[r9,#-4]!
- str r8,[r10],#4
- subs r4,r4,#1
+ ldr ASTACK_2,[ASTACK_PTR,#-4]!
+ str ASTACK_2,[HEAP_PTR],#4
+ subs BSTACK_0,BSTACK_0,#1
bne build_node_cp_a
ldr pc,[sp],#4
@@ -2098,684 +2098,684 @@ build_node_gc:
.globl e__system__nind
apupd_1:
- ldr r12,[sp]
- lao r8,apupd_upd,0
- otoa r8,apupd_upd,0
- cmp r12,r8
- lao r8,ap_1,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,0
+ otoa ASTACK_2,apupd_upd,0
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_1,0
bne ap_upd
- ldr r8,[r9,#-4]
- ldr r4,[r9,#-8]
- lao r12,e__system__nind,23
- subs r9,r9,#4
- otoa r12,e__system__nind,23
- str r12,[r8]
- str r4,[r8,#4]
+ ldr ASTACK_2,[ASTACK_PTR,#-4]
+ ldr BSTACK_0,[ASTACK_PTR,#-8]
+ lao SCRATCH_REG,e__system__nind,23
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,23
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
ap_1:
- ldr r8,[r7]
- ldr r12,[r8,#2]
- bx r12
+ ldr ASTACK_2,[ASTACK_1]
+ ldr SCRATCH_REG,[ASTACK_2,#2]
+ bx SCRATCH_REG
apupd_2:
- ldr r12,[sp]
- lao r8,apupd_upd,1
- otoa r8,apupd_upd,1
- cmp r12,r8
- lao r8,ap_2,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,1
+ otoa ASTACK_2,apupd_upd,1
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_2,0
bne ap_upd
- ldr r8,[r9,#-8]
- ldr r4,[r9,#-12]
- ldr r3,[r9,#-4]
- str r3,[r9,#-8]
- lao r12,e__system__nind,24
- subs r9,r9,#4
- otoa r12,e__system__nind,24
- str r12,[r8]
- str r4,[r8,#4]
+ ldr ASTACK_2,[ASTACK_PTR,#-8]
+ ldr BSTACK_0,[ASTACK_PTR,#-12]
+ ldr BSTACK_1,[ASTACK_PTR,#-4]
+ str BSTACK_1,[ASTACK_PTR,#-8]
+ lao SCRATCH_REG,e__system__nind,24
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,24
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_2
apupd_3:
- ldr r12,[sp]
- lao r8,apupd_upd,2
- otoa r8,apupd_upd,2
- cmp r12,r8
- lao r8,ap_3,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,2
+ otoa ASTACK_2,apupd_upd,2
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_3,0
bne ap_upd
- ldr r8,[r9,#-12]
- ldr r4,[r9,#-16]
- ldr r3,[r9,#-8]
- str r3,[r9,#-12]
- ldr r3,[r9,#-4]
- str r3,[r9,#-8]
- lao r12,e__system__nind,25
- subs r9,r9,#4
- otoa r12,e__system__nind,25
- str r12,[r8]
- str r4,[r8,#4]
+ ldr ASTACK_2,[ASTACK_PTR,#-12]
+ ldr BSTACK_0,[ASTACK_PTR,#-16]
+ ldr BSTACK_1,[ASTACK_PTR,#-8]
+ str BSTACK_1,[ASTACK_PTR,#-12]
+ ldr BSTACK_1,[ASTACK_PTR,#-4]
+ str BSTACK_1,[ASTACK_PTR,#-8]
+ lao SCRATCH_REG,e__system__nind,25
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,25
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_3
apupd_4:
- ldr r12,[sp]
- lao r8,apupd_upd,3
- otoa r8,apupd_upd,3
- cmp r12,r8
- lao r8,ap_4,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,3
+ otoa ASTACK_2,apupd_upd,3
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_4,0
bne ap_upd
- ldr r8,[r9,#-16]
- ldr r4,[r9,#-20]
- ldr r3,[r9,#-12]
- str r3,[r9,#-16]
- ldr r3,[r9,#-8]
- str r3,[r9,#-12]
- ldr r3,[r9,#-4]
- str r3,[r9,#-8]
- lao r12,e__system__nind,26
- subs r9,r9,#4
- otoa r12,e__system__nind,26
- str r12,[r8]
- str r4,[r8,#4]
+ ldr ASTACK_2,[ASTACK_PTR,#-16]
+ ldr BSTACK_0,[ASTACK_PTR,#-20]
+ ldr BSTACK_1,[ASTACK_PTR,#-12]
+ str BSTACK_1,[ASTACK_PTR,#-16]
+ ldr BSTACK_1,[ASTACK_PTR,#-8]
+ str BSTACK_1,[ASTACK_PTR,#-12]
+ ldr BSTACK_1,[ASTACK_PTR,#-4]
+ str BSTACK_1,[ASTACK_PTR,#-8]
+ lao SCRATCH_REG,e__system__nind,26
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,26
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_4
apupd_5:
- ldr r12,[sp]
- lao r8,apupd_upd,4
- otoa r8,apupd_upd,4
- cmp r12,r8
- lao r8,ap_5,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,4
+ otoa ASTACK_2,apupd_upd,4
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_5,0
bne ap_upd
- ldr r8,[r9,#-20]
- ldr r4,[r9,#-24]
- ldr r3,[r9,#-16]
- str r3,[r9,#-20]
- ldr r3,[r9,#-12]
- str r3,[r9,#-16]
- ldr r3,[r9,#-8]
- str r3,[r9,#-12]
- ldr r3,[r9,#-4]
- str r3,[r9,#-8]
- lao r12,e__system__nind,27
- subs r9,r9,#4
- otoa r12,e__system__nind,27
- str r12,[r8]
- str r4,[r8,#4]
+ ldr ASTACK_2,[ASTACK_PTR,#-20]
+ ldr BSTACK_0,[ASTACK_PTR,#-24]
+ ldr BSTACK_1,[ASTACK_PTR,#-16]
+ str BSTACK_1,[ASTACK_PTR,#-20]
+ ldr BSTACK_1,[ASTACK_PTR,#-12]
+ str BSTACK_1,[ASTACK_PTR,#-16]
+ ldr BSTACK_1,[ASTACK_PTR,#-8]
+ str BSTACK_1,[ASTACK_PTR,#-12]
+ ldr BSTACK_1,[ASTACK_PTR,#-4]
+ str BSTACK_1,[ASTACK_PTR,#-8]
+ lao SCRATCH_REG,e__system__nind,27
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,27
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_5
apupd_6:
- ldr r12,[sp]
- lao r8,apupd_upd,5
- otoa r8,apupd_upd,5
- cmp r12,r8
- lao r8,ap_6,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,5
+ otoa ASTACK_2,apupd_upd,5
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_6,0
bne ap_upd
- ldr r8,[r9,#-24]
- ldr r4,[r9,#-28]
- ldr r3,[r9,#-20]
- str r3,[r9,#-24]
- ldr r3,[r9,#-16]
- str r3,[r9,#-20]
- ldr r3,[r9,#-12]
- str r3,[r9,#-16]
- ldr r3,[r9,#-8]
- str r3,[r9,#-12]
- ldr r3,[r9,#-4]
- str r3,[r9,#-8]
- lao r12,e__system__nind,28
- subs r9,r9,#4
- otoa r12,e__system__nind,28
- str r12,[r8]
- str r4,[r8,#4]
+ ldr ASTACK_2,[ASTACK_PTR,#-24]
+ ldr BSTACK_0,[ASTACK_PTR,#-28]
+ ldr BSTACK_1,[ASTACK_PTR,#-20]
+ str BSTACK_1,[ASTACK_PTR,#-24]
+ ldr BSTACK_1,[ASTACK_PTR,#-16]
+ str BSTACK_1,[ASTACK_PTR,#-20]
+ ldr BSTACK_1,[ASTACK_PTR,#-12]
+ str BSTACK_1,[ASTACK_PTR,#-16]
+ ldr BSTACK_1,[ASTACK_PTR,#-8]
+ str BSTACK_1,[ASTACK_PTR,#-12]
+ ldr BSTACK_1,[ASTACK_PTR,#-4]
+ str BSTACK_1,[ASTACK_PTR,#-8]
+ lao SCRATCH_REG,e__system__nind,28
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,28
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_6
apupd_7:
- ldr r12,[sp]
- lao r8,apupd_upd,6
- otoa r8,apupd_upd,6
- cmp r12,r8
- lao r8,ap_7,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,6
+ otoa ASTACK_2,apupd_upd,6
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_7,0
bne ap_upd
- ldr r8,[r9,#-28]
- ldr r4,[r9,#-32]
+ ldr ASTACK_2,[ASTACK_PTR,#-28]
+ ldr BSTACK_0,[ASTACK_PTR,#-32]
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl move_8
- lao r12,e__system__nind,29
- subs r9,r9,#4
- otoa r12,e__system__nind,29
- str r12,[r8]
- str r4,[r8,#4]
+ lao SCRATCH_REG,e__system__nind,29
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,29
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_7
apupd_8:
- ldr r12,[sp]
- lao r8,apupd_upd,7
- otoa r8,apupd_upd,7
- cmp r12,r8
- lao r8,ap_8,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,7
+ otoa ASTACK_2,apupd_upd,7
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_8,0
bne ap_upd
- ldr r8,[r9,#-32]
- ldr r4,[r9,#-36]
+ ldr ASTACK_2,[ASTACK_PTR,#-32]
+ ldr BSTACK_0,[ASTACK_PTR,#-36]
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl move_9
- lao r12,e__system__nind,30
- subs r9,r9,#4
- otoa r12,e__system__nind,30
- str r12,[r8]
- str r4,[r8,#4]
+ lao SCRATCH_REG,e__system__nind,30
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,30
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_8
apupd_9:
- ldr r12,[sp]
- lao r8,apupd_upd,8
- otoa r8,apupd_upd,8
- cmp r12,r8
- lao r8,ap_9,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,8
+ otoa ASTACK_2,apupd_upd,8
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_9,0
bne ap_upd
- ldr r8,[r9,#-36]
- ldr r4,[r9,#-40]
+ ldr ASTACK_2,[ASTACK_PTR,#-36]
+ ldr BSTACK_0,[ASTACK_PTR,#-40]
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl move_10
- lao r12,e__system__nind,31
- subs r9,r9,#4
- otoa r12,e__system__nind,31
- str r12,[r8]
- str r4,[r8,#4]
+ lao SCRATCH_REG,e__system__nind,31
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,31
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_9
apupd_10:
- ldr r12,[sp]
- lao r8,apupd_upd,9
- otoa r8,apupd_upd,9
- cmp r12,r8
- lao r8,ap_10,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,9
+ otoa ASTACK_2,apupd_upd,9
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_10,0
bne ap_upd
- ldr r8,[r9,#-40]
- ldr r4,[r9,#-44]
+ ldr ASTACK_2,[ASTACK_PTR,#-40]
+ ldr BSTACK_0,[ASTACK_PTR,#-44]
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl move_11
- lao r12,e__system__nind,32
- subs r9,r9,#4
- otoa r12,e__system__nind,32
- str r12,[r8]
- str r4,[r8,#4]
+ lao SCRATCH_REG,e__system__nind,32
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,32
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_10
apupd_11:
- ldr r12,[sp]
- lao r8,apupd_upd,10
- otoa r8,apupd_upd,10
- cmp r12,r8
- lao r8,ap_11,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,10
+ otoa ASTACK_2,apupd_upd,10
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_11,0
bne ap_upd
- ldr r8,[r9,#-44]
- ldr r4,[r9,#-48]
+ ldr ASTACK_2,[ASTACK_PTR,#-44]
+ ldr BSTACK_0,[ASTACK_PTR,#-48]
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl move_12
- lao r12,e__system__nind,33
- subs r9,r9,#4
- otoa r12,e__system__nind,33
- str r12,[r8]
- str r4,[r8,#4]
+ lao SCRATCH_REG,e__system__nind,33
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,33
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_11
apupd_12:
- ldr r12,[sp]
- lao r8,apupd_upd,11
- otoa r8,apupd_upd,11
- cmp r12,r8
- lao r8,ap_12,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,11
+ otoa ASTACK_2,apupd_upd,11
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_12,0
bne ap_upd
- ldr r8,[r9,#-48]
- ldr r4,[r9,#-52]
+ ldr ASTACK_2,[ASTACK_PTR,#-48]
+ ldr BSTACK_0,[ASTACK_PTR,#-52]
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl move_13
- lao r12,e__system__nind,34
- subs r9,r9,#4
- otoa r12,e__system__nind,34
- str r12,[r8]
- str r4,[r8,#4]
+ lao SCRATCH_REG,e__system__nind,34
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,34
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_12
apupd_13:
- ldr r12,[sp]
- lao r8,apupd_upd,12
- otoa r8,apupd_upd,12
- cmp r12,r8
- lao r8,ap_13,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,12
+ otoa ASTACK_2,apupd_upd,12
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_13,0
bne ap_upd
- ldr r8,[r9,#-52]
- ldr r4,[r9,#-56]
+ ldr ASTACK_2,[ASTACK_PTR,#-52]
+ ldr BSTACK_0,[ASTACK_PTR,#-56]
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl move_14
- lao r12,e__system__nind,35
- subs r9,r9,#4
- otoa r12,e__system__nind,35
- str r12,[r8]
- str r4,[r8,#4]
+ lao SCRATCH_REG,e__system__nind,35
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,35
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_13
apupd_14:
- ldr r12,[sp]
- lao r8,apupd_upd,13
- otoa r8,apupd_upd,13
- cmp r12,r8
- lao r8,ap_14,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,13
+ otoa ASTACK_2,apupd_upd,13
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_14,0
bne ap_upd
- ldr r8,[r9,#-56]
- ldr r4,[r9,#-60]
+ ldr ASTACK_2,[ASTACK_PTR,#-56]
+ ldr BSTACK_0,[ASTACK_PTR,#-60]
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl move_15
- lao r12,e__system__nind,36
- subs r9,r9,#4
- otoa r12,e__system__nind,36
- str r12,[r8]
- str r4,[r8,#4]
+ lao SCRATCH_REG,e__system__nind,36
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,36
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_14
apupd_15:
- ldr r12,[sp]
- lao r8,apupd_upd,14
- otoa r8,apupd_upd,14
- cmp r12,r8
- lao r8,ap_15,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,14
+ otoa ASTACK_2,apupd_upd,14
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_15,0
bne ap_upd
- ldr r8,[r9,#-60]
- ldr r4,[r9,#-64]
+ ldr ASTACK_2,[ASTACK_PTR,#-60]
+ ldr BSTACK_0,[ASTACK_PTR,#-64]
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl move_16
- lao r12,e__system__nind,37
- subs r9,r9,#4
- otoa r12,e__system__nind,37
- str r12,[r8]
- str r4,[r8,#4]
+ lao SCRATCH_REG,e__system__nind,37
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,37
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_15
apupd_16:
- ldr r12,[sp]
- lao r8,apupd_upd,15
- otoa r8,apupd_upd,15
- cmp r12,r8
- lao r8,ap_16,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,15
+ otoa ASTACK_2,apupd_upd,15
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_16,0
bne ap_upd
- ldr r8,[r9,#-64]
- ldr r4,[r9,#-68]
+ ldr ASTACK_2,[ASTACK_PTR,#-64]
+ ldr BSTACK_0,[ASTACK_PTR,#-68]
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl move_17
- lao r12,e__system__nind,38
- subs r9,r9,#4
- otoa r12,e__system__nind,38
- str r12,[r8]
- str r4,[r8,#4]
+ lao SCRATCH_REG,e__system__nind,38
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,38
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_16
apupd_17:
- ldr r12,[sp]
- lao r8,apupd_upd,16
- otoa r8,apupd_upd,16
- cmp r12,r8
- lao r8,ap_17,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,16
+ otoa ASTACK_2,apupd_upd,16
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_17,0
bne ap_upd
- ldr r8,[r9,#-68]
- ldr r4,[r9,#-72]
+ ldr ASTACK_2,[ASTACK_PTR,#-68]
+ ldr BSTACK_0,[ASTACK_PTR,#-72]
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl move_18
- lao r12,e__system__nind,39
- subs r9,r9,#4
- otoa r12,e__system__nind,39
- str r12,[r8]
- str r4,[r8,#4]
+ lao SCRATCH_REG,e__system__nind,39
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,39
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_17
apupd_18:
- ldr r12,[sp]
- lao r8,apupd_upd,17
- otoa r8,apupd_upd,17
- cmp r12,r8
- lao r8,ap_18,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,17
+ otoa ASTACK_2,apupd_upd,17
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_18,0
bne ap_upd
- ldr r8,[r9,#-72]
- ldr r4,[r9,#-76]
+ ldr ASTACK_2,[ASTACK_PTR,#-72]
+ ldr BSTACK_0,[ASTACK_PTR,#-76]
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl move_19
- lao r12,e__system__nind,40
- subs r9,r9,#4
- otoa r12,e__system__nind,40
- str r12,[r8]
- str r4,[r8,#4]
+ lao SCRATCH_REG,e__system__nind,40
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,40
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_18
apupd_19:
- ldr r12,[sp]
- lao r8,apupd_upd,18
- otoa r8,apupd_upd,18
- cmp r12,r8
- lao r8,ap_19,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,18
+ otoa ASTACK_2,apupd_upd,18
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_19,0
bne ap_upd
- ldr r8,[r9,#-76]
- ldr r4,[r9,#-80]
+ ldr ASTACK_2,[ASTACK_PTR,#-76]
+ ldr BSTACK_0,[ASTACK_PTR,#-80]
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl move_20
- lao r12,e__system__nind,41
- subs r9,r9,#4
- otoa r12,e__system__nind,41
- str r12,[r8]
- str r4,[r8,#4]
+ lao SCRATCH_REG,e__system__nind,41
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,41
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_19
apupd_20:
- ldr r12,[sp]
- lao r8,apupd_upd,19
- otoa r8,apupd_upd,19
- cmp r12,r8
- lao r8,ap_20,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,19
+ otoa ASTACK_2,apupd_upd,19
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_20,0
bne ap_upd
- ldr r8,[r9,#-80]
- ldr r4,[r9,#-84]
+ ldr ASTACK_2,[ASTACK_PTR,#-80]
+ ldr BSTACK_0,[ASTACK_PTR,#-84]
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl move_21
- lao r12,e__system__nind,42
- subs r9,r9,#4
- otoa r12,e__system__nind,42
- str r12,[r8]
- str r4,[r8,#4]
+ lao SCRATCH_REG,e__system__nind,42
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,42
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_20
apupd_21:
- ldr r12,[sp]
- lao r8,apupd_upd,20
- otoa r8,apupd_upd,20
- cmp r12,r8
- lao r8,ap_21,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,20
+ otoa ASTACK_2,apupd_upd,20
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_21,0
bne ap_upd
- ldr r8,[r9,#-84]
- ldr r4,[r9,#-88]
+ ldr ASTACK_2,[ASTACK_PTR,#-84]
+ ldr BSTACK_0,[ASTACK_PTR,#-88]
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl move_22
- lao r12,e__system__nind,43
- subs r9,r9,#4
- otoa r12,e__system__nind,43
- str r12,[r8]
- str r4,[r8,#4]
+ lao SCRATCH_REG,e__system__nind,43
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,43
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_21
apupd_22:
- ldr r12,[sp]
- lao r8,apupd_upd,21
- otoa r8,apupd_upd,21
- cmp r12,r8
- lao r8,ap_22,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,21
+ otoa ASTACK_2,apupd_upd,21
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_22,0
bne ap_upd
- ldr r8,[r9,#-88]
- ldr r4,[r9,#-92]
+ ldr ASTACK_2,[ASTACK_PTR,#-88]
+ ldr BSTACK_0,[ASTACK_PTR,#-92]
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl move_23
- lao r12,e__system__nind,44
- subs r9,r9,#4
- otoa r12,e__system__nind,44
- str r12,[r8]
- str r4,[r8,#4]
+ lao SCRATCH_REG,e__system__nind,44
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,44
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_22
apupd_23:
- ldr r12,[sp]
- lao r8,apupd_upd,22
- otoa r8,apupd_upd,22
- cmp r12,r8
- lao r8,ap_23,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,22
+ otoa ASTACK_2,apupd_upd,22
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_23,0
bne ap_upd
- ldr r8,[r9,#-92]
- ldr r4,[r9,#-96]
+ ldr ASTACK_2,[ASTACK_PTR,#-92]
+ ldr BSTACK_0,[ASTACK_PTR,#-96]
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl move_24
- lao r12,e__system__nind,45
- subs r9,r9,#4
- otoa r12,e__system__nind,45
- str r12,[r8]
- str r4,[r8,#4]
+ lao SCRATCH_REG,e__system__nind,45
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,45
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_23
apupd_24:
- ldr r12,[sp]
- lao r8,apupd_upd,23
- otoa r8,apupd_upd,23
- cmp r12,r8
- lao r8,ap_24,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,23
+ otoa ASTACK_2,apupd_upd,23
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_24,0
bne ap_upd
- ldr r8,[r9,#-96]
- ldr r4,[r9,#-100]
+ ldr ASTACK_2,[ASTACK_PTR,#-96]
+ ldr BSTACK_0,[ASTACK_PTR,#-100]
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl move_25
- lao r12,e__system__nind,46
- subs r9,r9,#4
- otoa r12,e__system__nind,46
- str r12,[r8]
- str r4,[r8,#4]
+ lao SCRATCH_REG,e__system__nind,46
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,46
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_24
apupd_25:
- ldr r12,[sp]
- lao r8,apupd_upd,24
- otoa r8,apupd_upd,24
- cmp r12,r8
- lao r8,ap_25,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,24
+ otoa ASTACK_2,apupd_upd,24
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_25,0
bne ap_upd
- ldr r8,[r9,#-100]
- ldr r4,[r9,#-104]
+ ldr ASTACK_2,[ASTACK_PTR,#-100]
+ ldr BSTACK_0,[ASTACK_PTR,#-104]
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl move_26
- lao r12,e__system__nind,47
- subs r9,r9,#4
- otoa r12,e__system__nind,47
- str r12,[r8]
- str r4,[r8,#4]
+ lao SCRATCH_REG,e__system__nind,47
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,47
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_25
apupd_26:
- ldr r12,[sp]
- lao r8,apupd_upd,25
- otoa r8,apupd_upd,25
- cmp r12,r8
- lao r8,ap_26,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,25
+ otoa ASTACK_2,apupd_upd,25
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_26,0
bne ap_upd
- ldr r8,[r9,#-104]
- ldr r4,[r9,#-108]
+ ldr ASTACK_2,[ASTACK_PTR,#-104]
+ ldr BSTACK_0,[ASTACK_PTR,#-108]
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl move_27
- lao r12,e__system__nind,48
- subs r9,r9,#4
- otoa r12,e__system__nind,48
- str r12,[r8]
- str r4,[r8,#4]
+ lao SCRATCH_REG,e__system__nind,48
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,48
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_26
apupd_27:
- ldr r12,[sp]
- lao r8,apupd_upd,26
- otoa r8,apupd_upd,26
- cmp r12,r8
- lao r8,ap_27,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,26
+ otoa ASTACK_2,apupd_upd,26
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_27,0
bne ap_upd
- ldr r8,[r9,#-108]
- ldr r4,[r9,#-112]
+ ldr ASTACK_2,[ASTACK_PTR,#-108]
+ ldr BSTACK_0,[ASTACK_PTR,#-112]
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl move_28
- lao r12,e__system__nind,49
- subs r9,r9,#4
- otoa r12,e__system__nind,49
- str r12,[r8]
- str r4,[r8,#4]
+ lao SCRATCH_REG,e__system__nind,49
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,49
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_27
apupd_28:
- ldr r12,[sp]
- lao r8,apupd_upd,27
- otoa r8,apupd_upd,27
- cmp r12,r8
- lao r8,ap_28,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,27
+ otoa ASTACK_2,apupd_upd,27
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_28,0
bne ap_upd
- ldr r8,[r9,#-112]
- ldr r4,[r9,#-116]
+ ldr ASTACK_2,[ASTACK_PTR,#-112]
+ ldr BSTACK_0,[ASTACK_PTR,#-116]
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl move_29
- lao r12,e__system__nind,50
- subs r9,r9,#4
- otoa r12,e__system__nind,50
- str r12,[r8]
- str r4,[r8,#4]
+ lao SCRATCH_REG,e__system__nind,50
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,50
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_28
apupd_29:
- ldr r12,[sp]
- lao r8,apupd_upd,28
- otoa r8,apupd_upd,28
- cmp r12,r8
- lao r8,ap_29,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,28
+ otoa ASTACK_2,apupd_upd,28
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_29,0
bne ap_upd
- ldr r8,[r9,#-116]
- ldr r4,[r9,#-120]
+ ldr ASTACK_2,[ASTACK_PTR,#-116]
+ ldr BSTACK_0,[ASTACK_PTR,#-120]
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl move_30
- lao r12,e__system__nind,51
- subs r9,r9,#4
- otoa r12,e__system__nind,51
- str r12,[r8]
- str r4,[r8,#4]
+ lao SCRATCH_REG,e__system__nind,51
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,51
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_29
apupd_30:
- ldr r12,[sp]
- lao r8,apupd_upd,29
- otoa r8,apupd_upd,29
- cmp r12,r8
- lao r8,ap_30,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,29
+ otoa ASTACK_2,apupd_upd,29
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_30,0
bne ap_upd
- ldr r8,[r9,#-120]
- ldr r4,[r9,#-124]
+ ldr ASTACK_2,[ASTACK_PTR,#-120]
+ ldr BSTACK_0,[ASTACK_PTR,#-124]
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl move_31
- lao r12,e__system__nind,52
- subs r9,r9,#4
- otoa r12,e__system__nind,52
- str r12,[r8]
- str r4,[r8,#4]
+ lao SCRATCH_REG,e__system__nind,52
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,52
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_30
apupd_31:
- ldr r12,[sp]
- lao r8,apupd_upd,30
- otoa r8,apupd_upd,30
- cmp r12,r8
- lao r8,ap_31,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,30
+ otoa ASTACK_2,apupd_upd,30
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_31,0
bne ap_upd
- ldr r8,[r9,#-124]
- ldr r4,[r9,#-128]
+ ldr ASTACK_2,[ASTACK_PTR,#-124]
+ ldr BSTACK_0,[ASTACK_PTR,#-128]
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl move_32
- lao r12,e__system__nind,53
- subs r9,r9,#4
- otoa r12,e__system__nind,53
- str r12,[r8]
- str r4,[r8,#4]
+ lao SCRATCH_REG,e__system__nind,53
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,53
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_31
apupd_32:
- ldr r12,[sp]
- lao r8,apupd_upd,31
- otoa r8,apupd_upd,31
- cmp r12,r8
- lao r8,ap_32,0
+ ldr SCRATCH_REG,[sp]
+ lao ASTACK_2,apupd_upd,31
+ otoa ASTACK_2,apupd_upd,31
+ cmp SCRATCH_REG,ASTACK_2
+ lao ASTACK_2,ap_32,0
bne ap_upd
- ldr r8,[r9,#-128]
- ldr r4,[r9,#-132]
+ ldr ASTACK_2,[ASTACK_PTR,#-128]
+ ldr BSTACK_0,[ASTACK_PTR,#-132]
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl move_33
- lao r12,e__system__nind,54
- subs r9,r9,#4
- otoa r12,e__system__nind,54
- str r12,[r8]
- str r4,[r8,#4]
+ lao SCRATCH_REG,e__system__nind,54
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ otoa SCRATCH_REG,e__system__nind,54
+ str SCRATCH_REG,[ASTACK_2]
+ str BSTACK_0,[ASTACK_2,#4]
b ap_32
ap_upd:
@@ -2812,113 +2812,113 @@ ap_29__u0:
ap_30__u0:
ap_31__u0:
ap_32__u0:
- add r8,r8,pc
+ add ASTACK_2,ASTACK_2,pc
.endif
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r8
+ blx ASTACK_2
apupd_upd:
- ldr r7,[r9,#-4]
- subs r9,r9,#4
- ldr r4,[r6]
- str r4,[r7]
- ldr r4,[r6,#4]
- str r4,[r7,#4]
- ldr r4,[r6,#8]
- mov r6,r7
- str r4,[r7,#8]
+ ldr ASTACK_1,[ASTACK_PTR,#-4]
+ subs ASTACK_PTR,ASTACK_PTR,#4
+ ldr BSTACK_0,[ASTACK_0]
+ str BSTACK_0,[ASTACK_1]
+ ldr BSTACK_0,[ASTACK_0,#4]
+ str BSTACK_0,[ASTACK_1,#4]
+ ldr BSTACK_0,[ASTACK_0,#8]
+ mov ASTACK_0,ASTACK_1
+ str BSTACK_0,[ASTACK_1,#8]
ldr pc,[sp],#4
move_33:
- ldr r3,[r9,#-124]
- str r3,[r9,#-128]
+ ldr BSTACK_1,[ASTACK_PTR,#-124]
+ str BSTACK_1,[ASTACK_PTR,#-128]
move_32:
- ldr r3,[r9,#-120]
- str r3,[r9,#-124]
+ ldr BSTACK_1,[ASTACK_PTR,#-120]
+ str BSTACK_1,[ASTACK_PTR,#-124]
move_31:
- ldr r3,[r9,#-116]
- str r3,[r9,#-120]
+ ldr BSTACK_1,[ASTACK_PTR,#-116]
+ str BSTACK_1,[ASTACK_PTR,#-120]
move_30:
- ldr r3,[r9,#-112]
- str r3,[r9,#-116]
+ ldr BSTACK_1,[ASTACK_PTR,#-112]
+ str BSTACK_1,[ASTACK_PTR,#-116]
move_29:
- ldr r3,[r9,#-108]
- str r3,[r9,#-112]
+ ldr BSTACK_1,[ASTACK_PTR,#-108]
+ str BSTACK_1,[ASTACK_PTR,#-112]
move_28:
- ldr r3,[r9,#-104]
- str r3,[r9,#-108]
+ ldr BSTACK_1,[ASTACK_PTR,#-104]
+ str BSTACK_1,[ASTACK_PTR,#-108]
move_27:
- ldr r3,[r9,#-100]
- str r3,[r9,#-104]
+ ldr BSTACK_1,[ASTACK_PTR,#-100]
+ str BSTACK_1,[ASTACK_PTR,#-104]
move_26:
- ldr r3,[r9,#-96]
- str r3,[r9,#-100]
+ ldr BSTACK_1,[ASTACK_PTR,#-96]
+ str BSTACK_1,[ASTACK_PTR,#-100]
move_25:
- ldr r3,[r9,#-92]
- str r3,[r9,#-96]
+ ldr BSTACK_1,[ASTACK_PTR,#-92]
+ str BSTACK_1,[ASTACK_PTR,#-96]
move_24:
- ldr r3,[r9,#-88]
- str r3,[r9,#-92]
+ ldr BSTACK_1,[ASTACK_PTR,#-88]
+ str BSTACK_1,[ASTACK_PTR,#-92]
move_23:
- ldr r3,[r9,#-84]
- str r3,[r9,#-88]
+ ldr BSTACK_1,[ASTACK_PTR,#-84]
+ str BSTACK_1,[ASTACK_PTR,#-88]
move_22:
- ldr r3,[r9,#-80]
- str r3,[r9,#-84]
+ ldr BSTACK_1,[ASTACK_PTR,#-80]
+ str BSTACK_1,[ASTACK_PTR,#-84]
move_21:
- ldr r3,[r9,#-76]
- str r3,[r9,#-80]
+ ldr BSTACK_1,[ASTACK_PTR,#-76]
+ str BSTACK_1,[ASTACK_PTR,#-80]
move_20:
- ldr r3,[r9,#-72]
- str r3,[r9,#-76]
+ ldr BSTACK_1,[ASTACK_PTR,#-72]
+ str BSTACK_1,[ASTACK_PTR,#-76]
move_19:
- ldr r3,[r9,#-68]
- str r3,[r9,#-72]
+ ldr BSTACK_1,[ASTACK_PTR,#-68]
+ str BSTACK_1,[ASTACK_PTR,#-72]
move_18:
- ldr r3,[r9,#-64]
- str r3,[r9,#-68]
+ ldr BSTACK_1,[ASTACK_PTR,#-64]
+ str BSTACK_1,[ASTACK_PTR,#-68]
move_17:
- ldr r3,[r9,#-60]
- str r3,[r9,#-64]
+ ldr BSTACK_1,[ASTACK_PTR,#-60]
+ str BSTACK_1,[ASTACK_PTR,#-64]
move_16:
- ldr r3,[r9,#-56]
- str r3,[r9,#-60]
+ ldr BSTACK_1,[ASTACK_PTR,#-56]
+ str BSTACK_1,[ASTACK_PTR,#-60]
move_15:
- ldr r3,[r9,#-52]
- str r3,[r9,#-56]
+ ldr BSTACK_1,[ASTACK_PTR,#-52]
+ str BSTACK_1,[ASTACK_PTR,#-56]
move_14:
- ldr r3,[r9,#-48]
- str r3,[r9,#-52]
+ ldr BSTACK_1,[ASTACK_PTR,#-48]
+ str BSTACK_1,[ASTACK_PTR,#-52]
move_13:
- ldr r3,[r9,#-44]
- str r3,[r9,#-48]
+ ldr BSTACK_1,[ASTACK_PTR,#-44]
+ str BSTACK_1,[ASTACK_PTR,#-48]
move_12:
- ldr r3,[r9,#-40]
- str r3,[r9,#-44]
+ ldr BSTACK_1,[ASTACK_PTR,#-40]
+ str BSTACK_1,[ASTACK_PTR,#-44]
move_11:
- ldr r3,[r9,#-36]
- str r3,[r9,#-40]
+ ldr BSTACK_1,[ASTACK_PTR,#-36]
+ str BSTACK_1,[ASTACK_PTR,#-40]
move_10:
- ldr r3,[r9,#-32]
- str r3,[r9,#-36]
+ ldr BSTACK_1,[ASTACK_PTR,#-32]
+ str BSTACK_1,[ASTACK_PTR,#-36]
move_9:
- ldr r3,[r9,#-28]
- str r3,[r9,#-32]
+ ldr BSTACK_1,[ASTACK_PTR,#-28]
+ str BSTACK_1,[ASTACK_PTR,#-32]
move_8:
- ldr r3,[r9,#-24]
- str r3,[r9,#-28]
+ ldr BSTACK_1,[ASTACK_PTR,#-24]
+ str BSTACK_1,[ASTACK_PTR,#-28]
move_7:
- ldr r3,[r9,#-20]
- str r3,[r9,#-24]
- ldr r3,[r9,#-16]
- str r3,[r9,#-20]
- ldr r3,[r9,#-12]
- str r3,[r9,#-16]
- ldr r3,[r9,#-8]
- str r3,[r9,#-12]
- ldr r3,[r9,#-4]
- str r3,[r9,#-8]
+ ldr BSTACK_1,[ASTACK_PTR,#-20]
+ str BSTACK_1,[ASTACK_PTR,#-24]
+ ldr BSTACK_1,[ASTACK_PTR,#-16]
+ str BSTACK_1,[ASTACK_PTR,#-20]
+ ldr BSTACK_1,[ASTACK_PTR,#-12]
+ str BSTACK_1,[ASTACK_PTR,#-16]
+ ldr BSTACK_1,[ASTACK_PTR,#-8]
+ str BSTACK_1,[ASTACK_PTR,#-12]
+ ldr BSTACK_1,[ASTACK_PTR,#-4]
+ str BSTACK_1,[ASTACK_PTR,#-8]
ldr pc,[sp],#4
.ifdef PIC
diff --git a/thumb2compact.s b/thumb2compact.s
index 33a214e..314bb68 100644
--- a/thumb2compact.s
+++ b/thumb2compact.s
@@ -1,50 +1,49 @@
-
COMPACT_MARK_WITH_STACK = 1
NO_BIT_INSTRUCTIONS = 1
@ mark used nodes and pointers in argument parts and link backward pointers
- lao r12,heap_size_33,10
- ldo r4,r12,heap_size_33,10
- lsl r4,r4,#5
- lao r12,heap_size_32_33,1
- sto r4,r12,heap_size_32_33,1
-@ heap_size_32_33 in r2
- mov r2,r4
+ lao SCRATCH_REG,heap_size_33,10
+ ldo BSTACK_0,SCRATCH_REG,heap_size_33,10
+ lsl BSTACK_0,BSTACK_0,#5
+ lao SCRATCH_REG,heap_size_32_33,1
+ sto BSTACK_0,SCRATCH_REG,heap_size_32_33,1
+@ heap_size_32_33 in BSTACK_2
+ mov BSTACK_2,BSTACK_0
- lao r12,heap_p3,11
- ldo r11,r12,heap_p3,11
-@ heap_p3 in r11
+ lao SCRATCH_REG,heap_p3,11
+ ldo ASTACK_3,SCRATCH_REG,heap_p3,11
+@ heap_p3 in ASTACK_3
.if COMPACT_MARK_WITH_STACK
- add r9,sp,#-8000
+ add ASTACK_PTR,sp,#-8000
.endif
- lao r12,caf_list,2
- ldo r4,r12,caf_list,2
+ lao SCRATCH_REG,caf_list,2
+ ldo BSTACK_0,SCRATCH_REG,caf_list,2
.if COMPACT_MARK_WITH_STACK
- lao r12,end_stack,1
- sto r9,r12,end_stack,1
-@ end_stack in r0
- mov r0,r9
+ lao SCRATCH_REG,end_stack,1
+ sto ASTACK_PTR,SCRATCH_REG,end_stack,1
+@ end_stack in BSTACK_4
+ mov BSTACK_4,ASTACK_PTR
.endif
- cmp r4,#0
+ cmp BSTACK_0,#0
beq end_mark_cafs
.thumb_func
mark_cafs_lp:
- ldr r12,[r4,#-4]
- str r12,[sp,#-4]!
+ ldr SCRATCH_REG,[BSTACK_0,#-4]
+ str SCRATCH_REG,[sp,#-4]!
.if COMPACT_MARK_WITH_STACK
- add r9,r4,#4
- ldr r4,[r4]
- add r6,r9,r4,lsl #2
+ add ASTACK_PTR,BSTACK_0,#4
+ ldr BSTACK_0,[BSTACK_0]
+ add ASTACK_0,ASTACK_PTR,BSTACK_0,lsl #2
.else
- add r8,r4,#4
- ldr r4,[r4]
- add r6,r8,r4,lsl #2
+ add ASTACK_2,BSTACK_0,#4
+ ldr BSTACK_0,[BSTACK_0]
+ add ASTACK_0,ASTACK_2,BSTACK_0,lsl #2
.endif
- lao r12,end_vector,13
- sto r6,r12,end_vector,13
+ lao SCRATCH_REG,end_vector,13
+ sto ASTACK_0,SCRATCH_REG,end_vector,13
.align
add lr,pc,#9
@@ -55,24 +54,24 @@ mark_cafs_lp:
bl mark_stack_nodes
.endif
- ldr r4,[sp],#4
- tst r4,r4
+ ldr BSTACK_0,[sp],#4
+ tst BSTACK_0,BSTACK_0
bne mark_cafs_lp
.thumb_func
end_mark_cafs:
.if COMPACT_MARK_WITH_STACK
- lao r12,stack_p,6
- ldo r9,r12,stack_p,6
+ lao SCRATCH_REG,stack_p,6
+ ldo ASTACK_PTR,SCRATCH_REG,stack_p,6
.else
- lao r12,stack_p,6
- ldo r8,r12,stack_p,6
+ lao SCRATCH_REG,stack_p,6
+ ldo ASTACK_2,SCRATCH_REG,stack_p,6
.endif
- lao r12,stack_top,4
- ldo r6,r12,stack_top,4
- lao r12,end_vector,14
- sto r6,r12,end_vector,14
+ lao SCRATCH_REG,stack_top,4
+ ldo ASTACK_0,SCRATCH_REG,stack_top,4
+ lao SCRATCH_REG,end_vector,14
+ sto ASTACK_0,SCRATCH_REG,end_vector,14
.align
add lr,pc,#9
str lr,[sp,#-4]!
@@ -119,113 +118,113 @@ end_mark_cafs:
compact_heap:
.ifdef FINALIZERS
- lao r6,finalizer_list,3
- lao r7,free_finalizer_list,5
- otoa r6,finalizer_list,3
- otoa r7,free_finalizer_list,5
+ lao ASTACK_0,finalizer_list,3
+ lao ASTACK_1,free_finalizer_list,5
+ otoa ASTACK_0,finalizer_list,3
+ otoa ASTACK_1,free_finalizer_list,5
- ldr r8,[r6]
+ ldr ASTACK_2,[ASTACK_0]
determine_free_finalizers_after_compact1:
- laol r12,__Nil-4,__Nil_o_m4,5
- otoa r12,__Nil_o_m4,5
- cmp r8,r12
+ laol SCRATCH_REG,__Nil-4,__Nil_o_m4,5
+ otoa SCRATCH_REG,__Nil_o_m4,5
+ cmp ASTACK_2,SCRATCH_REG
beq end_finalizers_after_compact1
- lao r12,heap_p3,12
- ldo r4,r12,heap_p3,12
- sub r4,r8,r4
- lsr r3,r4,#7
- and r4,r4,#31*4
- lsr r9,r4,#2
- mov r12,#1
- lsl r9,r12,r9
-
- ldr r12,[r10,r3,lsl #2]
- tst r9,r12
+ lao SCRATCH_REG,heap_p3,12
+ ldo BSTACK_0,SCRATCH_REG,heap_p3,12
+ sub BSTACK_0,ASTACK_2,BSTACK_0
+ lsr BSTACK_1,BSTACK_0,#7
+ and BSTACK_0,BSTACK_0,#31*4
+ lsr ASTACK_PTR,BSTACK_0,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_PTR,SCRATCH_REG,ASTACK_PTR
+
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ tst ASTACK_PTR,SCRATCH_REG
beq finalizer_not_used_after_compact1
- ldr r4,[r8]
- mov r9,r8
+ ldr BSTACK_0,[ASTACK_2]
+ mov ASTACK_PTR,ASTACK_2
b finalizer_find_descriptor
.thumb_func
finalizer_find_descriptor_lp:
- and r4,r4,#-4
- mov r9,r4
- ldr r4,[r4]
+ and BSTACK_0,BSTACK_0,#-4
+ mov ASTACK_PTR,BSTACK_0
+ ldr BSTACK_0,[BSTACK_0]
.thumb_func
finalizer_find_descriptor:
- tst r4,#1
+ tst BSTACK_0,#1
bne finalizer_find_descriptor_lp
- laol r12,e____system__kFinalizerGCTemp+2,e____system__kFinalizerGCTemp_o_2,0
- sto r12,r9,e____system__kFinalizerGCTemp_o_2,0
+ laol SCRATCH_REG,e____system__kFinalizerGCTemp+2,e____system__kFinalizerGCTemp_o_2,0
+ sto SCRATCH_REG,ASTACK_PTR,e____system__kFinalizerGCTemp_o_2,0
- cmp r8,r6
+ cmp ASTACK_2,ASTACK_0
bhi finalizer_no_reverse
- ldr r4,[r8]
- add r9,r6,#1
- str r9,[r8]
- str r4,[r6]
+ ldr BSTACK_0,[ASTACK_2]
+ add ASTACK_PTR,ASTACK_0,#1
+ str ASTACK_PTR,[ASTACK_2]
+ str BSTACK_0,[ASTACK_0]
.thumb_func
finalizer_no_reverse:
- add r6,r8,#4
- ldr r8,[r8,#4]
+ add ASTACK_0,ASTACK_2,#4
+ ldr ASTACK_2,[ASTACK_2,#4]
b determine_free_finalizers_after_compact1
finalizer_not_used_after_compact1:
- laol r12,e____system__kFinalizerGCTemp+2,e____system__kFinalizerGCTemp_o_2,1
- sto r12,r8,e____system__kFinalizerGCTemp_o_2,1
+ laol SCRATCH_REG,e____system__kFinalizerGCTemp+2,e____system__kFinalizerGCTemp_o_2,1
+ sto SCRATCH_REG,ASTACK_2,e____system__kFinalizerGCTemp_o_2,1
- str r8,[r7]
- add r7,r8,#4
+ str ASTACK_2,[ASTACK_1]
+ add ASTACK_1,ASTACK_2,#4
- ldr r8,[r8,#4]
- str r8,[r6]
+ ldr ASTACK_2,[ASTACK_2,#4]
+ str ASTACK_2,[ASTACK_0]
b determine_free_finalizers_after_compact1
end_finalizers_after_compact1:
- str r8,[r7]
+ str ASTACK_2,[ASTACK_1]
- lao r12,finalizer_list,4
- ldo r6,r12,finalizer_list,4
- laol r12,__Nil-4,__Nil_o_m4,6
- otoa r12,__Nil_o_m4,6
- cmp r6,r12
+ lao SCRATCH_REG,finalizer_list,4
+ ldo ASTACK_0,SCRATCH_REG,finalizer_list,4
+ laol SCRATCH_REG,__Nil-4,__Nil_o_m4,6
+ otoa SCRATCH_REG,__Nil_o_m4,6
+ cmp ASTACK_0,SCRATCH_REG
beq finalizer_list_empty
- tst r6,#3
+ tst ASTACK_0,#3
bne finalizer_list_already_reversed
- ldr r4,[r6]
- laol r12,finalizer_list+1,finalizer_list_o_1,0
- otoa r12,finalizer_list_o_1,0
- str r12,[r6]
- lao r12,finalizer_list,5
- sto r4,r12,finalizer_list,5
+ ldr BSTACK_0,[ASTACK_0]
+ laol SCRATCH_REG,finalizer_list+1,finalizer_list_o_1,0
+ otoa SCRATCH_REG,finalizer_list_o_1,0
+ str SCRATCH_REG,[ASTACK_0]
+ lao SCRATCH_REG,finalizer_list,5
+ sto BSTACK_0,SCRATCH_REG,finalizer_list,5
.thumb_func
finalizer_list_already_reversed:
.thumb_func
finalizer_list_empty:
.if COMPACT_MARK_WITH_STACK
- lao r9,free_finalizer_list,6
- otoa r9,free_finalizer_list,6
- ldr r6,[r9]
+ lao ASTACK_PTR,free_finalizer_list,6
+ otoa ASTACK_PTR,free_finalizer_list,6
+ ldr ASTACK_0,[ASTACK_PTR]
.else
- lao r8,free_finalizer_list,6
- otoa r8,free_finalizer_list,6
- ldr r6,[r8]
+ lao ASTACK_2,free_finalizer_list,6
+ otoa ASTACK_2,free_finalizer_list,6
+ ldr ASTACK_0,[ASTACK_2]
.endif
- laol r12,__Nil-4,__Nil_o_m4,7
- otoa r12,__Nil_o_m4,7
- cmp r6,r12
+ laol SCRATCH_REG,__Nil-4,__Nil_o_m4,7
+ otoa SCRATCH_REG,__Nil_o_m4,7
+ cmp ASTACK_0,SCRATCH_REG
beq free_finalizer_list_empty
- laol r6,free_finalizer_list+4,free_finalizer_list_o_4,0
- otoa r6,free_finalizer_list_o_4,0
- lao r12,end_vector,15
- sto r6,r12,end_vector,15
+ laol ASTACK_0,free_finalizer_list+4,free_finalizer_list_o_4,0
+ otoa ASTACK_0,free_finalizer_list_o_4,0
+ lao SCRATCH_REG,end_vector,15
+ sto ASTACK_0,SCRATCH_REG,end_vector,15
.if COMPACT_MARK_WITH_STACK
.align
add lr,pc,#9
@@ -241,40 +240,40 @@ finalizer_list_empty:
free_finalizer_list_empty:
.endif
- lao r12,heap_size_33,11
- ldo r4,r12,heap_size_33,11
- mov r3,r4
- lsl r3,r3,#5
-
- lao r12,heap_p3,13
- ldo r12,r12,heap_p3,13
- add r3,r3,r12
-
- lao r12,end_heap_p3,0
- sto r3,r12,end_heap_p3,0
-@ end_heap_p3 in r0
- mov r0,r3
-
- add r4,r4,#3
- lsr r4,r4,#2
-@ vector_counter in r2
- mov r2,r4
-
- lao r12,heap_vector,9
- ldo r6,r12,heap_vector,9
-@ vector_p in r1
- mov r1,r6
-
- mov r12,#-4
- rsb r3,r6,r12
- lao r12,neg_heap_vector_plus_4,0
- sto r3,r12,neg_heap_vector_plus_4,0
-
- lao r12,heap_p3,14
- ldo r10,r12,heap_p3,14
- mov r9,#0
-@ heap_p3 in r11
- mov r11,r10
+ lao SCRATCH_REG,heap_size_33,11
+ ldo BSTACK_0,SCRATCH_REG,heap_size_33,11
+ mov BSTACK_1,BSTACK_0
+ lsl BSTACK_1,BSTACK_1,#5
+
+ lao SCRATCH_REG,heap_p3,13
+ ldo SCRATCH_REG,SCRATCH_REG,heap_p3,13
+ add BSTACK_1,BSTACK_1,SCRATCH_REG
+
+ lao SCRATCH_REG,end_heap_p3,0
+ sto BSTACK_1,SCRATCH_REG,end_heap_p3,0
+@ end_heap_p3 in BSTACK_4
+ mov BSTACK_4,BSTACK_1
+
+ add BSTACK_0,BSTACK_0,#3
+ lsr BSTACK_0,BSTACK_0,#2
+@ vector_counter in BSTACK_2
+ mov BSTACK_2,BSTACK_0
+
+ lao SCRATCH_REG,heap_vector,9
+ ldo ASTACK_0,SCRATCH_REG,heap_vector,9
+@ vector_p in BSTACK_3
+ mov BSTACK_3,ASTACK_0
+
+ mov SCRATCH_REG,#-4
+ rsb BSTACK_1,ASTACK_0,SCRATCH_REG
+ lao SCRATCH_REG,neg_heap_vector_plus_4,0
+ sto BSTACK_1,SCRATCH_REG,neg_heap_vector_plus_4,0
+
+ lao SCRATCH_REG,heap_p3,14
+ ldo HEAP_PTR,SCRATCH_REG,heap_p3,14
+ mov ASTACK_PTR,#0
+@ heap_p3 in ASTACK_3
+ mov ASTACK_3,HEAP_PTR
b skip_zeros
@ d0,a0,a2: free
@@ -282,930 +281,930 @@ free_finalizer_list_empty:
find_non_zero_long:
.thumb_func
skip_zeros:
- subs r2,r2,#1
+ subs BSTACK_2,BSTACK_2,#1
bcc end_copy
- ldr r9,[r1],#4
- cmp r9,#0
+ ldr ASTACK_PTR,[BSTACK_3],#4
+ cmp ASTACK_PTR,#0
beq skip_zeros
@ a2: free
.thumb_func
end_skip_zeros:
- lao r12,neg_heap_vector_plus_4,1
- ldo r8,r12,neg_heap_vector_plus_4,1
- add r8,r8,r1
+ lao SCRATCH_REG,neg_heap_vector_plus_4,1
+ ldo ASTACK_2,SCRATCH_REG,neg_heap_vector_plus_4,1
+ add ASTACK_2,ASTACK_2,BSTACK_3
- add r8,r11,r8,lsl #5
+ add ASTACK_2,ASTACK_3,ASTACK_2,lsl #5
.thumb_func
bsf_and_copy_nodes:
- neg r12,r9
- and r12,r12,r9
- clz r3,r12
- rsb r3,r3,#31
+ neg SCRATCH_REG,ASTACK_PTR
+ and SCRATCH_REG,SCRATCH_REG,ASTACK_PTR
+ clz BSTACK_1,SCRATCH_REG
+ rsb BSTACK_1,BSTACK_1,#31
.thumb_func
copy_nodes:
- ldr r4,[r8,r3,lsl #2]
+ ldr BSTACK_0,[ASTACK_2,BSTACK_1,lsl #2]
- bic r9,r9,r12
+ bic ASTACK_PTR,ASTACK_PTR,SCRATCH_REG
- add r12,r8,#4
- add r6,r12,r3,lsl #2
- sub r4,r4,#1
+ add SCRATCH_REG,ASTACK_2,#4
+ add ASTACK_0,SCRATCH_REG,BSTACK_1,lsl #2
+ sub BSTACK_0,BSTACK_0,#1
- tst r4,#2
+ tst BSTACK_0,#2
beq begin_update_list_2
- ldr r3,[r4,#-10]
- subs r4,r4,#2
+ ldr BSTACK_1,[BSTACK_0,#-10]
+ subs BSTACK_0,BSTACK_0,#2
- tst r3,#1
+ tst BSTACK_1,#1
beq end_list_2
find_descriptor_2:
- and r3,r3,#-4
- ldr r3,[r3]
- tst r3,#1
+ and BSTACK_1,BSTACK_1,#-4
+ ldr BSTACK_1,[BSTACK_1]
+ tst BSTACK_1,#1
bne find_descriptor_2
end_list_2:
- mov r7,r3
- ldrh r3,[r3,#-2]
- cmp r3,#256
+ mov ASTACK_1,BSTACK_1
+ ldrh BSTACK_1,[BSTACK_1,#-2]
+ cmp BSTACK_1,#256
blo no_record_arguments
- ldrh r7,[r7,#-2+2]
- subs r7,r7,#2
+ ldrh ASTACK_1,[ASTACK_1,#-2+2]
+ subs ASTACK_1,ASTACK_1,#2
bhs copy_record_arguments_aa
- sub r3,r3,#256
- sub r3,r3,#3
+ sub BSTACK_1,BSTACK_1,#256
+ sub BSTACK_1,BSTACK_1,#3
.thumb_func
copy_record_arguments_all_b:
- str r3,[sp,#-4]!
- lao r12,heap_vector,10
- ldo r3,r12,heap_vector,10
+ str BSTACK_1,[sp,#-4]!
+ lao SCRATCH_REG,heap_vector,10
+ ldo BSTACK_1,SCRATCH_REG,heap_vector,10
update_up_list_1r:
- mov r7,r4
- sub r4,r4,r11
+ mov ASTACK_1,BSTACK_0
+ sub BSTACK_0,BSTACK_0,ASTACK_3
- str r6,[sp,#-4]!
+ str ASTACK_0,[sp,#-4]!
- and r6,r4,#31*4
- lsr r4,r4,#7
- lsr r6,r6,#2
- mov r12,#1
- lsl r6,r12,r6
+ and ASTACK_0,BSTACK_0,#31*4
+ lsr BSTACK_0,BSTACK_0,#7
+ lsr ASTACK_0,ASTACK_0,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_0,SCRATCH_REG,ASTACK_0
- ldr r4,[r3,r4,lsl #2]
+ ldr BSTACK_0,[BSTACK_1,BSTACK_0,lsl #2]
- ands r4,r4,r6
+ ands BSTACK_0,BSTACK_0,ASTACK_0
- ldr r6,[sp],#4
+ ldr ASTACK_0,[sp],#4
beq copy_argument_part_1r
- ldr r4,[r7]
- str r10,[r7]
- subs r4,r4,#3
+ ldr BSTACK_0,[ASTACK_1]
+ str HEAP_PTR,[ASTACK_1]
+ subs BSTACK_0,BSTACK_0,#3
b update_up_list_1r
copy_argument_part_1r:
- ldr r4,[r7]
- str r10,[r7]
- str r4,[r10],#4
+ ldr BSTACK_0,[ASTACK_1]
+ str HEAP_PTR,[ASTACK_1]
+ str BSTACK_0,[HEAP_PTR],#4
- sub r4,r6,r11
- lsr r4,r4,#2
+ sub BSTACK_0,ASTACK_0,ASTACK_3
+ lsr BSTACK_0,BSTACK_0,#2
- mov r3,r4
- and r3,r3,#31
- cmp r3,#1
+ mov BSTACK_1,BSTACK_0
+ and BSTACK_1,BSTACK_1,#31
+ cmp BSTACK_1,#1
bhs bit_in_this_word
- sub r2,r2,#1
- ldr r9,[r1],#4
+ sub BSTACK_2,BSTACK_2,#1
+ ldr ASTACK_PTR,[BSTACK_3],#4
- lao r12,neg_heap_vector_plus_4,2
- ldo r8,r12,neg_heap_vector_plus_4,2
- add r8,r8,r1
- add r8,r11,r8,lsl #5
+ lao SCRATCH_REG,neg_heap_vector_plus_4,2
+ ldo ASTACK_2,SCRATCH_REG,neg_heap_vector_plus_4,2
+ add ASTACK_2,ASTACK_2,BSTACK_3
+ add ASTACK_2,ASTACK_3,ASTACK_2,lsl #5
.thumb_func
bit_in_this_word:
- mov r12,#1
- lsl r12,r12,r3
- bic r9,r9,r12
+ mov SCRATCH_REG,#1
+ lsl SCRATCH_REG,SCRATCH_REG,BSTACK_1
+ bic ASTACK_PTR,ASTACK_PTR,SCRATCH_REG
- ldr r3,[sp],#4
+ ldr BSTACK_1,[sp],#4
.thumb_func
copy_b_record_argument_part_arguments:
- ldr r4,[r6],#4
- str r4,[r10],#4
- subs r3,r3,#1
+ ldr BSTACK_0,[ASTACK_0],#4
+ str BSTACK_0,[HEAP_PTR],#4
+ subs BSTACK_1,BSTACK_1,#1
bcs copy_b_record_argument_part_arguments
- cmp r9,#0
+ cmp ASTACK_PTR,#0
bne bsf_and_copy_nodes
b find_non_zero_long
.thumb_func
copy_record_arguments_aa:
- mov r12,#(256+2)/2
- sub r3,r3,r7
- sub r3,r3,r12,lsl #1
+ mov SCRATCH_REG,#(256+2)/2
+ sub BSTACK_1,BSTACK_1,ASTACK_1
+ sub BSTACK_1,BSTACK_1,SCRATCH_REG,lsl #1
- str r3,[sp,#-4]!
- str r7,[sp,#-4]!
+ str BSTACK_1,[sp,#-4]!
+ str ASTACK_1,[sp,#-4]!
update_up_list_2r:
- mov r7,r4
- ldr r4,[r7]
- and r3,r4,#3
- subs r3,r3,#3
+ mov ASTACK_1,BSTACK_0
+ ldr BSTACK_0,[ASTACK_1]
+ and BSTACK_1,BSTACK_0,#3
+ subs BSTACK_1,BSTACK_1,#3
bne copy_argument_part_2r
- str r10,[r7]
- subs r4,r4,#3
+ str HEAP_PTR,[ASTACK_1]
+ subs BSTACK_0,BSTACK_0,#3
b update_up_list_2r
copy_argument_part_2r:
- str r10,[r7]
- cmp r4,r6
+ str HEAP_PTR,[ASTACK_1]
+ cmp BSTACK_0,ASTACK_0
blo copy_record_argument_2
.ifdef SHARE_CHAR_INT
- cmp r4,r0
+ cmp BSTACK_0,BSTACK_4
bhs copy_record_argument_2
.endif
- mov r7,r4
- ldr r4,[r7]
- add r3,r10,#1
- str r3,[r7]
+ mov ASTACK_1,BSTACK_0
+ ldr BSTACK_0,[ASTACK_1]
+ add BSTACK_1,HEAP_PTR,#1
+ str BSTACK_1,[ASTACK_1]
copy_record_argument_2:
- str r4,[r10],#4
+ str BSTACK_0,[HEAP_PTR],#4
- ldr r3,[sp],#4
- subs r3,r3,#1
+ ldr BSTACK_1,[sp],#4
+ subs BSTACK_1,BSTACK_1,#1
bcc no_pointers_in_record
.thumb_func
copy_record_pointers:
- ldr r7,[r6],#4
- cmp r7,r6
+ ldr ASTACK_1,[ASTACK_0],#4
+ cmp ASTACK_1,ASTACK_0
blo copy_record_pointers_2
.ifdef SHARE_CHAR_INT
- cmp r7,r0
+ cmp ASTACK_1,BSTACK_4
bhs copy_record_pointers_2
.endif
- ldr r4,[r7]
- add r10,r10,#1
- str r10,[r7]
- subs r10,r10,#1
- mov r7,r4
+ ldr BSTACK_0,[ASTACK_1]
+ add HEAP_PTR,HEAP_PTR,#1
+ str HEAP_PTR,[ASTACK_1]
+ subs HEAP_PTR,HEAP_PTR,#1
+ mov ASTACK_1,BSTACK_0
copy_record_pointers_2:
- str r7,[r10],#4
- subs r3,r3,#1
+ str ASTACK_1,[HEAP_PTR],#4
+ subs BSTACK_1,BSTACK_1,#1
bcs copy_record_pointers
.thumb_func
no_pointers_in_record:
- ldr r3,[sp],#4
+ ldr BSTACK_1,[sp],#4
- subs r3,r3,#1
+ subs BSTACK_1,BSTACK_1,#1
bcc no_non_pointers_in_record
.thumb_func
copy_non_pointers_in_record:
- ldr r4,[r6],#4
- str r4,[r10],#4
- subs r3,r3,#1
+ ldr BSTACK_0,[ASTACK_0],#4
+ str BSTACK_0,[HEAP_PTR],#4
+ subs BSTACK_1,BSTACK_1,#1
bcs copy_non_pointers_in_record
.thumb_func
no_non_pointers_in_record:
- cmp r9,#0
+ cmp ASTACK_PTR,#0
bne bsf_and_copy_nodes
b find_non_zero_long
.thumb_func
no_record_arguments:
- subs r3,r3,#3
+ subs BSTACK_1,BSTACK_1,#3
update_up_list_2:
- mov r7,r4
- ldr r4,[r4]
- add r4,r4,#1
- str r10,[r7]
- tst r4,#3
+ mov ASTACK_1,BSTACK_0
+ ldr BSTACK_0,[BSTACK_0]
+ add BSTACK_0,BSTACK_0,#1
+ str HEAP_PTR,[ASTACK_1]
+ tst BSTACK_0,#3
bne copy_argument_part_2
- subs r4,r4,#4
+ subs BSTACK_0,BSTACK_0,#4
b update_up_list_2
copy_argument_part_2:
- sub r4,r4,#1
- cmp r4,r6
+ sub BSTACK_0,BSTACK_0,#1
+ cmp BSTACK_0,ASTACK_0
bcc copy_arguments_1
.ifdef SHARE_CHAR_INT
- cmp r4,r0
+ cmp BSTACK_0,BSTACK_4
bcs copy_arguments_1
.endif
- mov r7,r4
- ldr r4,[r4]
- add r10,r10,#1
- str r10,[r7]
- subs r10,r10,#1
+ mov ASTACK_1,BSTACK_0
+ ldr BSTACK_0,[BSTACK_0]
+ add HEAP_PTR,HEAP_PTR,#1
+ str HEAP_PTR,[ASTACK_1]
+ subs HEAP_PTR,HEAP_PTR,#1
copy_arguments_1:
- str r4,[r10],#4
+ str BSTACK_0,[HEAP_PTR],#4
.thumb_func
copy_argument_part_arguments:
- ldr r7,[r6],#4
- cmp r7,r6
+ ldr ASTACK_1,[ASTACK_0],#4
+ cmp ASTACK_1,ASTACK_0
bcc copy_arguments_2
.ifdef SHARE_CHAR_INT
- cmp r7,r0
+ cmp ASTACK_1,BSTACK_4
bcs copy_arguments_2
.endif
- ldr r4,[r7]
- add r10,r10,#1
- str r10,[r7]
- subs r10,r10,#1
- mov r7,r4
+ ldr BSTACK_0,[ASTACK_1]
+ add HEAP_PTR,HEAP_PTR,#1
+ str HEAP_PTR,[ASTACK_1]
+ subs HEAP_PTR,HEAP_PTR,#1
+ mov ASTACK_1,BSTACK_0
copy_arguments_2:
- str r7,[r10],#4
- subs r3,r3,#1
+ str ASTACK_1,[HEAP_PTR],#4
+ subs BSTACK_1,BSTACK_1,#1
bcs copy_argument_part_arguments
- cmp r9,#0
+ cmp ASTACK_PTR,#0
bne bsf_and_copy_nodes
b find_non_zero_long
update_list_2_:
- subs r4,r4,#1
+ subs BSTACK_0,BSTACK_0,#1
update_list_2:
- str r10,[r7]
+ str HEAP_PTR,[ASTACK_1]
begin_update_list_2:
- mov r7,r4
- ldr r4,[r4]
+ mov ASTACK_1,BSTACK_0
+ ldr BSTACK_0,[BSTACK_0]
update_list__2:
- tst r4,#1
+ tst BSTACK_0,#1
beq end_update_list_2
- tst r4,#2
+ tst BSTACK_0,#2
beq update_list_2_
- add r7,r4,#-3
- ldr r4,[r4,#-3]
+ add ASTACK_1,BSTACK_0,#-3
+ ldr BSTACK_0,[BSTACK_0,#-3]
b update_list__2
end_update_list_2:
- str r10,[r7]
+ str HEAP_PTR,[ASTACK_1]
- str r4,[r10],#4
+ str BSTACK_0,[HEAP_PTR],#4
- tst r4,#2
+ tst BSTACK_0,#2
beq move_lazy_node
- ldrh r3,[r4,#-2]
- tst r3,r3
+ ldrh BSTACK_1,[BSTACK_0,#-2]
+ tst BSTACK_1,BSTACK_1
beq move_hnf_0
- cmp r3,#256
+ cmp BSTACK_1,#256
bhs move_record
- subs r3,r3,#2
+ subs BSTACK_1,BSTACK_1,#2
bcc move_hnf_1
beq move_hnf_2
move_hnf_3:
- ldr r7,[r6],#4
- cmp r7,r6
+ ldr ASTACK_1,[ASTACK_0],#4
+ cmp ASTACK_1,ASTACK_0
bcc move_hnf_3_1
.ifdef SHARE_CHAR_INT
- cmp r7,r0
+ cmp ASTACK_1,BSTACK_4
bcs move_hnf_3_1
.endif
- add r4,r10,#1
- ldr r3,[r7]
- str r4,[r7]
- mov r7,r3
+ add BSTACK_0,HEAP_PTR,#1
+ ldr BSTACK_1,[ASTACK_1]
+ str BSTACK_0,[ASTACK_1]
+ mov ASTACK_1,BSTACK_1
move_hnf_3_1:
- str r7,[r10]
+ str ASTACK_1,[HEAP_PTR]
- ldr r7,[r6],#4
- cmp r7,r6
+ ldr ASTACK_1,[ASTACK_0],#4
+ cmp ASTACK_1,ASTACK_0
bcc move_hnf_3_2
.ifdef SHARE_CHAR_INT
- cmp r7,r0
+ cmp ASTACK_1,BSTACK_4
bcs move_hnf_3_2
.endif
- add r4,r10,#4+2+1
- ldr r3,[r7]
- str r4,[r7]
- mov r7,r3
+ add BSTACK_0,HEAP_PTR,#4+2+1
+ ldr BSTACK_1,[ASTACK_1]
+ str BSTACK_0,[ASTACK_1]
+ mov ASTACK_1,BSTACK_1
move_hnf_3_2:
- str r7,[r10,#4]
- add r10,r10,#8
+ str ASTACK_1,[HEAP_PTR,#4]
+ add HEAP_PTR,HEAP_PTR,#8
- cmp r9,#0
+ cmp ASTACK_PTR,#0
bne bsf_and_copy_nodes
b find_non_zero_long
move_hnf_2:
- ldr r7,[r6],#4
- cmp r7,r6
+ ldr ASTACK_1,[ASTACK_0],#4
+ cmp ASTACK_1,ASTACK_0
bcc move_hnf_2_1
.ifdef SHARE_CHAR_INT
- cmp r7,r0
+ cmp ASTACK_1,BSTACK_4
bcs move_hnf_2_1
.endif
- add r4,r10,#1
- ldr r3,[r7]
- str r4,[r7]
- mov r7,r3
+ add BSTACK_0,HEAP_PTR,#1
+ ldr BSTACK_1,[ASTACK_1]
+ str BSTACK_0,[ASTACK_1]
+ mov ASTACK_1,BSTACK_1
move_hnf_2_1:
- str r7,[r10]
+ str ASTACK_1,[HEAP_PTR]
- ldr r7,[r6],#4
- cmp r7,r6
+ ldr ASTACK_1,[ASTACK_0],#4
+ cmp ASTACK_1,ASTACK_0
bcc move_hnf_2_2
.ifdef SHARE_CHAR_INT
- cmp r7,r0
+ cmp ASTACK_1,BSTACK_4
bcs move_hnf_2_2
.endif
- add r4,r10,#4+1
- ldr r3,[r7]
- str r4,[r7]
- mov r7,r3
+ add BSTACK_0,HEAP_PTR,#4+1
+ ldr BSTACK_1,[ASTACK_1]
+ str BSTACK_0,[ASTACK_1]
+ mov ASTACK_1,BSTACK_1
move_hnf_2_2:
- str r7,[r10,#4]
- add r10,r10,#8
+ str ASTACK_1,[HEAP_PTR,#4]
+ add HEAP_PTR,HEAP_PTR,#8
- cmp r9,#0
+ cmp ASTACK_PTR,#0
bne bsf_and_copy_nodes
b find_non_zero_long
move_hnf_1:
- ldr r7,[r6],#4
- cmp r7,r6
+ ldr ASTACK_1,[ASTACK_0],#4
+ cmp ASTACK_1,ASTACK_0
bcc move_hnf_1_
.ifdef SHARE_CHAR_INT
- cmp r7,r0
+ cmp ASTACK_1,BSTACK_4
bcs move_hnf_1_
.endif
- add r4,r10,#1
- ldr r3,[r7]
- str r4,[r7]
- mov r7,r3
+ add BSTACK_0,HEAP_PTR,#1
+ ldr BSTACK_1,[ASTACK_1]
+ str BSTACK_0,[ASTACK_1]
+ mov ASTACK_1,BSTACK_1
move_hnf_1_:
- str r7,[r10],#4
+ str ASTACK_1,[HEAP_PTR],#4
- cmp r9,#0
+ cmp ASTACK_PTR,#0
bne bsf_and_copy_nodes
b find_non_zero_long
.thumb_func
move_record:
- mov r12,#258/2
- subs r3,r3,r12,lsl #1
+ mov SCRATCH_REG,#258/2
+ subs BSTACK_1,BSTACK_1,SCRATCH_REG,lsl #1
blo move_record_1
beq move_record_2
move_record_3:
- ldrh r3,[r4,#-2+2]
- subs r3,r3,#1
+ ldrh BSTACK_1,[BSTACK_0,#-2+2]
+ subs BSTACK_1,BSTACK_1,#1
bhi move_hnf_3
- ldr r7,[r6],#4
+ ldr ASTACK_1,[ASTACK_0],#4
blo move_record_3_1b
move_record_3_1a:
- cmp r7,r6
+ cmp ASTACK_1,ASTACK_0
blo move_record_3_1b
.ifdef SHARE_CHAR_INT
- cmp r7,r0
+ cmp ASTACK_1,BSTACK_4
bhs move_record_3_1b
.endif
- add r4,r10,#1
- ldr r3,[r7]
- str r4,[r7]
- mov r7,r3
+ add BSTACK_0,HEAP_PTR,#1
+ ldr BSTACK_1,[ASTACK_1]
+ str BSTACK_0,[ASTACK_1]
+ mov ASTACK_1,BSTACK_1
move_record_3_1b:
- str r7,[r10],#4
+ str ASTACK_1,[HEAP_PTR],#4
- ldr r7,[r6],#4
- cmp r7,r6
+ ldr ASTACK_1,[ASTACK_0],#4
+ cmp ASTACK_1,ASTACK_0
blo move_record_3_2
.ifdef SHARE_CHAR_INT
- cmp r7,r0
+ cmp ASTACK_1,BSTACK_4
bhs move_record_3_2
.endif
- str r8,[sp,#-4]!
- sub r4,r7,r11
-
- lao r12,heap_vector,11
- ldo r3,r12,heap_vector,11
- add r4,r4,#4
- and r8,r4,#31*4
- lsr r4,r4,#7
- lsr r8,r8,#2
- mov r12,#1
- lsl r8,r12,r8
-
- ldr r12,[r3,r4,lsl #2]
- tst r8,r12
+ str ASTACK_2,[sp,#-4]!
+ sub BSTACK_0,ASTACK_1,ASTACK_3
+
+ lao SCRATCH_REG,heap_vector,11
+ ldo BSTACK_1,SCRATCH_REG,heap_vector,11
+ add BSTACK_0,BSTACK_0,#4
+ and ASTACK_2,BSTACK_0,#31*4
+ lsr BSTACK_0,BSTACK_0,#7
+ lsr ASTACK_2,ASTACK_2,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_2,SCRATCH_REG,ASTACK_2
+
+ ldr SCRATCH_REG,[BSTACK_1,BSTACK_0,lsl #2]
+ tst ASTACK_2,SCRATCH_REG
beq not_linked_record_argument_part_3_b
- sub r4,r10,r11
-
- and r8,r4,#31*4
- lsr r4,r4,#7
- lsr r8,r8,#2
- mov r12,#1
- lsl r8,r12,r8
- ldr r12,[r3,r4,lsl #2]
- orr r12,r12,r8
- str r12,[r3,r4,lsl #2]
- ldr r8,[sp],#4
+ sub BSTACK_0,HEAP_PTR,ASTACK_3
+
+ and ASTACK_2,BSTACK_0,#31*4
+ lsr BSTACK_0,BSTACK_0,#7
+ lsr ASTACK_2,ASTACK_2,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_2,SCRATCH_REG,ASTACK_2
+ ldr SCRATCH_REG,[BSTACK_1,BSTACK_0,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_2
+ str SCRATCH_REG,[BSTACK_1,BSTACK_0,lsl #2]
+ ldr ASTACK_2,[sp],#4
b linked_record_argument_part_3_b
not_linked_record_argument_part_3_b:
- ldr r12,[r3,r4,lsl #2]
- orr r12,r12,r8
- str r12,[r3,r4,lsl #2]
+ ldr SCRATCH_REG,[BSTACK_1,BSTACK_0,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_2
+ str SCRATCH_REG,[BSTACK_1,BSTACK_0,lsl #2]
- sub r4,r10,r11
+ sub BSTACK_0,HEAP_PTR,ASTACK_3
- and r8,r4,#31*4
- lsr r4,r4,#7
+ and ASTACK_2,BSTACK_0,#31*4
+ lsr BSTACK_0,BSTACK_0,#7
- lsr r8,r8,#2
- mov r12,#1
- lsl r12,r8
- mvn r8,r12
+ lsr ASTACK_2,ASTACK_2,#2
+ mov SCRATCH_REG,#1
+ lsl SCRATCH_REG,ASTACK_2
+ mvn ASTACK_2,SCRATCH_REG
- ldr r12,[r3,r4,lsl #2]
- and r12,r12,r8
- str r12,[r3,r4,lsl #2]
- ldr r8,[sp],#4
+ ldr SCRATCH_REG,[BSTACK_1,BSTACK_0,lsl #2]
+ and SCRATCH_REG,SCRATCH_REG,ASTACK_2
+ str SCRATCH_REG,[BSTACK_1,BSTACK_0,lsl #2]
+ ldr ASTACK_2,[sp],#4
linked_record_argument_part_3_b:
- ldr r3,[r7]
- add r4,r10,#2+1
- str r4,[r7]
- mov r7,r3
+ ldr BSTACK_1,[ASTACK_1]
+ add BSTACK_0,HEAP_PTR,#2+1
+ str BSTACK_0,[ASTACK_1]
+ mov ASTACK_1,BSTACK_1
move_record_3_2:
- str r7,[r10],#4
+ str ASTACK_1,[HEAP_PTR],#4
- sub r3,r6,r11
- lsr r3,r3,#2
- subs r3,r3,#1
- and r3,r3,#31
- cmp r3,#2
+ sub BSTACK_1,ASTACK_0,ASTACK_3
+ lsr BSTACK_1,BSTACK_1,#2
+ subs BSTACK_1,BSTACK_1,#1
+ and BSTACK_1,BSTACK_1,#31
+ cmp BSTACK_1,#2
blo bit_in_next_word
- mov r12,#1
- lsl r12,r12,r3
- bic r9,r9,r12
+ mov SCRATCH_REG,#1
+ lsl SCRATCH_REG,SCRATCH_REG,BSTACK_1
+ bic ASTACK_PTR,ASTACK_PTR,SCRATCH_REG
- cmp r9,#0
+ cmp ASTACK_PTR,#0
bne bsf_and_copy_nodes
b find_non_zero_long
.thumb_func
bit_in_next_word:
- sub r2,r2,#1
- ldr r9,[r1],#4
+ sub BSTACK_2,BSTACK_2,#1
+ ldr ASTACK_PTR,[BSTACK_3],#4
- mov r12,#1
- lsl r12,r12,r3
- bic r9,r9,r12
+ mov SCRATCH_REG,#1
+ lsl SCRATCH_REG,SCRATCH_REG,BSTACK_1
+ bic ASTACK_PTR,ASTACK_PTR,SCRATCH_REG
- cmp r9,#0
+ cmp ASTACK_PTR,#0
beq skip_zeros
b end_skip_zeros
move_record_2:
- ldrh r12,[r4,#-2+2]
- cmp r12,#1
+ ldrh SCRATCH_REG,[BSTACK_0,#-2+2]
+ cmp SCRATCH_REG,#1
bhi move_hnf_2
blo move_real_or_file
move_record_2_ab:
- ldr r7,[r6],#4
- cmp r7,r6
+ ldr ASTACK_1,[ASTACK_0],#4
+ cmp ASTACK_1,ASTACK_0
blo move_record_2_1
.ifdef SHARE_CHAR_INT
- cmp r7,r0
+ cmp ASTACK_1,BSTACK_4
bhs move_record_2_1
.endif
- add r4,r10,#1
- ldr r3,[r7]
- str r4,[r7]
- mov r7,r3
+ add BSTACK_0,HEAP_PTR,#1
+ ldr BSTACK_1,[ASTACK_1]
+ str BSTACK_0,[ASTACK_1]
+ mov ASTACK_1,BSTACK_1
move_record_2_1:
- str r7,[r10]
- ldr r3,[r6],#4
- str r3,[r10,#4]
- add r10,r10,#8
+ str ASTACK_1,[HEAP_PTR]
+ ldr BSTACK_1,[ASTACK_0],#4
+ str BSTACK_1,[HEAP_PTR,#4]
+ add HEAP_PTR,HEAP_PTR,#8
- cmp r9,#0
+ cmp ASTACK_PTR,#0
bne bsf_and_copy_nodes
b find_non_zero_long
move_record_1:
- ldrh r3,[r4,#-2+2]
- tst r3,r3
+ ldrh BSTACK_1,[BSTACK_0,#-2+2]
+ tst BSTACK_1,BSTACK_1
bne move_hnf_1
b move_int_bool_or_char
.thumb_func
move_real_or_file:
- ldr r4,[r6],#4
- str r4,[r10],#4
+ ldr BSTACK_0,[ASTACK_0],#4
+ str BSTACK_0,[HEAP_PTR],#4
.thumb_func
move_int_bool_or_char:
- ldr r4,[r6],#4
- str r4,[r10],#4
+ ldr BSTACK_0,[ASTACK_0],#4
+ str BSTACK_0,[HEAP_PTR],#4
copy_normal_hnf_0:
- cmp r9,#0
+ cmp ASTACK_PTR,#0
bne bsf_and_copy_nodes
b find_non_zero_long
move_hnf_0:
- laol r12,INT+2,INT_o_2,13
- otoa r12,INT_o_2,13
- cmp r4,r12
+ laol SCRATCH_REG,INT+2,INT_o_2,13
+ otoa SCRATCH_REG,INT_o_2,13
+ cmp BSTACK_0,SCRATCH_REG
blo move_real_file_string_or_array
- laol r12,CHAR+2,CHAR_o_2,8
- otoa r12,CHAR_o_2,8
- cmp r4,r12
+ laol SCRATCH_REG,CHAR+2,CHAR_o_2,8
+ otoa SCRATCH_REG,CHAR_o_2,8
+ cmp BSTACK_0,SCRATCH_REG
bls move_int_bool_or_char
.ifdef DLL
move_normal_hnf_0:
.endif
- cmp r9,#0
+ cmp ASTACK_PTR,#0
bne bsf_and_copy_nodes
b find_non_zero_long
.thumb_func
move_real_file_string_or_array:
- laol r12,__STRING__+2,__STRING___o_2,10
- otoa r12,__STRING___o_2,10
- cmp r4,r12
+ laol SCRATCH_REG,__STRING__+2,__STRING___o_2,10
+ otoa SCRATCH_REG,__STRING___o_2,10
+ cmp BSTACK_0,SCRATCH_REG
bhi move_real_or_file
bne move_array
- ldr r4,[r6]
- add r4,r4,#3
- lsr r4,r4,#2
+ ldr BSTACK_0,[ASTACK_0]
+ add BSTACK_0,BSTACK_0,#3
+ lsr BSTACK_0,BSTACK_0,#2
cp_s_arg_lp3:
- ldr r3,[r6],#4
- str r3,[r10],#4
- subs r4,r4,#1
+ ldr BSTACK_1,[ASTACK_0],#4
+ str BSTACK_1,[HEAP_PTR],#4
+ subs BSTACK_0,BSTACK_0,#1
bcs cp_s_arg_lp3
- cmp r9,#0
+ cmp ASTACK_PTR,#0
bne bsf_and_copy_nodes
b find_non_zero_long
.thumb_func
move_array:
.ifdef DLL
- laol r12,__ARRAY__+2,__ARRAY___o_2,2
- otoa r12,__ARRAY___o_2,2
- cmp r4,r12
+ laol SCRATCH_REG,__ARRAY__+2,__ARRAY___o_2,2
+ otoa SCRATCH_REG,__ARRAY___o_2,2
+ cmp BSTACK_0,SCRATCH_REG
blo move_normal_hnf_0
.endif
- cmp r9,#0
+ cmp ASTACK_PTR,#0
bne bsf_and_end_array_bit
.thumb_func
skip_zeros_a:
- ldr r9,[r1],#4
- sub r2,r2,#1
- cmp r9,#0
+ ldr ASTACK_PTR,[BSTACK_3],#4
+ sub BSTACK_2,BSTACK_2,#1
+ cmp ASTACK_PTR,#0
beq skip_zeros_a
- lao r12,neg_heap_vector_plus_4,3
- ldo r8,r12,neg_heap_vector_plus_4,3
- add r8,r8,r1
+ lao SCRATCH_REG,neg_heap_vector_plus_4,3
+ ldo ASTACK_2,SCRATCH_REG,neg_heap_vector_plus_4,3
+ add ASTACK_2,ASTACK_2,BSTACK_3
- add r8,r11,r8,lsl #5
+ add ASTACK_2,ASTACK_3,ASTACK_2,lsl #5
.thumb_func
bsf_and_end_array_bit:
- neg r12,r9
- and r12,r12,r9
- clz r3,r12
- rsb r3,r3,#31
+ neg SCRATCH_REG,ASTACK_PTR
+ and SCRATCH_REG,SCRATCH_REG,ASTACK_PTR
+ clz BSTACK_1,SCRATCH_REG
+ rsb BSTACK_1,BSTACK_1,#31
.thumb_func
end_array_bit:
- bic r9,r9,r12
+ bic ASTACK_PTR,ASTACK_PTR,SCRATCH_REG
- add r3,r8,r3,lsl #2
+ add BSTACK_1,ASTACK_2,BSTACK_1,lsl #2
- cmp r6,r3
+ cmp ASTACK_0,BSTACK_1
bne move_a_array
.thumb_func
move_b_array:
- ldr r7,[r6]
- str r7,[r10]
- ldr r3,[r6,#4]!
- ldrh r4,[r3,#-2]
- add r10,r10,#4
- tst r4,r4
+ ldr ASTACK_1,[ASTACK_0]
+ str ASTACK_1,[HEAP_PTR]
+ ldr BSTACK_1,[ASTACK_0,#4]!
+ ldrh BSTACK_0,[BSTACK_1,#-2]
+ add HEAP_PTR,HEAP_PTR,#4
+ tst BSTACK_0,BSTACK_0
beq move_strict_basic_array
- subs r4,r4,#256
- mul r7,r4,r7
- mov r4,r7
+ subs BSTACK_0,BSTACK_0,#256
+ mul ASTACK_1,BSTACK_0,ASTACK_1
+ mov BSTACK_0,ASTACK_1
b cp_s_arg_lp3
.thumb_func
move_strict_basic_array:
- mov r4,r7
- laol r12,INT+2,INT_o_2,14
- otoa r12,INT_o_2,14
- cmp r3,r12
+ mov BSTACK_0,ASTACK_1
+ laol SCRATCH_REG,INT+2,INT_o_2,14
+ otoa SCRATCH_REG,INT_o_2,14
+ cmp BSTACK_1,SCRATCH_REG
beq cp_s_arg_lp3
- laol r12,BOOL+2,BOOL_o_2,7
- otoa r12,BOOL_o_2,7
- cmp r3,r12
+ laol SCRATCH_REG,BOOL+2,BOOL_o_2,7
+ otoa SCRATCH_REG,BOOL_o_2,7
+ cmp BSTACK_1,SCRATCH_REG
beq move_bool_array
- add r4,r4,r4
+ add BSTACK_0,BSTACK_0,BSTACK_0
b cp_s_arg_lp3
.thumb_func
move_bool_array:
- add r4,r4,#3
- lsr r4,r4,#2
+ add BSTACK_0,BSTACK_0,#3
+ lsr BSTACK_0,BSTACK_0,#2
b cp_s_arg_lp3
.thumb_func
move_a_array:
- mov r7,r3
- subs r3,r3,r6
- lsr r3,r3,#2
+ mov ASTACK_1,BSTACK_1
+ subs BSTACK_1,BSTACK_1,ASTACK_0
+ lsr BSTACK_1,BSTACK_1,#2
- str r9,[sp,#-4]!
+ str ASTACK_PTR,[sp,#-4]!
- subs r3,r3,#1
+ subs BSTACK_1,BSTACK_1,#1
blo end_array
- ldr r9,[r6]
- ldr r4,[r7,#-4]
- str r9,[r7,#-4]
- str r4,[r10]
- ldr r4,[r7]
- ldr r9,[r6,#4]
- add r6,r6,#8
- str r9,[r7]
- str r4,[r10,#4]
- add r10,r10,#8
- tst r4,r4
+ ldr ASTACK_PTR,[ASTACK_0]
+ ldr BSTACK_0,[ASTACK_1,#-4]
+ str ASTACK_PTR,[ASTACK_1,#-4]
+ str BSTACK_0,[HEAP_PTR]
+ ldr BSTACK_0,[ASTACK_1]
+ ldr ASTACK_PTR,[ASTACK_0,#4]
+ add ASTACK_0,ASTACK_0,#8
+ str ASTACK_PTR,[ASTACK_1]
+ str BSTACK_0,[HEAP_PTR,#4]
+ add HEAP_PTR,HEAP_PTR,#8
+ tst BSTACK_0,BSTACK_0
beq st_move_array_lp
- ldrh r9,[r4,#-2+2]
- ldrh r4,[r4,#-2]
- subs r4,r4,#256
- cmp r4,r9
+ ldrh ASTACK_PTR,[BSTACK_0,#-2+2]
+ ldrh BSTACK_0,[BSTACK_0,#-2]
+ subs BSTACK_0,BSTACK_0,#256
+ cmp BSTACK_0,ASTACK_PTR
beq st_move_array_lp
.thumb_func
move_array_ab:
- str r6,[sp,#-4]!
+ str ASTACK_0,[sp,#-4]!
- ldr r7,[r10,#-8]
- mov r3,r9
- mul r7,r4,r7
- lsl r7,r7,#2
+ ldr ASTACK_1,[HEAP_PTR,#-8]
+ mov BSTACK_1,ASTACK_PTR
+ mul ASTACK_1,BSTACK_0,ASTACK_1
+ lsl ASTACK_1,ASTACK_1,#2
- subs r4,r4,r3
- add r7,r7,r6
+ subs BSTACK_0,BSTACK_0,BSTACK_1
+ add ASTACK_1,ASTACK_1,ASTACK_0
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl reorder
- ldr r6,[sp],#4
- subs r3,r3,#1
- subs r4,r4,#1
+ ldr ASTACK_0,[sp],#4
+ subs BSTACK_1,BSTACK_1,#1
+ subs BSTACK_0,BSTACK_0,#1
- str r3,[sp,#-4]!
- str r4,[sp,#-4]!
- ldr r12,[r10,#-8]
- str r12,[sp,#-4]!
+ str BSTACK_1,[sp,#-4]!
+ str BSTACK_0,[sp,#-4]!
+ ldr SCRATCH_REG,[HEAP_PTR,#-8]
+ str SCRATCH_REG,[sp,#-4]!
b st_move_array_lp_ab
move_array_ab_lp1:
- ldr r4,[sp,#8]
+ ldr BSTACK_0,[sp,#8]
.thumb_func
move_array_ab_a_elements:
- ldr r3,[r6],#4
- cmp r3,r6
+ ldr BSTACK_1,[ASTACK_0],#4
+ cmp BSTACK_1,ASTACK_0
blo move_array_element_ab
.ifdef SHARE_CHAR_INT
- cmp r3,r0
+ cmp BSTACK_1,BSTACK_4
bcs move_array_element_ab
.endif
- mov r7,r3
- ldr r3,[r7]
- add r10,r10,#1
- str r10,[r7]
- subs r10,r10,#1
+ mov ASTACK_1,BSTACK_1
+ ldr BSTACK_1,[ASTACK_1]
+ add HEAP_PTR,HEAP_PTR,#1
+ str HEAP_PTR,[ASTACK_1]
+ subs HEAP_PTR,HEAP_PTR,#1
.thumb_func
move_array_element_ab:
- str r3,[r10],#4
- subs r4,r4,#1
+ str BSTACK_1,[HEAP_PTR],#4
+ subs BSTACK_0,BSTACK_0,#1
bcs move_array_ab_a_elements
- ldr r4,[sp,#4]
+ ldr BSTACK_0,[sp,#4]
.thumb_func
move_array_ab_b_elements:
- ldr r3,[r6],#4
- str r3,[r10],#4
- subs r4,r4,#1
+ ldr BSTACK_1,[ASTACK_0],#4
+ str BSTACK_1,[HEAP_PTR],#4
+ subs BSTACK_0,BSTACK_0,#1
bcs move_array_ab_b_elements
.thumb_func
st_move_array_lp_ab:
- ldr r12,[sp]
- subs r12,r12,#1
- str r12,[sp]
+ ldr SCRATCH_REG,[sp]
+ subs SCRATCH_REG,SCRATCH_REG,#1
+ str SCRATCH_REG,[sp]
bcs move_array_ab_lp1
add sp,sp,#12
b end_array
move_array_lp1:
- ldr r4,[r6],#4
- add r10,r10,#4
- cmp r4,r6
+ ldr BSTACK_0,[ASTACK_0],#4
+ add HEAP_PTR,HEAP_PTR,#4
+ cmp BSTACK_0,ASTACK_0
blo move_array_element
.ifdef SHARE_CHAR_INT
- cmp r4,r0
+ cmp BSTACK_0,BSTACK_4
bcs move_array_element
.endif
- ldr r9,[r4]
- mov r7,r4
- str r9,[r10,#-4]
- add r4,r10,#-4+1
- str r4,[r7]
+ ldr ASTACK_PTR,[BSTACK_0]
+ mov ASTACK_1,BSTACK_0
+ str ASTACK_PTR,[HEAP_PTR,#-4]
+ add BSTACK_0,HEAP_PTR,#-4+1
+ str BSTACK_0,[ASTACK_1]
- subs r3,r3,#1
+ subs BSTACK_1,BSTACK_1,#1
bcs move_array_lp1
b end_array
.thumb_func
move_array_element:
- str r4,[r10,#-4]
+ str BSTACK_0,[HEAP_PTR,#-4]
.thumb_func
st_move_array_lp:
- subs r3,r3,#1
+ subs BSTACK_1,BSTACK_1,#1
bcs move_array_lp1
.thumb_func
end_array:
- ldr r9,[sp],#4
+ ldr ASTACK_PTR,[sp],#4
- cmp r9,#0
+ cmp ASTACK_PTR,#0
bne bsf_and_copy_nodes
b find_non_zero_long
.thumb_func
move_lazy_node:
- mov r7,r4
- ldr r3,[r7,#-4]
- tst r3,r3
+ mov ASTACK_1,BSTACK_0
+ ldr BSTACK_1,[ASTACK_1,#-4]
+ tst BSTACK_1,BSTACK_1
beq move_lazy_node_0
- subs r3,r3,#1
+ subs BSTACK_1,BSTACK_1,#1
ble move_lazy_node_1
- cmp r3,#256
+ cmp BSTACK_1,#256
bge move_closure_with_unboxed_arguments
.thumb_func
move_lazy_node_arguments:
- ldr r7,[r6],#4
- cmp r7,r6
+ ldr ASTACK_1,[ASTACK_0],#4
+ cmp ASTACK_1,ASTACK_0
bcc move_lazy_node_arguments_
.ifdef SHARE_CHAR_INT
- cmp r7,r0
+ cmp ASTACK_1,BSTACK_4
bcs move_lazy_node_arguments_
.endif
- ldr r4,[r7]
- str r4,[r10]
- add r4,r10,#1
- add r10,r10,#4
- str r4,[r7]
- subs r3,r3,#1
+ ldr BSTACK_0,[ASTACK_1]
+ str BSTACK_0,[HEAP_PTR]
+ add BSTACK_0,HEAP_PTR,#1
+ add HEAP_PTR,HEAP_PTR,#4
+ str BSTACK_0,[ASTACK_1]
+ subs BSTACK_1,BSTACK_1,#1
bcs move_lazy_node_arguments
- cmp r9,#0
+ cmp ASTACK_PTR,#0
bne bsf_and_copy_nodes
b find_non_zero_long
.thumb_func
move_lazy_node_arguments_:
- str r7,[r10],#4
- subs r3,r3,#1
+ str ASTACK_1,[HEAP_PTR],#4
+ subs BSTACK_1,BSTACK_1,#1
bcs move_lazy_node_arguments
- cmp r9,#0
+ cmp ASTACK_PTR,#0
bne bsf_and_copy_nodes
b find_non_zero_long
move_lazy_node_1:
- ldr r7,[r6],#4
- cmp r7,r6
+ ldr ASTACK_1,[ASTACK_0],#4
+ cmp ASTACK_1,ASTACK_0
bcc move_lazy_node_1_
.ifdef SHARE_CHAR_INT
- cmp r7,r0
+ cmp ASTACK_1,BSTACK_4
bcs move_lazy_node_1_
.endif
- add r4,r10,#1
- ldr r3,[r7]
- str r4,[r7]
- mov r7,r3
+ add BSTACK_0,HEAP_PTR,#1
+ ldr BSTACK_1,[ASTACK_1]
+ str BSTACK_0,[ASTACK_1]
+ mov ASTACK_1,BSTACK_1
move_lazy_node_1_:
- str r7,[r10]
- add r10,r10,#8
+ str ASTACK_1,[HEAP_PTR]
+ add HEAP_PTR,HEAP_PTR,#8
- cmp r9,#0
+ cmp ASTACK_PTR,#0
bne bsf_and_copy_nodes
b find_non_zero_long
move_lazy_node_0:
- add r10,r10,#8
+ add HEAP_PTR,HEAP_PTR,#8
- cmp r9,#0
+ cmp ASTACK_PTR,#0
bne bsf_and_copy_nodes
b find_non_zero_long
.thumb_func
move_closure_with_unboxed_arguments:
beq move_closure_with_unboxed_arguments_1
- add r3,r3,#1
- mov r4,r3
- and r3,r3,#255
- lsr r4,r4,#8
- subs r3,r3,r4
+ add BSTACK_1,BSTACK_1,#1
+ mov BSTACK_0,BSTACK_1
+ and BSTACK_1,BSTACK_1,#255
+ lsr BSTACK_0,BSTACK_0,#8
+ subs BSTACK_1,BSTACK_1,BSTACK_0
beq move_non_pointers_of_closure
- str r4,[sp,#-4]!
+ str BSTACK_0,[sp,#-4]!
.thumb_func
move_closure_with_unboxed_arguments_lp:
- ldr r7,[r6],#4
- cmp r7,r6
+ ldr ASTACK_1,[ASTACK_0],#4
+ cmp ASTACK_1,ASTACK_0
bcc move_closure_with_unboxed_arguments_
.ifdef SHARE_CHAR_INT
- cmp r7,r0
+ cmp ASTACK_1,BSTACK_4
bcs move_closure_with_unboxed_arguments_
.endif
- ldr r4,[r7]
- str r4,[r10]
- add r4,r10,#1
- add r10,r10,#4
- str r4,[r7]
- subs r3,r3,#1
+ ldr BSTACK_0,[ASTACK_1]
+ str BSTACK_0,[HEAP_PTR]
+ add BSTACK_0,HEAP_PTR,#1
+ add HEAP_PTR,HEAP_PTR,#4
+ str BSTACK_0,[ASTACK_1]
+ subs BSTACK_1,BSTACK_1,#1
bne move_closure_with_unboxed_arguments_lp
- ldr r4,[sp],#4
+ ldr BSTACK_0,[sp],#4
b move_non_pointers_of_closure
.thumb_func
move_closure_with_unboxed_arguments_:
- str r7,[r10],#4
- subs r3,r3,#1
+ str ASTACK_1,[HEAP_PTR],#4
+ subs BSTACK_1,BSTACK_1,#1
bne move_closure_with_unboxed_arguments_lp
- ldr r4,[sp],#4
+ ldr BSTACK_0,[sp],#4
.thumb_func
move_non_pointers_of_closure:
- ldr r3,[r6],#4
- str r3,[r10],#4
- subs r4,r4,#1
+ ldr BSTACK_1,[ASTACK_0],#4
+ str BSTACK_1,[HEAP_PTR],#4
+ subs BSTACK_0,BSTACK_0,#1
bne move_non_pointers_of_closure
- cmp r9,#0
+ cmp ASTACK_PTR,#0
bne bsf_and_copy_nodes
b find_non_zero_long
move_closure_with_unboxed_arguments_1:
- ldr r4,[r6]
- str r4,[r10]
- add r10,r10,#8
- cmp r9,#0
+ ldr BSTACK_0,[ASTACK_0]
+ str BSTACK_0,[HEAP_PTR]
+ add HEAP_PTR,HEAP_PTR,#8
+ cmp ASTACK_PTR,#0
bne bsf_and_copy_nodes
b find_non_zero_long
@@ -1259,20 +1258,20 @@ move_closure_with_unboxed_arguments_1:
end_copy:
.ifdef FINALIZERS
- lao r12,finalizer_list,6
- ldo r6,r12,finalizer_list,6
+ lao SCRATCH_REG,finalizer_list,6
+ ldo ASTACK_0,SCRATCH_REG,finalizer_list,6
.thumb_func
restore_finalizer_descriptors:
- laol r12,__Nil-4,__Nil_o_m4,8
- otoa r12,__Nil_o_m4,8
- cmp r6,r12
+ laol SCRATCH_REG,__Nil-4,__Nil_o_m4,8
+ otoa SCRATCH_REG,__Nil_o_m4,8
+ cmp ASTACK_0,SCRATCH_REG
beq end_restore_finalizer_descriptors
- laol r12,e____system__kFinalizer+2,e____system__kFinalizer_o_2,0
- otoa r12,e____system__kFinalizer_o_2,0
- str r12,[r6]
- ldr r6,[r6,#4]
+ laol SCRATCH_REG,e____system__kFinalizer+2,e____system__kFinalizer_o_2,0
+ otoa SCRATCH_REG,e____system__kFinalizer_o_2,0
+ str SCRATCH_REG,[ASTACK_0]
+ ldr ASTACK_0,[ASTACK_0,#4]
b restore_finalizer_descriptors
.thumb_func
diff --git a/thumb2compact_rmark.s b/thumb2compact_rmark.s
index 8680086..ab0ab1b 100644
--- a/thumb2compact_rmark.s
+++ b/thumb2compact_rmark.s
@@ -1,359 +1,358 @@
-
ZERO_ARITY_DESCRIPTOR_OFFSET = -4
rmark_stack_nodes1:
- ldr r3,[r6]
- add r4,r9,#1
- str r3,[r9]
- str r4,[r6]
+ ldr BSTACK_1,[ASTACK_0]
+ add BSTACK_0,ASTACK_PTR,#1
+ str BSTACK_1,[ASTACK_PTR]
+ str BSTACK_0,[ASTACK_0]
rmark_next_stack_node:
- add r9,r9,#4
+ add ASTACK_PTR,ASTACK_PTR,#4
rmark_stack_nodes:
- lao r12,end_vector,16
- ldo r12,r12,end_vector,16
- cmp r9,r12
+ lao SCRATCH_REG,end_vector,16
+ ldo SCRATCH_REG,SCRATCH_REG,end_vector,16
+ cmp ASTACK_PTR,SCRATCH_REG
beq end_rmark_nodes
rmark_more_stack_nodes:
- ldr r6,[r9]
+ ldr ASTACK_0,[ASTACK_PTR]
- sub r4,r6,r11
- cmp r4,r2
+ sub BSTACK_0,ASTACK_0,ASTACK_3
+ cmp BSTACK_0,BSTACK_2
bcs rmark_next_stack_node
- lsr r3,r4,#7
- lsr r4,r4,#2
- and r4,r4,#31
- mov r12,#1
- lsl r4,r12,r4
- ldr r8,[r10,r3,lsl #2]
- tst r8,r4
+ lsr BSTACK_1,BSTACK_0,#7
+ lsr BSTACK_0,BSTACK_0,#2
+ and BSTACK_0,BSTACK_0,#31
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
+ ldr ASTACK_2,[HEAP_PTR,BSTACK_1,lsl #2]
+ tst ASTACK_2,BSTACK_0
bne rmark_stack_nodes1
- orr r8,r8,r4
- str r8,[r10,r3,lsl #2]
+ orr ASTACK_2,ASTACK_2,BSTACK_0
+ str ASTACK_2,[HEAP_PTR,BSTACK_1,lsl #2]
- ands lr,r6,#1
+ ands lr,ASTACK_0,#1
it eq
- ldreq r4,[r6]
+ ldreq BSTACK_0,[ASTACK_0]
it ne
- ldrne r4,[r6,#-1]
+ ldrne BSTACK_0,[ASTACK_0,#-1]
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl rmark_stack_node
- add r9,r9,#4
- lao r12,end_vector,17
- ldo r12,r12,end_vector,17
- cmp r9,r12
+ add ASTACK_PTR,ASTACK_PTR,#4
+ lao SCRATCH_REG,end_vector,17
+ ldo SCRATCH_REG,SCRATCH_REG,end_vector,17
+ cmp ASTACK_PTR,SCRATCH_REG
bne rmark_more_stack_nodes
ldr pc,[sp],#4
rmark_stack_node:
subs sp,sp,#8
- str r4,[r9]
- add r8,r9,#1
- str r9,[sp,#4]
- mov r3,#-1
- mov r12,#0
- str r12,[sp]
- str r8,[r6]
+ str BSTACK_0,[ASTACK_PTR]
+ add ASTACK_2,ASTACK_PTR,#1
+ str ASTACK_PTR,[sp,#4]
+ mov BSTACK_1,#-1
+ mov SCRATCH_REG,#0
+ str SCRATCH_REG,[sp]
+ str ASTACK_2,[ASTACK_0]
b rmark_no_reverse
rmark_node_d1:
- sub r4,r6,r11
- cmp r4,r2
+ sub BSTACK_0,ASTACK_0,ASTACK_3
+ cmp BSTACK_0,BSTACK_2
bcs rmark_next_node
b rmark_node_
rmark_hnf_2:
- add r3,r6,#4
- ldr r4,[r6,#4]
+ add BSTACK_1,ASTACK_0,#4
+ ldr BSTACK_0,[ASTACK_0,#4]
sub sp,sp,#8
- mov r9,r6
- ldr r6,[r6]
+ mov ASTACK_PTR,ASTACK_0
+ ldr ASTACK_0,[ASTACK_0]
- str r3,[sp,#4]
- str r4,[sp]
+ str BSTACK_1,[sp,#4]
+ str BSTACK_0,[sp]
- cmp sp,r0
+ cmp sp,BSTACK_4
blo rmark_using_reversal
rmark_node:
- sub r4,r6,r11
- cmp r4,r2
+ sub BSTACK_0,ASTACK_0,ASTACK_3
+ cmp BSTACK_0,BSTACK_2
bcs rmark_next_node
- mov r3,r9
+ mov BSTACK_1,ASTACK_PTR
rmark_node_:
- lsr r7,r4,#7
- lsr r4,r4,#2
- and r4,r4,#31
- ldr r8,[r10,r7,lsl #2]
- mov r12,#1
- lsl r4,r12,r4
- tst r8,r4
+ lsr ASTACK_1,BSTACK_0,#7
+ lsr BSTACK_0,BSTACK_0,#2
+ and BSTACK_0,BSTACK_0,#31
+ ldr ASTACK_2,[HEAP_PTR,ASTACK_1,lsl #2]
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
+ tst ASTACK_2,BSTACK_0
bne rmark_reverse_and_mark_next_node
- orr r8,r8,r4
- str r8,[r10,r7,lsl #2]
+ orr ASTACK_2,ASTACK_2,BSTACK_0
+ str ASTACK_2,[HEAP_PTR,ASTACK_1,lsl #2]
- ldr r4,[r6]
+ ldr BSTACK_0,[ASTACK_0]
rmark_arguments:
- cmp r6,r3
+ cmp ASTACK_0,BSTACK_1
bhi rmark_no_reverse
- add r8,r9,#1
- str r4,[r9]
- str r8,[r6]
+ add ASTACK_2,ASTACK_PTR,#1
+ str BSTACK_0,[ASTACK_PTR]
+ str ASTACK_2,[ASTACK_0]
rmark_no_reverse:
- tst r4,#2
+ tst BSTACK_0,#2
beq rmark_lazy_node
- ldrh r8,[r4,#-2]
- tst r8,r8
+ ldrh ASTACK_2,[BSTACK_0,#-2]
+ tst ASTACK_2,ASTACK_2
beq rmark_hnf_0
- add r6,r6,#4
+ add ASTACK_0,ASTACK_0,#4
- cmp r8,#256
+ cmp ASTACK_2,#256
bhs rmark_record
- subs r8,r8,#2
+ subs ASTACK_2,ASTACK_2,#2
beq rmark_hnf_2
bcc rmark_hnf_1
rmark_hnf_3:
- ldr r7,[r6,#4]
+ ldr ASTACK_1,[ASTACK_0,#4]
rmark_hnf_3_:
- cmp sp,r0
+ cmp sp,BSTACK_4
blo rmark_using_reversal_
- sub r4,r7,r11
+ sub BSTACK_0,ASTACK_1,ASTACK_3
- lsr r3,r4,#7
- lsr r4,r4,#2
- and r4,r4,#31
- mov r12,#1
- lsl r4,r12,r4
- ldr r12,[r10,r3,lsl #2]
- tst r4,r12
+ lsr BSTACK_1,BSTACK_0,#7
+ lsr BSTACK_0,BSTACK_0,#2
+ and BSTACK_0,BSTACK_0,#31
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ tst BSTACK_0,SCRATCH_REG
bne rmark_shared_argument_part
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r4
- str r12,[r10,r3,lsl #2]
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,BSTACK_0
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
rmark_no_shared_argument_part:
subs sp,sp,#8
- str r6,[sp,#4]
- add r9,r6,#4
- ldr r6,[r6]
- add r7,r7,r8,lsl #2
- str r6,[sp]
+ str ASTACK_0,[sp,#4]
+ add ASTACK_PTR,ASTACK_0,#4
+ ldr ASTACK_0,[ASTACK_0]
+ add ASTACK_1,ASTACK_1,ASTACK_2,lsl #2
+ str ASTACK_0,[sp]
rmark_push_hnf_args:
- ldr r3,[r7]
+ ldr BSTACK_1,[ASTACK_1]
subs sp,sp,#8
- str r7,[sp,#4]
- subs r7,r7,#4
- str r3,[sp]
+ str ASTACK_1,[sp,#4]
+ subs ASTACK_1,ASTACK_1,#4
+ str BSTACK_1,[sp]
- subs r8,r8,#1
+ subs ASTACK_2,ASTACK_2,#1
bgt rmark_push_hnf_args
- ldr r6,[r7]
+ ldr ASTACK_0,[ASTACK_1]
- cmp r7,r9
+ cmp ASTACK_1,ASTACK_PTR
bhi rmark_no_reverse_argument_pointer
- add r8,r9,#3
- str r6,[r9]
- str r8,[r7]
+ add ASTACK_2,ASTACK_PTR,#3
+ str ASTACK_0,[ASTACK_PTR]
+ str ASTACK_2,[ASTACK_1]
- sub r4,r6,r11
- cmp r4,r2
+ sub BSTACK_0,ASTACK_0,ASTACK_3
+ cmp BSTACK_0,BSTACK_2
bcs rmark_next_node
- mov r3,r7
+ mov BSTACK_1,ASTACK_1
b rmark_node_
rmark_no_reverse_argument_pointer:
- mov r9,r7
+ mov ASTACK_PTR,ASTACK_1
b rmark_node
rmark_shared_argument_part:
- cmp r7,r6
+ cmp ASTACK_1,ASTACK_0
bhi rmark_hnf_1
- ldr r3,[r7]
- add r4,r6,#4+2+1
- str r4,[r7]
- str r3,[r6,#4]
+ ldr BSTACK_1,[ASTACK_1]
+ add BSTACK_0,ASTACK_0,#4+2+1
+ str BSTACK_0,[ASTACK_1]
+ str BSTACK_1,[ASTACK_0,#4]
b rmark_hnf_1
rmark_record:
- mov r12,#258/2
- subs r8,r8,r12,lsl #1
+ mov SCRATCH_REG,#258/2
+ subs ASTACK_2,ASTACK_2,SCRATCH_REG,lsl #1
beq rmark_record_2
blo rmark_record_1
rmark_record_3:
- ldrh r8,[r4,#-2+2]
- ldr r7,[r6,#4]
- subs r8,r8,#1
+ ldrh ASTACK_2,[BSTACK_0,#-2+2]
+ ldr ASTACK_1,[ASTACK_0,#4]
+ subs ASTACK_2,ASTACK_2,#1
blo rmark_record_3_bb
beq rmark_record_3_ab
- subs r8,r8,#1
+ subs ASTACK_2,ASTACK_2,#1
beq rmark_record_3_aab
b rmark_hnf_3_
rmark_record_3_bb:
- subs r6,r6,#4
+ subs ASTACK_0,ASTACK_0,#4
- sub r4,r7,r11
+ sub BSTACK_0,ASTACK_1,ASTACK_3
- lsr r8,r4,#7
- lsr r4,r4,#2
- and r4,r4,#31
- mov r12,#1
- lsl r4,r12,r4
- ldr r12,[r10,r8,lsl #2]
- orr r12,r12,r4
- str r12,[r10,r8,lsl #2]
+ lsr ASTACK_2,BSTACK_0,#7
+ lsr BSTACK_0,BSTACK_0,#2
+ and BSTACK_0,BSTACK_0,#31
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
+ ldr SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,BSTACK_0
+ str SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
- cmp r7,r6
+ cmp ASTACK_1,ASTACK_0
bhi rmark_next_node
- add r4,r4,r4
+ add BSTACK_0,BSTACK_0,BSTACK_0
bne rmark_bit_in_same_word1
- add r8,r8,#1
- mov r4,#1
+ add ASTACK_2,ASTACK_2,#1
+ mov BSTACK_0,#1
rmark_bit_in_same_word1:
- ldr r12,[r10,r8,lsl #2]
- tst r4,r12
+ ldr SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
+ tst BSTACK_0,SCRATCH_REG
beq rmark_not_yet_linked_bb
- sub r4,r6,r11
+ sub BSTACK_0,ASTACK_0,ASTACK_3
- add r4,r4,#2*4
- lsr r8,r4,#7
- lsr r4,r4,#2
- and r4,r4,#31
- mov r12,#1
- lsl r4,r12,r4
- ldr r12,[r10,r8,lsl #2]
+ add BSTACK_0,BSTACK_0,#2*4
+ lsr ASTACK_2,BSTACK_0,#7
+ lsr BSTACK_0,BSTACK_0,#2
+ and BSTACK_0,BSTACK_0,#31
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
+ ldr SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
rmark_not_yet_linked_bb:
- orr r12,r12,r4
- str r12,[r10,r8,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,BSTACK_0
+ str SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
- ldr r8,[r7]
- add r4,r6,#8+2+1
- str r8,[r6,#8]
- str r4,[r7]
+ ldr ASTACK_2,[ASTACK_1]
+ add BSTACK_0,ASTACK_0,#8+2+1
+ str ASTACK_2,[ASTACK_0,#8]
+ str BSTACK_0,[ASTACK_1]
b rmark_next_node
rmark_record_3_ab:
- sub r4,r7,r11
-
- lsr r8,r4,#7
- lsr r4,r4,#2
- and r4,r4,#31
- mov r12,#1
- lsl r4,r12,r4
- ldr r12,[r10,r8,lsl #2]
- orr r12,r12,r4
- str r12,[r10,r8,lsl #2]
-
- cmp r7,r6
+ sub BSTACK_0,ASTACK_1,ASTACK_3
+
+ lsr ASTACK_2,BSTACK_0,#7
+ lsr BSTACK_0,BSTACK_0,#2
+ and BSTACK_0,BSTACK_0,#31
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
+ ldr SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,BSTACK_0
+ str SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
+
+ cmp ASTACK_1,ASTACK_0
bhi rmark_hnf_1
- adds r4,r4,r4
+ adds BSTACK_0,BSTACK_0,BSTACK_0
bne rmark_bit_in_same_word2
- add r8,r8,#1
- mov r4,#1
+ add ASTACK_2,ASTACK_2,#1
+ mov BSTACK_0,#1
rmark_bit_in_same_word2:
- ldr r12,[r10,r8,lsl #2]
- tst r4,r12
+ ldr SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
+ tst BSTACK_0,SCRATCH_REG
beq rmark_not_yet_linked_ab
- sub r4,r6,r11
+ sub BSTACK_0,ASTACK_0,ASTACK_3
- add r4,r4,#4
- lsr r8,r4,#7
- lsr r4,r4,#2
- and r4,r4,#31
- mov r12,#1
- lsl r4,r12,r4
+ add BSTACK_0,BSTACK_0,#4
+ lsr ASTACK_2,BSTACK_0,#7
+ lsr BSTACK_0,BSTACK_0,#2
+ and BSTACK_0,BSTACK_0,#31
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
- ldr r12,[r10,r8,lsl #2]
+ ldr SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
rmark_not_yet_linked_ab:
- orr r12,r12,r4
- str r12,[r10,r8,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,BSTACK_0
+ str SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
- ldr r8,[r7]
- add r4,r6,#4+2+1
- str r8,[r6,#4]
- str r4,[r7]
+ ldr ASTACK_2,[ASTACK_1]
+ add BSTACK_0,ASTACK_0,#4+2+1
+ str ASTACK_2,[ASTACK_0,#4]
+ str BSTACK_0,[ASTACK_1]
b rmark_hnf_1
rmark_record_3_aab:
- cmp sp,r0
+ cmp sp,BSTACK_4
blo rmark_using_reversal_
- sub r4,r7,r11
+ sub BSTACK_0,ASTACK_1,ASTACK_3
- lsr r8,r4,#7
- lsr r4,r4,#2
- and r4,r4,#31
- mov r12,#1
- lsl r4,r12,r4
- ldr r12,[r10,r8,lsl #2]
- tst r4,r12
+ lsr ASTACK_2,BSTACK_0,#7
+ lsr BSTACK_0,BSTACK_0,#2
+ and BSTACK_0,BSTACK_0,#31
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
+ ldr SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
+ tst BSTACK_0,SCRATCH_REG
bne rmark_shared_argument_part
- ldr r12,[r10,r8,lsl #2]
- orr r12,r12,r4
- str r12,[r10,r8,lsl #2]
+ ldr SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,BSTACK_0
+ str SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
subs sp,sp,#8
- str r6,[sp,#4]
- add r9,r6,#4
- ldr r6,[r6]
- str r6,[sp]
+ str ASTACK_0,[sp,#4]
+ add ASTACK_PTR,ASTACK_0,#4
+ ldr ASTACK_0,[ASTACK_0]
+ str ASTACK_0,[sp]
- ldr r6,[r7]
+ ldr ASTACK_0,[ASTACK_1]
- cmp r7,r9
+ cmp ASTACK_1,ASTACK_PTR
bhi rmark_no_reverse_argument_pointer
- add r8,r9,#3
- str r6,[r9]
- str r8,[r7]
+ add ASTACK_2,ASTACK_PTR,#3
+ str ASTACK_0,[ASTACK_PTR]
+ str ASTACK_2,[ASTACK_1]
- sub r4,r6,r11
- cmp r4,r2
+ sub BSTACK_0,ASTACK_0,ASTACK_3
+ cmp BSTACK_0,BSTACK_2
bcs rmark_next_node
- mov r3,r7
+ mov BSTACK_1,ASTACK_1
b rmark_node_
rmark_record_2:
- ldrh r12,[r4,#-2+2]
- cmp r12,#1
+ ldrh SCRATCH_REG,[BSTACK_0,#-2+2]
+ cmp SCRATCH_REG,#1
bhi rmark_hnf_2
beq rmark_hnf_1
b rmark_next_node
rmark_record_1:
- ldrh r12,[r4,#-2+2]
- cmp r12,#0
+ ldrh SCRATCH_REG,[BSTACK_0,#-2+2]
+ cmp SCRATCH_REG,#0
bne rmark_hnf_1
b rmark_next_node
@@ -362,339 +361,339 @@ rmark_lazy_node_1:
bne rmark_selector_node_1
rmark_hnf_1:
- mov r9,r6
- ldr r6,[r6]
+ mov ASTACK_PTR,ASTACK_0
+ ldr ASTACK_0,[ASTACK_0]
b rmark_node
@ selectors
rmark_indirection_node:
- subs r6,r6,#4
- sub r7,r6,r11
-
- and r8,r7,#31*4
- lsr r7,r7,#7
- lsr r8,r8,#2
- mov r12,#1
- lsl r8,r12,r8
- ldr r12,[r10,r7,lsl #2]
- bic r12,r12,r8
- str r12,[r10,r7,lsl #2]
-
- mov r7,r6
- cmp r6,r3
- ldr r6,[r6,#4]
- str r6,[r9]
+ subs ASTACK_0,ASTACK_0,#4
+ sub ASTACK_1,ASTACK_0,ASTACK_3
+
+ and ASTACK_2,ASTACK_1,#31*4
+ lsr ASTACK_1,ASTACK_1,#7
+ lsr ASTACK_2,ASTACK_2,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_2,SCRATCH_REG,ASTACK_2
+ ldr SCRATCH_REG,[HEAP_PTR,ASTACK_1,lsl #2]
+ bic SCRATCH_REG,SCRATCH_REG,ASTACK_2
+ str SCRATCH_REG,[HEAP_PTR,ASTACK_1,lsl #2]
+
+ mov ASTACK_1,ASTACK_0
+ cmp ASTACK_0,BSTACK_1
+ ldr ASTACK_0,[ASTACK_0,#4]
+ str ASTACK_0,[ASTACK_PTR]
bhi rmark_node_d1
- str r4,[r7]
+ str BSTACK_0,[ASTACK_1]
b rmark_node_d1
rmark_selector_node_1:
- cmp r8,#(-2)-1
+ cmp ASTACK_2,#(-2)-1
beq rmark_indirection_node
- ldr r7,[r6]
- mov r1,r3
+ ldr ASTACK_1,[ASTACK_0]
+ mov BSTACK_3,BSTACK_1
- sub r3,r7,r11
- lsr r3,r3,#2
+ sub BSTACK_1,ASTACK_1,ASTACK_3
+ lsr BSTACK_1,BSTACK_1,#2
- cmp r8,#(-3)-1
+ cmp ASTACK_2,#(-3)-1
ble rmark_record_selector_node_1
- and r8,r3,#31
- lsr r3,r3,#5
- mov r12,#1
- lsl r8,r12,r8
- ldr r3,[r10,r3,lsl #2]
- and r3,r3,r8
+ and ASTACK_2,BSTACK_1,#31
+ lsr BSTACK_1,BSTACK_1,#5
+ mov SCRATCH_REG,#1
+ lsl ASTACK_2,SCRATCH_REG,ASTACK_2
+ ldr BSTACK_1,[HEAP_PTR,BSTACK_1,lsl #2]
+ and BSTACK_1,BSTACK_1,ASTACK_2
bne rmark_hnf_1
- ldr r3,[r7]
- tst r3,#2
+ ldr BSTACK_1,[ASTACK_1]
+ tst BSTACK_1,#2
beq rmark_hnf_1
- ldrh r12,[r3,#-2]
- cmp r12,#2
+ ldrh SCRATCH_REG,[BSTACK_1,#-2]
+ cmp SCRATCH_REG,#2
bls rmark_small_tuple_or_record
rmark_large_tuple_or_record:
- ldr r3,[r7,#8]
- sub r3,r3,r11
- lsr r3,r3,#2
-
- and r8,r3,#31
- lsr r3,r3,#5
- mov r12,#1
- lsl r8,r12,r8
- ldr r3,[r10,r3,lsl #2]
- and r3,r3,r8
+ ldr BSTACK_1,[ASTACK_1,#8]
+ sub BSTACK_1,BSTACK_1,ASTACK_3
+ lsr BSTACK_1,BSTACK_1,#2
+
+ and ASTACK_2,BSTACK_1,#31
+ lsr BSTACK_1,BSTACK_1,#5
+ mov SCRATCH_REG,#1
+ lsl ASTACK_2,SCRATCH_REG,ASTACK_2
+ ldr BSTACK_1,[HEAP_PTR,BSTACK_1,lsl #2]
+ and BSTACK_1,BSTACK_1,ASTACK_2
bne rmark_hnf_1
- add r12,r6,#-4
- sub r3,r12,r11
+ add SCRATCH_REG,ASTACK_0,#-4
+ sub BSTACK_1,SCRATCH_REG,ASTACK_3
- str r6,[sp,#-4]!
+ str ASTACK_0,[sp,#-4]!
.ifdef PIC
- add r12,r4,#-8+4
+ add SCRATCH_REG,BSTACK_0,#-8+4
.endif
- ldr r4,[r4,#-8]
+ ldr BSTACK_0,[BSTACK_0,#-8]
- and r6,r3,#31*4
- lsr r3,r3,#7
- lsr r6,r6,#2
+ and ASTACK_0,BSTACK_1,#31*4
+ lsr BSTACK_1,BSTACK_1,#7
+ lsr ASTACK_0,ASTACK_0,#2
.ifdef PIC
- ldrh r4,[r12,r4]
+ ldrh BSTACK_0,[SCRATCH_REG,BSTACK_0]
.endif
- mov r12,#1
- lsl r6,r12,r6
- ldr r12,[r10,r3,lsl #2]
- bic r12,r12,r6
- str r12,[r10,r3,lsl #2]
+ mov SCRATCH_REG,#1
+ lsl ASTACK_0,SCRATCH_REG,ASTACK_0
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ bic SCRATCH_REG,SCRATCH_REG,ASTACK_0
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
.ifndef PIC
- ldrh r4,[r4,#4]
+ ldrh BSTACK_0,[BSTACK_0,#4]
.endif
- mov r3,r1
+ mov BSTACK_1,BSTACK_3
- cmp r4,#8
+ cmp BSTACK_0,#8
blt rmark_tuple_or_record_selector_node_2
- ldr r7,[r7,#8]
+ ldr ASTACK_1,[ASTACK_1,#8]
beq rmark_tuple_selector_node_2
- add r6,r4,#-12
- ldr r6,[r7,r6]
- ldr r7,[sp],#4
- str r6,[r9]
- lao r12,e__system__nind,17
- otoa r12,e__system__nind,17
- str r12,[r7,#-4]
- str r6,[r7]
+ add ASTACK_0,BSTACK_0,#-12
+ ldr ASTACK_0,[ASTACK_1,ASTACK_0]
+ ldr ASTACK_1,[sp],#4
+ str ASTACK_0,[ASTACK_PTR]
+ lao SCRATCH_REG,e__system__nind,17
+ otoa SCRATCH_REG,e__system__nind,17
+ str SCRATCH_REG,[ASTACK_1,#-4]
+ str ASTACK_0,[ASTACK_1]
b rmark_node_d1
rmark_tuple_selector_node_2:
- ldr r6,[r7]
- ldr r7,[sp],#4
- str r6,[r9]
- lao r12,e__system__nind,18
- otoa r12,e__system__nind,18
- str r12,[r7,#-4]
- str r6,[r7]
+ ldr ASTACK_0,[ASTACK_1]
+ ldr ASTACK_1,[sp],#4
+ str ASTACK_0,[ASTACK_PTR]
+ lao SCRATCH_REG,e__system__nind,18
+ otoa SCRATCH_REG,e__system__nind,18
+ str SCRATCH_REG,[ASTACK_1,#-4]
+ str ASTACK_0,[ASTACK_1]
b rmark_node_d1
rmark_record_selector_node_1:
beq rmark_strict_record_selector_node_1
- and r8,r3,#31
- lsr r3,r3,#5
- mov r12,#1
- lsl r8,r12,r8
- ldr r3,[r10,r3,lsl #2]
- and r3,r3,r8
+ and ASTACK_2,BSTACK_1,#31
+ lsr BSTACK_1,BSTACK_1,#5
+ mov SCRATCH_REG,#1
+ lsl ASTACK_2,SCRATCH_REG,ASTACK_2
+ ldr BSTACK_1,[HEAP_PTR,BSTACK_1,lsl #2]
+ and BSTACK_1,BSTACK_1,ASTACK_2
bne rmark_hnf_1
- ldr r3,[r7]
- tst r3,#2
+ ldr BSTACK_1,[ASTACK_1]
+ tst BSTACK_1,#2
beq rmark_hnf_1
- ldrh r12,[r3,#-2]
- mov r3,#258/2
- cmp r12,r3,lsl #1
+ ldrh SCRATCH_REG,[BSTACK_1,#-2]
+ mov BSTACK_1,#258/2
+ cmp SCRATCH_REG,BSTACK_1,lsl #1
bls rmark_small_tuple_or_record
- ldr r3,[r7,#8]
- sub r3,r3,r11
- lsr r3,r3,#2
+ ldr BSTACK_1,[ASTACK_1,#8]
+ sub BSTACK_1,BSTACK_1,ASTACK_3
+ lsr BSTACK_1,BSTACK_1,#2
- and r8,r3,#31
- lsr r3,r3,#5
- mov r12,#1
- lsl r8,r12,r8
- ldr r3,[r10,r3,lsl #2]
- and r3,r3,r8
+ and ASTACK_2,BSTACK_1,#31
+ lsr BSTACK_1,BSTACK_1,#5
+ mov SCRATCH_REG,#1
+ lsl ASTACK_2,SCRATCH_REG,ASTACK_2
+ ldr BSTACK_1,[HEAP_PTR,BSTACK_1,lsl #2]
+ and BSTACK_1,BSTACK_1,ASTACK_2
bne rmark_hnf_1
rmark_small_tuple_or_record:
- add r12,r6,#-4
- sub r3,r12,r11
+ add SCRATCH_REG,ASTACK_0,#-4
+ sub BSTACK_1,SCRATCH_REG,ASTACK_3
- str r6,[sp,#-4]!
+ str ASTACK_0,[sp,#-4]!
.ifdef PIC
- add r12,r4,#-8+4
+ add SCRATCH_REG,BSTACK_0,#-8+4
.endif
- ldr r4,[r4,#-8]
+ ldr BSTACK_0,[BSTACK_0,#-8]
- and r6,r3,#31*4
- lsr r3,r3,#7
- lsr r6,r6,#2
+ and ASTACK_0,BSTACK_1,#31*4
+ lsr BSTACK_1,BSTACK_1,#7
+ lsr ASTACK_0,ASTACK_0,#2
.ifdef PIC
- ldrh r4,[r12,r4]
+ ldrh BSTACK_0,[SCRATCH_REG,BSTACK_0]
.endif
- mov r12,#1
- lsl r6,r12,r6
- ldr r12,[r10,r3,lsl #2]
- bic r12,r12,r6
- str r12,[r10,r3,lsl #2]
+ mov SCRATCH_REG,#1
+ lsl ASTACK_0,SCRATCH_REG,ASTACK_0
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ bic SCRATCH_REG,SCRATCH_REG,ASTACK_0
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
.ifndef PIC
- ldrh r4,[r4,#4]
+ ldrh BSTACK_0,[BSTACK_0,#4]
.endif
- mov r3,r1
+ mov BSTACK_1,BSTACK_3
- cmp r4,#8
+ cmp BSTACK_0,#8
ble rmark_tuple_or_record_selector_node_2
- ldr r7,[r7,#8]
- subs r4,r4,#12
+ ldr ASTACK_1,[ASTACK_1,#8]
+ subs BSTACK_0,BSTACK_0,#12
rmark_tuple_or_record_selector_node_2:
- ldr r6,[r7,r4]
- ldr r7,[sp],#4
- str r6,[r9]
- lao r12,e__system__nind,19
- otoa r12,e__system__nind,19
- str r12,[r7,#-4]
- str r6,[r7]
+ ldr ASTACK_0,[ASTACK_1,BSTACK_0]
+ ldr ASTACK_1,[sp],#4
+ str ASTACK_0,[ASTACK_PTR]
+ lao SCRATCH_REG,e__system__nind,19
+ otoa SCRATCH_REG,e__system__nind,19
+ str SCRATCH_REG,[ASTACK_1,#-4]
+ str ASTACK_0,[ASTACK_1]
b rmark_node_d1
rmark_strict_record_selector_node_1:
- and r8,r3,#31
- lsr r3,r3,#5
- mov r12,#1
- lsl r8,r12,r8
- ldr r3,[r10,r3,lsl #2]
- and r3,r3,r8
+ and ASTACK_2,BSTACK_1,#31
+ lsr BSTACK_1,BSTACK_1,#5
+ mov SCRATCH_REG,#1
+ lsl ASTACK_2,SCRATCH_REG,ASTACK_2
+ ldr BSTACK_1,[HEAP_PTR,BSTACK_1,lsl #2]
+ and BSTACK_1,BSTACK_1,ASTACK_2
bne rmark_hnf_1
- ldr r3,[r7]
- tst r3,#2
+ ldr BSTACK_1,[ASTACK_1]
+ tst BSTACK_1,#2
beq rmark_hnf_1
- ldrh r12,[r3,#-2]
- mov r3,#258/2
- cmp r12,r3,lsl #1
+ ldrh SCRATCH_REG,[BSTACK_1,#-2]
+ mov BSTACK_1,#258/2
+ cmp SCRATCH_REG,BSTACK_1,lsl #1
bls rmark_select_from_small_record
- ldr r3,[r7,#8]
- sub r3,r3,r11
+ ldr BSTACK_1,[ASTACK_1,#8]
+ sub BSTACK_1,BSTACK_1,ASTACK_3
- and r8,r3,#31*4
- lsr r3,r3,#7
- lsr r8,r8,#2
- mov r12,#1
- lsl r8,r12,r8
- ldr r3,[r10,r3,lsl #2]
- and r3,r3,r8
+ and ASTACK_2,BSTACK_1,#31*4
+ lsr BSTACK_1,BSTACK_1,#7
+ lsr ASTACK_2,ASTACK_2,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_2,SCRATCH_REG,ASTACK_2
+ ldr BSTACK_1,[HEAP_PTR,BSTACK_1,lsl #2]
+ and BSTACK_1,BSTACK_1,ASTACK_2
bne rmark_hnf_1
rmark_select_from_small_record:
- ldr r3,[r4,#-8]
+ ldr BSTACK_1,[BSTACK_0,#-8]
.ifdef PIC
- add r12,r4,#-8+4
+ add SCRATCH_REG,BSTACK_0,#-8+4
.endif
- subs r6,r6,#4
+ subs ASTACK_0,ASTACK_0,#4
- cmp r6,r1
+ cmp ASTACK_0,BSTACK_3
bhi rmark_selector_pointer_not_reversed
.ifdef PIC
- ldrh r4,[r3,r12]!
+ ldrh BSTACK_0,[BSTACK_1,SCRATCH_REG]!
.else
- ldrh r4,[r3,#4]
+ ldrh BSTACK_0,[BSTACK_1,#4]
.endif
- cmp r4,#8
+ cmp BSTACK_0,#8
ble rmark_strict_record_selector_node_2
- ldr r12,[r7,#8]
- add r4,r4,r12
- ldr r4,[r4,#-12]
+ ldr SCRATCH_REG,[ASTACK_1,#8]
+ add BSTACK_0,BSTACK_0,SCRATCH_REG
+ ldr BSTACK_0,[BSTACK_0,#-12]
b rmark_strict_record_selector_node_3
rmark_strict_record_selector_node_2:
- ldr r4,[r7,r4]
+ ldr BSTACK_0,[ASTACK_1,BSTACK_0]
rmark_strict_record_selector_node_3:
- str r4,[r6,#4]
+ str BSTACK_0,[ASTACK_0,#4]
.ifdef PIC
- ldrh r4,[r3,#6-4]
+ ldrh BSTACK_0,[BSTACK_1,#6-4]
.else
- ldrh r4,[r3,#6]
+ ldrh BSTACK_0,[BSTACK_1,#6]
.endif
- tst r4,r4
+ tst BSTACK_0,BSTACK_0
beq rmark_strict_record_selector_node_5
- cmp r4,#8
+ cmp BSTACK_0,#8
ble rmark_strict_record_selector_node_4
- ldr r7,[r7,#8]
- sub r4,r4,#12
+ ldr ASTACK_1,[ASTACK_1,#8]
+ sub BSTACK_0,BSTACK_0,#12
rmark_strict_record_selector_node_4:
- ldr r4,[r7,r4]
- str r4,[r6,#8]
+ ldr BSTACK_0,[ASTACK_1,BSTACK_0]
+ str BSTACK_0,[ASTACK_0,#8]
rmark_strict_record_selector_node_5:
.ifdef PIC
- ldr r4,[r3,#-4-4]
+ ldr BSTACK_0,[BSTACK_1,#-4-4]
.else
- ldr r4,[r3,#-4]
+ ldr BSTACK_0,[BSTACK_1,#-4]
.endif
- add r9,r9,#1
- str r9,[r6]
- str r4,[r9,#-1]
+ add ASTACK_PTR,ASTACK_PTR,#1
+ str ASTACK_PTR,[ASTACK_0]
+ str BSTACK_0,[ASTACK_PTR,#-1]
b rmark_next_node
rmark_selector_pointer_not_reversed:
.ifdef PIC
- ldrh r4,[r3,r12]!
+ ldrh BSTACK_0,[BSTACK_1,SCRATCH_REG]!
.else
- ldrh r4,[r3,#4]
+ ldrh BSTACK_0,[BSTACK_1,#4]
.endif
- cmp r4,#8
+ cmp BSTACK_0,#8
ble rmark_strict_record_selector_node_6
- ldr r12,[r7,#8]
- add r4,r4,r12
- ldr r4,[r4,#-12]
+ ldr SCRATCH_REG,[ASTACK_1,#8]
+ add BSTACK_0,BSTACK_0,SCRATCH_REG
+ ldr BSTACK_0,[BSTACK_0,#-12]
b rmark_strict_record_selector_node_7
rmark_strict_record_selector_node_6:
- ldr r4,[r7,r4]
+ ldr BSTACK_0,[ASTACK_1,BSTACK_0]
rmark_strict_record_selector_node_7:
- str r4,[r6,#4]
+ str BSTACK_0,[ASTACK_0,#4]
.ifdef PIC
- ldrh r4,[r3,#6-4]
+ ldrh BSTACK_0,[BSTACK_1,#6-4]
.else
- ldrh r4,[r3,#6]
+ ldrh BSTACK_0,[BSTACK_1,#6]
.endif
- tst r4,r4
+ tst BSTACK_0,BSTACK_0
beq rmark_strict_record_selector_node_9
- cmp r4,#8
+ cmp BSTACK_0,#8
ble rmark_strict_record_selector_node_8
- ldr r7,[r7,#8]
- subs r4,r4,#12
+ ldr ASTACK_1,[ASTACK_1,#8]
+ subs BSTACK_0,BSTACK_0,#12
rmark_strict_record_selector_node_8:
- ldr r4,[r7,r4]
- str r4,[r6,#8]
+ ldr BSTACK_0,[ASTACK_1,BSTACK_0]
+ str BSTACK_0,[ASTACK_0,#8]
rmark_strict_record_selector_node_9:
.ifdef PIC
- ldr r4,[r3,#-4-4]
+ ldr BSTACK_0,[BSTACK_1,#-4-4]
.else
- ldr r4,[r3,#-4]
+ ldr BSTACK_0,[BSTACK_1,#-4]
.endif
- str r4,[r6]
+ str BSTACK_0,[ASTACK_0]
b rmark_next_node
rmark_reverse_and_mark_next_node:
- cmp r6,r3
+ cmp ASTACK_0,BSTACK_1
bhi rmark_next_node
- ldr r4,[r6]
- str r4,[r9]
- add r9,r9,#1
- str r9,[r6]
+ ldr BSTACK_0,[ASTACK_0]
+ str BSTACK_0,[ASTACK_PTR]
+ add ASTACK_PTR,ASTACK_PTR,#1
+ str ASTACK_PTR,[ASTACK_0]
@ a2,d1: free
rmark_next_node:
- ldr r6,[sp]
- ldr r9,[sp,#4]
+ ldr ASTACK_0,[sp]
+ ldr ASTACK_PTR,[sp,#4]
add sp,sp,#8
- cmp r6,#1
+ cmp ASTACK_0,#1
bhi rmark_node
rmark_next_node_:
@@ -702,33 +701,33 @@ end_rmark_nodes:
ldr pc,[sp],#4
rmark_lazy_node:
- ldr r8,[r4,#-5]
- cmp r8,#0
+ ldr ASTACK_2,[BSTACK_0,#-5]
+ cmp ASTACK_2,#0
beq rmark_next_node
- add r6,r6,#4
+ add ASTACK_0,ASTACK_0,#4
- subs r8,r8,#1
+ subs ASTACK_2,ASTACK_2,#1
ble rmark_lazy_node_1
- cmp r8,#255
+ cmp ASTACK_2,#255
bge rmark_closure_with_unboxed_arguments
rmark_closure_with_unboxed_arguments_:
- add r6,r6,r8,lsl #2
+ add ASTACK_0,ASTACK_0,ASTACK_2,lsl #2
rmark_push_lazy_args:
- ldr r3,[r6]
+ ldr BSTACK_1,[ASTACK_0]
sub sp,sp,#8
- str r6,[sp,#4]
- sub r6,r6,#4
- str r3,[sp]
- subs r8,r8,#1
+ str ASTACK_0,[sp,#4]
+ sub ASTACK_0,ASTACK_0,#4
+ str BSTACK_1,[sp]
+ subs ASTACK_2,ASTACK_2,#1
bgt rmark_push_lazy_args
- mov r9,r6
- ldr r6,[r6]
- cmp sp,r0
+ mov ASTACK_PTR,ASTACK_0
+ ldr ASTACK_0,[ASTACK_0]
+ cmp sp,BSTACK_4
bhs rmark_node
b rmark_using_reversal
@@ -736,247 +735,247 @@ rmark_push_lazy_args:
rmark_closure_with_unboxed_arguments:
@ (a_size+b_size)+(b_size<<8)
@ addl $1,a2
- mov r4,r8
- and r8,r8,#255
- lsr r4,r4,#8
- subs r8,r8,r4
+ mov BSTACK_0,ASTACK_2
+ and ASTACK_2,ASTACK_2,#255
+ lsr BSTACK_0,BSTACK_0,#8
+ subs ASTACK_2,ASTACK_2,BSTACK_0
@ subl $1,a2
bgt rmark_closure_with_unboxed_arguments_
beq rmark_hnf_1
b rmark_next_node
rmark_hnf_0:
- laol r12,INT+2,INT_o_2,11
- otoa r12,INT_o_2,11
- cmp r4,r12
+ laol SCRATCH_REG,INT+2,INT_o_2,11
+ otoa SCRATCH_REG,INT_o_2,11
+ cmp BSTACK_0,SCRATCH_REG
beq rmark_int_3
- laol r12,CHAR+2,CHAR_o_2,6
- otoa r12,CHAR_o_2,6
- cmp r4,r12
+ laol SCRATCH_REG,CHAR+2,CHAR_o_2,6
+ otoa SCRATCH_REG,CHAR_o_2,6
+ cmp BSTACK_0,SCRATCH_REG
beq rmark_char_3
blo rmark_no_normal_hnf_0
- sub r8,r6,r11
+ sub ASTACK_2,ASTACK_0,ASTACK_3
- and r7,r8,#31*4
- lsr r8,r8,#7
- lsr r7,r7,#2
- mov r12,#1
- lsl r7,r12,r7
- ldr r12,[r10,r8,lsl #2]
- bic r12,r12,r7
- str r12,[r10,r8,lsl #2]
+ and ASTACK_1,ASTACK_2,#31*4
+ lsr ASTACK_2,ASTACK_2,#7
+ lsr ASTACK_1,ASTACK_1,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_1,SCRATCH_REG,ASTACK_1
+ ldr SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
+ bic SCRATCH_REG,SCRATCH_REG,ASTACK_1
+ str SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
- add r7,r4,#ZERO_ARITY_DESCRIPTOR_OFFSET-2
- str r7,[r9]
- cmp r6,r3
+ add ASTACK_1,BSTACK_0,#ZERO_ARITY_DESCRIPTOR_OFFSET-2
+ str ASTACK_1,[ASTACK_PTR]
+ cmp ASTACK_0,BSTACK_1
bhi rmark_next_node
- str r4,[r6]
+ str BSTACK_0,[ASTACK_0]
b rmark_next_node
rmark_int_3:
- ldr r8,[r6,#4]
- cmp r8,#33
+ ldr ASTACK_2,[ASTACK_0,#4]
+ cmp ASTACK_2,#33
bcs rmark_next_node
- lao r12,small_integers,3
- otoa r12,small_integers,3
- add r7,r12,r8,lsl #3
- str r7,[r9]
- sub r8,r6,r11
-
- and r7,r8,#31*4
- lsr r8,r8,#7
- lsr r7,r7,#2
- mov r12,#1
- lsl r7,r12,r7
- ldr r12,[r10,r8,lsl #2]
- bic r12,r12,r7
- str r12,[r10,r8,lsl #2]
-
- cmp r6,r3
+ lao SCRATCH_REG,small_integers,3
+ otoa SCRATCH_REG,small_integers,3
+ add ASTACK_1,SCRATCH_REG,ASTACK_2,lsl #3
+ str ASTACK_1,[ASTACK_PTR]
+ sub ASTACK_2,ASTACK_0,ASTACK_3
+
+ and ASTACK_1,ASTACK_2,#31*4
+ lsr ASTACK_2,ASTACK_2,#7
+ lsr ASTACK_1,ASTACK_1,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_1,SCRATCH_REG,ASTACK_1
+ ldr SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
+ bic SCRATCH_REG,SCRATCH_REG,ASTACK_1
+ str SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
+
+ cmp ASTACK_0,BSTACK_1
bhi rmark_next_node
- str r4,[r6]
+ str BSTACK_0,[ASTACK_0]
b rmark_next_node
rmark_char_3:
- ldrb r7,[r6,#4]
+ ldrb ASTACK_1,[ASTACK_0,#4]
- lao r12,static_characters,3
- otoa r12,static_characters,3
- add r7,r12,r7,lsl #3
- sub r8,r6,r11
+ lao SCRATCH_REG,static_characters,3
+ otoa SCRATCH_REG,static_characters,3
+ add ASTACK_1,SCRATCH_REG,ASTACK_1,lsl #3
+ sub ASTACK_2,ASTACK_0,ASTACK_3
- str r7,[r9]
+ str ASTACK_1,[ASTACK_PTR]
- and r7,r8,#31*4
- lsr r8,r8,#7
- lsr r7,r7,#2
- mov r12,#1
- lsl r7,r12,r7
- ldr r12,[r10,r8,lsl #2]
- bic r12,r12,r7
- str r12,[r10,r8,lsl #2]
+ and ASTACK_1,ASTACK_2,#31*4
+ lsr ASTACK_2,ASTACK_2,#7
+ lsr ASTACK_1,ASTACK_1,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_1,SCRATCH_REG,ASTACK_1
+ ldr SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
+ bic SCRATCH_REG,SCRATCH_REG,ASTACK_1
+ str SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
- cmp r6,r3
+ cmp ASTACK_0,BSTACK_1
bhi rmark_next_node
- str r4,[r6]
+ str BSTACK_0,[ASTACK_0]
b rmark_next_node
rmark_no_normal_hnf_0:
- laol r12,__ARRAY__+2,__ARRAY___o_2,17
- otoa r12,__ARRAY___o_2,17
- cmp r4,r12
+ laol SCRATCH_REG,__ARRAY__+2,__ARRAY___o_2,17
+ otoa SCRATCH_REG,__ARRAY___o_2,17
+ cmp BSTACK_0,SCRATCH_REG
bne rmark_next_node
- ldr r4,[r6,#8]
- tst r4,r4
+ ldr BSTACK_0,[ASTACK_0,#8]
+ tst BSTACK_0,BSTACK_0
beq rmark_lazy_array
- ldrh r7,[r4,#-3+2]
- tst r7,r7
+ ldrh ASTACK_1,[BSTACK_0,#-3+2]
+ tst ASTACK_1,ASTACK_1
beq rmark_b_array
- ldrh r4,[r4,#-3]
- tst r4,r4
+ ldrh BSTACK_0,[BSTACK_0,#-3]
+ tst BSTACK_0,BSTACK_0
beq rmark_b_array
- cmp sp,r0
+ cmp sp,BSTACK_4
blo rmark_array_using_reversal
- subs r4,r4,#256
- cmp r7,r4
- mov r3,r7
+ subs BSTACK_0,BSTACK_0,#256
+ cmp ASTACK_1,BSTACK_0
+ mov BSTACK_1,ASTACK_1
beq rmark_a_record_array
rmark_ab_record_array:
- ldr r7,[r6,#4]
- add r6,r6,#8
- str r6,[sp,#-4]!
+ ldr ASTACK_1,[ASTACK_0,#4]
+ add ASTACK_0,ASTACK_0,#8
+ str ASTACK_0,[sp,#-4]!
- mul r7,r4,r7
- lsl r7,r7,#2
+ mul ASTACK_1,BSTACK_0,ASTACK_1
+ lsl ASTACK_1,ASTACK_1,#2
- subs r4,r4,r3
- add r6,r6,#4
- add r7,r7,r6
+ subs BSTACK_0,BSTACK_0,BSTACK_1
+ add ASTACK_0,ASTACK_0,#4
+ add ASTACK_1,ASTACK_1,ASTACK_0
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl reorder
- ldr r6,[sp],#4
- mov r4,r3
- ldr r12,[r6,#-4]
- mul r4,r12,r4
+ ldr ASTACK_0,[sp],#4
+ mov BSTACK_0,BSTACK_1
+ ldr SCRATCH_REG,[ASTACK_0,#-4]
+ mul BSTACK_0,SCRATCH_REG,BSTACK_0
b rmark_lr_array
rmark_b_array:
- sub r4,r6,r11
-
- add r4,r4,#4
- lsr r8,r4,#7
- lsr r4,r4,#2
- and r4,r4,#31
- mov r12,#1
- lsl r4,r12,r4
- ldr r12,[r10,r8,lsl #2]
- orr r12,r12,r4
- str r12,[r10,r8,lsl #2]
+ sub BSTACK_0,ASTACK_0,ASTACK_3
+
+ add BSTACK_0,BSTACK_0,#4
+ lsr ASTACK_2,BSTACK_0,#7
+ lsr BSTACK_0,BSTACK_0,#2
+ and BSTACK_0,BSTACK_0,#31
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
+ ldr SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,BSTACK_0
+ str SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
b rmark_next_node
rmark_a_record_array:
- ldr r4,[r6,#4]
- add r6,r6,#8
- cmp r3,#2
+ ldr BSTACK_0,[ASTACK_0,#4]
+ add ASTACK_0,ASTACK_0,#8
+ cmp BSTACK_1,#2
blo rmark_lr_array
- mul r4,r3,r4
+ mul BSTACK_0,BSTACK_1,BSTACK_0
b rmark_lr_array
rmark_lazy_array:
- cmp sp,r0
+ cmp sp,BSTACK_4
blo rmark_array_using_reversal
- ldr r4,[r6,#4]
- add r6,r6,#8
+ ldr BSTACK_0,[ASTACK_0,#4]
+ add ASTACK_0,ASTACK_0,#8
rmark_lr_array:
- sub r3,r6,r11
- lsr r3,r3,#2
- add r3,r3,r4
-
- lsr r7,r3,#5
- and r3,r3,#31
- mov r12,#1
- lsl r3,r12,r3
- ldr r12,[r10,r7,lsl #2]
- orr r12,r12,r3
- str r12,[r10,r7,lsl #2]
-
- cmp r4,#1
+ sub BSTACK_1,ASTACK_0,ASTACK_3
+ lsr BSTACK_1,BSTACK_1,#2
+ add BSTACK_1,BSTACK_1,BSTACK_0
+
+ lsr ASTACK_1,BSTACK_1,#5
+ and BSTACK_1,BSTACK_1,#31
+ mov SCRATCH_REG,#1
+ lsl BSTACK_1,SCRATCH_REG,BSTACK_1
+ ldr SCRATCH_REG,[HEAP_PTR,ASTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,BSTACK_1
+ str SCRATCH_REG,[HEAP_PTR,ASTACK_1,lsl #2]
+
+ cmp BSTACK_0,#1
bls rmark_array_length_0_1
- mov r7,r6
- add r6,r6,r4,lsl #2
-
- ldr r4,[r6]
- ldr r3,[r7]
- str r4,[r7]
- str r3,[r6]
-
- ldr r4,[r6,#-4]!
- ldr r3,[r7,#-4]!
- str r3,[r6]
- str r4,[r7]
- str r6,[sp,#-4]!
- mov r9,r7
+ mov ASTACK_1,ASTACK_0
+ add ASTACK_0,ASTACK_0,BSTACK_0,lsl #2
+
+ ldr BSTACK_0,[ASTACK_0]
+ ldr BSTACK_1,[ASTACK_1]
+ str BSTACK_0,[ASTACK_1]
+ str BSTACK_1,[ASTACK_0]
+
+ ldr BSTACK_0,[ASTACK_0,#-4]!
+ ldr BSTACK_1,[ASTACK_1,#-4]!
+ str BSTACK_1,[ASTACK_0]
+ str BSTACK_0,[ASTACK_1]
+ str ASTACK_0,[sp,#-4]!
+ mov ASTACK_PTR,ASTACK_1
b rmark_array_nodes
rmark_array_nodes1:
- cmp r6,r9
+ cmp ASTACK_0,ASTACK_PTR
bhi rmark_next_array_node
- ldr r3,[r6]
- add r4,r9,#1
- str r3,[r9]
- str r4,[r6]
+ ldr BSTACK_1,[ASTACK_0]
+ add BSTACK_0,ASTACK_PTR,#1
+ str BSTACK_1,[ASTACK_PTR]
+ str BSTACK_0,[ASTACK_0]
rmark_next_array_node:
- add r9,r9,#4
- ldr r12,[sp]
- cmp r9,r12
+ add ASTACK_PTR,ASTACK_PTR,#4
+ ldr SCRATCH_REG,[sp]
+ cmp ASTACK_PTR,SCRATCH_REG
beq end_rmark_array_node
rmark_array_nodes:
- ldr r6,[r9]
+ ldr ASTACK_0,[ASTACK_PTR]
- sub r4,r6,r11
- cmp r4,r2
+ sub BSTACK_0,ASTACK_0,ASTACK_3
+ cmp BSTACK_0,BSTACK_2
bcs rmark_next_array_node
- lsr r3,r4,#7
- lsr r4,r4,#2
- and r4,r4,#31
- mov r12,#1
- lsl r4,r12,r4
- ldr r8,[r10,r3,lsl #2]
- tst r8,r4
+ lsr BSTACK_1,BSTACK_0,#7
+ lsr BSTACK_0,BSTACK_0,#2
+ and BSTACK_0,BSTACK_0,#31
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
+ ldr ASTACK_2,[HEAP_PTR,BSTACK_1,lsl #2]
+ tst ASTACK_2,BSTACK_0
bne rmark_array_nodes1
- orr r8,r8,r4
- str r8,[r10,r3,lsl #2]
+ orr ASTACK_2,ASTACK_2,BSTACK_0
+ str ASTACK_2,[HEAP_PTR,BSTACK_1,lsl #2]
- ldr r4,[r6]
+ ldr BSTACK_0,[ASTACK_0]
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl rmark_array_node
- add r9,r9,#4
- ldr r12,[sp]
- cmp r9,r12
+ add ASTACK_PTR,ASTACK_PTR,#4
+ ldr SCRATCH_REG,[sp]
+ cmp ASTACK_PTR,SCRATCH_REG
bne rmark_array_nodes
end_rmark_array_node:
@@ -985,23 +984,23 @@ end_rmark_array_node:
rmark_array_node:
sub sp,sp,#8
- str r9,[sp,#4]
- mov r3,r9
- mov r12,#1
- str r12,[sp]
+ str ASTACK_PTR,[sp,#4]
+ mov BSTACK_1,ASTACK_PTR
+ mov SCRATCH_REG,#1
+ str SCRATCH_REG,[sp]
b rmark_arguments
rmark_array_length_0_1:
- add r6,r6,#-8
+ add ASTACK_0,ASTACK_0,#-8
blo rmark_next_node
- ldr r3,[r6,#12]
- ldr r8,[r6,#8]
- str r8,[r6,#12]
- ldr r8,[r6,#4]
- str r8,[r6,#8]
- str r3,[r6,#4]
- add r6,r6,#4
+ ldr BSTACK_1,[ASTACK_0,#12]
+ ldr ASTACK_2,[ASTACK_0,#8]
+ str ASTACK_2,[ASTACK_0,#12]
+ ldr ASTACK_2,[ASTACK_0,#4]
+ str ASTACK_2,[ASTACK_0,#8]
+ str BSTACK_1,[ASTACK_0,#4]
+ add ASTACK_0,ASTACK_0,#4
b rmark_hnf_1
.ifdef PIC
diff --git a/thumb2compact_rmarkr.s b/thumb2compact_rmarkr.s
index d684e3f..3256ca1 100644
--- a/thumb2compact_rmarkr.s
+++ b/thumb2compact_rmarkr.s
@@ -1,275 +1,274 @@
-
ZERO_ARITY_DESCRIPTOR_OFFSET = -4
NO_BIT_INSTRUCTIONS = 1
rmark_using_reversal:
- str r9,[sp,#-4]!
- str r9,[sp,#-4]!
- mov r9,#1
+ str ASTACK_PTR,[sp,#-4]!
+ str ASTACK_PTR,[sp,#-4]!
+ mov ASTACK_PTR,#1
b rmarkr_node
rmark_using_reversal_:
- subs r6,r6,#4
- str r3,[sp,#-4]!
- str r9,[sp,#-4]!
- cmp r6,r3
+ subs ASTACK_0,ASTACK_0,#4
+ str BSTACK_1,[sp,#-4]!
+ str ASTACK_PTR,[sp,#-4]!
+ cmp ASTACK_0,BSTACK_1
bhi rmark_no_undo_reverse_1
- str r6,[r9]
- str r4,[r6]
+ str ASTACK_0,[ASTACK_PTR]
+ str BSTACK_0,[ASTACK_0]
rmark_no_undo_reverse_1:
- mov r9,#1
+ mov ASTACK_PTR,#1
b rmarkr_arguments
rmark_array_using_reversal:
- str r3,[sp,#-4]!
- str r9,[sp,#-4]!
- cmp r6,r3
+ str BSTACK_1,[sp,#-4]!
+ str ASTACK_PTR,[sp,#-4]!
+ cmp ASTACK_0,BSTACK_1
bhi rmark_no_undo_reverse_2
- str r6,[r9]
- laol r12,__ARRAY__+2,__ARRAY___o_2,18
- otoa r12,__ARRAY___o_2,18
- str r12,[r6]
+ str ASTACK_0,[ASTACK_PTR]
+ laol SCRATCH_REG,__ARRAY__+2,__ARRAY___o_2,18
+ otoa SCRATCH_REG,__ARRAY___o_2,18
+ str SCRATCH_REG,[ASTACK_0]
rmark_no_undo_reverse_2:
- mov r9,#1
+ mov ASTACK_PTR,#1
b rmarkr_arguments
rmarkr_hnf_2:
- ldr r12,[r6]
- orr r12,r12,#2
- str r12,[r6]
- ldr r8,[r6,#4]
- str r9,[r6,#4]
- add r9,r6,#4
- mov r6,r8
+ ldr SCRATCH_REG,[ASTACK_0]
+ orr SCRATCH_REG,SCRATCH_REG,#2
+ str SCRATCH_REG,[ASTACK_0]
+ ldr ASTACK_2,[ASTACK_0,#4]
+ str ASTACK_PTR,[ASTACK_0,#4]
+ add ASTACK_PTR,ASTACK_0,#4
+ mov ASTACK_0,ASTACK_2
rmarkr_node:
- sub r4,r6,r11
- cmp r4,r2
+ sub BSTACK_0,ASTACK_0,ASTACK_3
+ cmp BSTACK_0,BSTACK_2
bhs rmarkr_next_node_after_static
- lsr r3,r4,#7
- lsr r4,r4,#2
- and r4,r4,#31
- mov r12,#1
- lsl r4,r12,r4
- ldr r8,[r10,r3,lsl #2]
- tst r8,r4
+ lsr BSTACK_1,BSTACK_0,#7
+ lsr BSTACK_0,BSTACK_0,#2
+ and BSTACK_0,BSTACK_0,#31
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
+ ldr ASTACK_2,[HEAP_PTR,BSTACK_1,lsl #2]
+ tst ASTACK_2,BSTACK_0
bne rmarkr_next_node
- orr r8,r8,r4
- str r8,[r10,r3,lsl #2]
+ orr ASTACK_2,ASTACK_2,BSTACK_0
+ str ASTACK_2,[HEAP_PTR,BSTACK_1,lsl #2]
rmarkr_arguments:
- ldr r4,[r6]
- tst r4,#2
+ ldr BSTACK_0,[ASTACK_0]
+ tst BSTACK_0,#2
beq rmarkr_lazy_node
- ldrh r8,[r4,#-2]
- tst r8,r8
+ ldrh ASTACK_2,[BSTACK_0,#-2]
+ tst ASTACK_2,ASTACK_2
beq rmarkr_hnf_0
- add r6,r6,#4
+ add ASTACK_0,ASTACK_0,#4
- cmp r8,#256
+ cmp ASTACK_2,#256
bhs rmarkr_record
- subs r8,r8,#2
+ subs ASTACK_2,ASTACK_2,#2
beq rmarkr_hnf_2
blo rmarkr_hnf_1
rmarkr_hnf_3:
- ldr r7,[r6,#4]
+ ldr ASTACK_1,[ASTACK_0,#4]
- sub r4,r7,r11
+ sub BSTACK_0,ASTACK_1,ASTACK_3
- lsr r3,r4,#7
- lsr r4,r4,#2
- and r4,r4,#31
- mov r12,#1
- lsl r4,r12,r4
- ldr r12,[r10,r3,lsl #2]
- tst r4,r12
+ lsr BSTACK_1,BSTACK_0,#7
+ lsr BSTACK_0,BSTACK_0,#2
+ and BSTACK_0,BSTACK_0,#31
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ tst BSTACK_0,SCRATCH_REG
bne rmarkr_shared_argument_part
- orr r12,r12,r4
- str r12,[r10,r3,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,BSTACK_0
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
rmarkr_no_shared_argument_part:
- ldr r12,[r6]
- orr r12,r12,#2
- str r12,[r6]
- str r9,[r6,#4]
- add r6,r6,#4
-
- ldr r12,[r7]
- orr r12,r12,#1
- str r12,[r7]
- add r7,r7,r8,lsl #2
-
- ldr r8,[r7]
- str r6,[r7]
- mov r9,r7
- mov r6,r8
+ ldr SCRATCH_REG,[ASTACK_0]
+ orr SCRATCH_REG,SCRATCH_REG,#2
+ str SCRATCH_REG,[ASTACK_0]
+ str ASTACK_PTR,[ASTACK_0,#4]
+ add ASTACK_0,ASTACK_0,#4
+
+ ldr SCRATCH_REG,[ASTACK_1]
+ orr SCRATCH_REG,SCRATCH_REG,#1
+ str SCRATCH_REG,[ASTACK_1]
+ add ASTACK_1,ASTACK_1,ASTACK_2,lsl #2
+
+ ldr ASTACK_2,[ASTACK_1]
+ str ASTACK_0,[ASTACK_1]
+ mov ASTACK_PTR,ASTACK_1
+ mov ASTACK_0,ASTACK_2
b rmarkr_node
rmarkr_shared_argument_part:
- cmp r7,r6
+ cmp ASTACK_1,ASTACK_0
bhi rmarkr_hnf_1
- ldr r3,[r7]
- add r4,r6,#4+2+1
- str r4,[r7]
- str r3,[r6,#4]
+ ldr BSTACK_1,[ASTACK_1]
+ add BSTACK_0,ASTACK_0,#4+2+1
+ str BSTACK_0,[ASTACK_1]
+ str BSTACK_1,[ASTACK_0,#4]
b rmarkr_hnf_1
rmarkr_record:
- mov r12,#258/2
- subs r8,r8,r12,lsl #1
+ mov SCRATCH_REG,#258/2
+ subs ASTACK_2,ASTACK_2,SCRATCH_REG,lsl #1
beq rmarkr_record_2
blo rmarkr_record_1
rmarkr_record_3:
- ldrh r8,[r4,#-2+2]
- subs r8,r8,#1
+ ldrh ASTACK_2,[BSTACK_0,#-2+2]
+ subs ASTACK_2,ASTACK_2,#1
blo rmarkr_record_3_bb
beq rmarkr_record_3_ab
- subs r8,r8,#1
+ subs ASTACK_2,ASTACK_2,#1
beq rmarkr_record_3_aab
b rmarkr_hnf_3
rmarkr_record_3_bb:
- ldr r7,[r6,#8-4]
- subs r6,r6,#4
+ ldr ASTACK_1,[ASTACK_0,#8-4]
+ subs ASTACK_0,ASTACK_0,#4
- sub r4,r7,r11
+ sub BSTACK_0,ASTACK_1,ASTACK_3
- lsr r8,r4,#7
- lsr r4,r4,#2
- and r4,r4,#31
- mov r12,#1
- lsl r4,r12,r4
- ldr r12,[r10,r8,lsl #2]
- orr r12,r12,r4
- str r12,[r10,r8,lsl #2]
+ lsr ASTACK_2,BSTACK_0,#7
+ lsr BSTACK_0,BSTACK_0,#2
+ and BSTACK_0,BSTACK_0,#31
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
+ ldr SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,BSTACK_0
+ str SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
- cmp r7,r6
+ cmp ASTACK_1,ASTACK_0
bhi rmarkr_next_node
- add r4,r4,r4
+ add BSTACK_0,BSTACK_0,BSTACK_0
bne rmarkr_bit_in_same_word1
- add r8,r8,#1
- mov r4,#1
+ add ASTACK_2,ASTACK_2,#1
+ mov BSTACK_0,#1
rmarkr_bit_in_same_word1:
- ldr r12,[r10,r8,lsl #2]
- tst r4,r12
+ ldr SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
+ tst BSTACK_0,SCRATCH_REG
beq rmarkr_not_yet_linked_bb
- sub r4,r6,r11
+ sub BSTACK_0,ASTACK_0,ASTACK_3
- add r4,r4,#2*4
- lsr r8,r4,#7
- lsr r4,r4,#2
- and r4,r4,#31
- mov r12,#1
- lsl r4,r12,r4
- ldr r12,[r10,r8,lsl #2]
+ add BSTACK_0,BSTACK_0,#2*4
+ lsr ASTACK_2,BSTACK_0,#7
+ lsr BSTACK_0,BSTACK_0,#2
+ and BSTACK_0,BSTACK_0,#31
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
+ ldr SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
rmarkr_not_yet_linked_bb:
- orr r12,r12,r4
- str r12,[r10,r8,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,BSTACK_0
+ str SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
- ldr r8,[r7]
- add r4,r6,#8+2+1
- str r8,[r6,#8]
- str r4,[r7]
+ ldr ASTACK_2,[ASTACK_1]
+ add BSTACK_0,ASTACK_0,#8+2+1
+ str ASTACK_2,[ASTACK_0,#8]
+ str BSTACK_0,[ASTACK_1]
b rmarkr_next_node
rmarkr_record_3_ab:
- ldr r7,[r6,#4]
+ ldr ASTACK_1,[ASTACK_0,#4]
- sub r4,r7,r11
+ sub BSTACK_0,ASTACK_1,ASTACK_3
- lsr r8,r4,#7
- lsr r4,r4,#2
- and r4,r4,#31
- mov r12,#1
- lsl r4,r12,r4
- ldr r12,[r10,r8,lsl #2]
- orr r12,r12,r4
- str r12,[r10,r8,lsl #2]
+ lsr ASTACK_2,BSTACK_0,#7
+ lsr BSTACK_0,BSTACK_0,#2
+ and BSTACK_0,BSTACK_0,#31
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
+ ldr SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,BSTACK_0
+ str SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
- cmp r7,r6
+ cmp ASTACK_1,ASTACK_0
bhi rmarkr_hnf_1
- add r4,r4,r4
+ add BSTACK_0,BSTACK_0,BSTACK_0
bne rmarkr_bit_in_same_word2
- add r8,r8,#1
- mov r4,#1
+ add ASTACK_2,ASTACK_2,#1
+ mov BSTACK_0,#1
rmarkr_bit_in_same_word2:
- ldr r12,[r10,r8,lsl #2]
- tst r4,r12
+ ldr SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
+ tst BSTACK_0,SCRATCH_REG
beq rmarkr_not_yet_linked_ab
- sub r4,r6,r11
+ sub BSTACK_0,ASTACK_0,ASTACK_3
- add r4,r4,#4
- lsr r8,r4,#7
- lsr r4,r4,#2
- and r4,r4,#31
- mov r12,#1
- lsl r4,r12,r4
- ldr r12,[r10,r8,lsl #2]
+ add BSTACK_0,BSTACK_0,#4
+ lsr ASTACK_2,BSTACK_0,#7
+ lsr BSTACK_0,BSTACK_0,#2
+ and BSTACK_0,BSTACK_0,#31
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
+ ldr SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
rmarkr_not_yet_linked_ab:
- orr r12,r12,r4
- str r12,[r10,r8,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,BSTACK_0
+ str SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
- ldr r8,[r7]
- add r4,r6,#4+2+1
- str r8,[r6,#4]
- str r4,[r7]
+ ldr ASTACK_2,[ASTACK_1]
+ add BSTACK_0,ASTACK_0,#4+2+1
+ str ASTACK_2,[ASTACK_0,#4]
+ str BSTACK_0,[ASTACK_1]
b rmarkr_hnf_1
rmarkr_record_3_aab:
- ldr r7,[r6,#4]
+ ldr ASTACK_1,[ASTACK_0,#4]
- sub r4,r7,r11
+ sub BSTACK_0,ASTACK_1,ASTACK_3
- lsr r8,r4,#7
- lsr r4,r4,#2
- and r4,r4,#31
- mov r12,#1
- lsl r4,r12,r4
- ldr r12,[r10,r8,lsl #2]
- tst r4,r12
+ lsr ASTACK_2,BSTACK_0,#7
+ lsr BSTACK_0,BSTACK_0,#2
+ and BSTACK_0,BSTACK_0,#31
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
+ ldr SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
+ tst BSTACK_0,SCRATCH_REG
bne rmarkr_shared_argument_part
- ldr r12,[r10,r8,lsl #2]
- orr r12,r12,r4
- str r12,[r10,r8,lsl #2]
-
- ldr r12,[r6]
- add r12,r12,#2
- str r12,[r6]
- str r9,[r6,#4]
- add r6,r6,#4
-
- ldr r9,[r7]
- str r6,[r7]
- mov r6,r9
- add r9,r7,#1
+ ldr SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,BSTACK_0
+ str SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
+
+ ldr SCRATCH_REG,[ASTACK_0]
+ add SCRATCH_REG,SCRATCH_REG,#2
+ str SCRATCH_REG,[ASTACK_0]
+ str ASTACK_PTR,[ASTACK_0,#4]
+ add ASTACK_0,ASTACK_0,#4
+
+ ldr ASTACK_PTR,[ASTACK_1]
+ str ASTACK_0,[ASTACK_1]
+ mov ASTACK_0,ASTACK_PTR
+ add ASTACK_PTR,ASTACK_1,#1
b rmarkr_node
rmarkr_record_2:
- ldrh r12,[r4,#-2+2]
- cmp r12,#1
+ ldrh SCRATCH_REG,[BSTACK_0,#-2+2]
+ cmp SCRATCH_REG,#1
bhi rmarkr_hnf_2
beq rmarkr_hnf_1
- subs r6,r6,#4
+ subs ASTACK_0,ASTACK_0,#4
b rmarkr_next_node
rmarkr_record_1:
- ldrh r12,[r4,#-2+2]
- cmp r12,#0
+ ldrh SCRATCH_REG,[BSTACK_0,#-2+2]
+ cmp SCRATCH_REG,#0
bne rmarkr_hnf_1
- subs r6,r6,#4
+ subs ASTACK_0,ASTACK_0,#4
b rmarkr_next_node
rmarkr_lazy_node_1:
@@ -277,757 +276,757 @@ rmarkr_lazy_node_1:
bne rmarkr_selector_node_1
rmarkr_hnf_1:
- ldr r8,[r6]
- str r9,[r6]
+ ldr ASTACK_2,[ASTACK_0]
+ str ASTACK_PTR,[ASTACK_0]
- add r9,r6,#2
- mov r6,r8
+ add ASTACK_PTR,ASTACK_0,#2
+ mov ASTACK_0,ASTACK_2
b rmarkr_node
@ selectors
rmarkr_indirection_node:
- add r12,r6,#-4
- sub r3,r12,r11
-
- and r4,r3,#31*4
- lsr r3,r3,#7
- lsr r12,r4,#2
- mov r4,#1
- lsl r4,r4,r12
- ldr r12,[r10,r3,lsl #2]
- bic r12,r12,r4
- str r12,[r10,r3,lsl #2]
-
- ldr r6,[r6]
+ add SCRATCH_REG,ASTACK_0,#-4
+ sub BSTACK_1,SCRATCH_REG,ASTACK_3
+
+ and BSTACK_0,BSTACK_1,#31*4
+ lsr BSTACK_1,BSTACK_1,#7
+ lsr SCRATCH_REG,BSTACK_0,#2
+ mov BSTACK_0,#1
+ lsl BSTACK_0,BSTACK_0,SCRATCH_REG
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ bic SCRATCH_REG,SCRATCH_REG,BSTACK_0
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+
+ ldr ASTACK_0,[ASTACK_0]
b rmarkr_node
rmarkr_selector_node_1:
- cmp r8,#(-2)-1
+ cmp ASTACK_2,#(-2)-1
beq rmarkr_indirection_node
- ldr r7,[r6]
+ ldr ASTACK_1,[ASTACK_0]
- sub r3,r7,r11
- lsr r3,r3,#2
+ sub BSTACK_1,ASTACK_1,ASTACK_3
+ lsr BSTACK_1,BSTACK_1,#2
- cmp r8,#(-3)-1
+ cmp ASTACK_2,#(-3)-1
ble rmarkr_record_selector_node_1
- str r4,[sp,#-4]!
- and r4,r3,#31
- lsr r3,r3,#5
- mov r12,#1
- lsl r4,r12,r4
- ldr r3,[r10,r3,lsl #2]
- and r3,r3,r4
- ldr r4,[sp],#4
+ str BSTACK_0,[sp,#-4]!
+ and BSTACK_0,BSTACK_1,#31
+ lsr BSTACK_1,BSTACK_1,#5
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
+ ldr BSTACK_1,[HEAP_PTR,BSTACK_1,lsl #2]
+ and BSTACK_1,BSTACK_1,BSTACK_0
+ ldr BSTACK_0,[sp],#4
bne rmarkr_hnf_1
- ldr r3,[r7]
- tst r3,#2
+ ldr BSTACK_1,[ASTACK_1]
+ tst BSTACK_1,#2
beq rmarkr_hnf_1
- ldrh r12,[r3,#-2]
- cmp r12,#2
+ ldrh SCRATCH_REG,[BSTACK_1,#-2]
+ cmp SCRATCH_REG,#2
bls rmarkr_small_tuple_or_record
rmarkr_large_tuple_or_record:
- ldr r3,[r7,#8]
- sub r3,r3,r11
- lsr r3,r3,#2
-
- str r4,[sp,#-4]!
- and r4,r3,#31
- lsr r3,r3,#5
- mov r12,#1
- lsl r4,r12,r4
- ldr r3,[r10,r3,lsl #2]
- and r3,r3,r4
- ldr r4,[sp],#4
+ ldr BSTACK_1,[ASTACK_1,#8]
+ sub BSTACK_1,BSTACK_1,ASTACK_3
+ lsr BSTACK_1,BSTACK_1,#2
+
+ str BSTACK_0,[sp,#-4]!
+ and BSTACK_0,BSTACK_1,#31
+ lsr BSTACK_1,BSTACK_1,#5
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
+ ldr BSTACK_1,[HEAP_PTR,BSTACK_1,lsl #2]
+ and BSTACK_1,BSTACK_1,BSTACK_0
+ ldr BSTACK_0,[sp],#4
bne rmarkr_hnf_1
- add r12,r6,#-4
- sub r3,r12,r11
+ add SCRATCH_REG,ASTACK_0,#-4
+ sub BSTACK_1,SCRATCH_REG,ASTACK_3
- str r6,[sp,#-4]!
+ str ASTACK_0,[sp,#-4]!
.ifdef PIC
- add r12,r4,#-8+4
+ add SCRATCH_REG,BSTACK_0,#-8+4
.endif
- ldr r4,[r4,#-8]
+ ldr BSTACK_0,[BSTACK_0,#-8]
- and r6,r3,#31*4
- lsr r3,r3,#7
- lsr r6,r6,#2
+ and ASTACK_0,BSTACK_1,#31*4
+ lsr BSTACK_1,BSTACK_1,#7
+ lsr ASTACK_0,ASTACK_0,#2
.ifdef PIC
- ldrh r4,[r12,r4]
+ ldrh BSTACK_0,[SCRATCH_REG,BSTACK_0]
.endif
- mov r12,#1
- lsl r6,r12,r6
- ldr r12,[r10,r3,lsl #2]
- bic r12,r12,r6
- str r12,[r10,r3,lsl #2]
+ mov SCRATCH_REG,#1
+ lsl ASTACK_0,SCRATCH_REG,ASTACK_0
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ bic SCRATCH_REG,SCRATCH_REG,ASTACK_0
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
.ifndef PIC
- ldrh r4,[r4,#4]
+ ldrh BSTACK_0,[BSTACK_0,#4]
.endif
- cmp r4,#8
+ cmp BSTACK_0,#8
blt rmarkr_tuple_or_record_selector_node_2
- ldr r7,[r7,#8]
+ ldr ASTACK_1,[ASTACK_1,#8]
beq rmarkr_tuple_selector_node_2
- add r12,r4,#-12
- ldr r6,[r7,r12]
- ldr r7,[sp],#4
- lao r12,e__system__nind,20
- otoa r12,e__system__nind,20
- str r12,[r7,#-4]
- str r6,[r7]
+ add SCRATCH_REG,BSTACK_0,#-12
+ ldr ASTACK_0,[ASTACK_1,SCRATCH_REG]
+ ldr ASTACK_1,[sp],#4
+ lao SCRATCH_REG,e__system__nind,20
+ otoa SCRATCH_REG,e__system__nind,20
+ str SCRATCH_REG,[ASTACK_1,#-4]
+ str ASTACK_0,[ASTACK_1]
b rmarkr_node
rmarkr_tuple_selector_node_2:
- ldr r6,[r7]
- ldr r7,[sp],#4
- lao r12,e__system__nind,21
- otoa r12,e__system__nind,21
- str r12,[r7,#-4]
- str r6,[r7]
+ ldr ASTACK_0,[ASTACK_1]
+ ldr ASTACK_1,[sp],#4
+ lao SCRATCH_REG,e__system__nind,21
+ otoa SCRATCH_REG,e__system__nind,21
+ str SCRATCH_REG,[ASTACK_1,#-4]
+ str ASTACK_0,[ASTACK_1]
b rmarkr_node
rmarkr_record_selector_node_1:
beq rmarkr_strict_record_selector_node_1
- str r4,[sp,#-4]!
- and r4,r3,#31
- lsr r3,r3,#5
- mov r12,#1
- lsl r4,r12,r4
- ldr r3,[r10,r3,lsl #2]
- and r3,r3,r4
- ldr r4,[sp],#4
+ str BSTACK_0,[sp,#-4]!
+ and BSTACK_0,BSTACK_1,#31
+ lsr BSTACK_1,BSTACK_1,#5
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
+ ldr BSTACK_1,[HEAP_PTR,BSTACK_1,lsl #2]
+ and BSTACK_1,BSTACK_1,BSTACK_0
+ ldr BSTACK_0,[sp],#4
bne rmarkr_hnf_1
- ldr r3,[r7]
- tst r3,#2
+ ldr BSTACK_1,[ASTACK_1]
+ tst BSTACK_1,#2
beq rmarkr_hnf_1
- ldrh r12,[r3,#-2]
- mov r3,#258/2
- cmp r12,r3,lsl #1
+ ldrh SCRATCH_REG,[BSTACK_1,#-2]
+ mov BSTACK_1,#258/2
+ cmp SCRATCH_REG,BSTACK_1,lsl #1
bls rmarkr_small_tuple_or_record
- ldr r3,[r7,#8]
- sub r3,r3,r11
- lsr r3,r3,#2
-
- str r4,[sp,#-4]!
- and r4,r3,#31
- lsr r3,r3,#5
- mov r12,#1
- lsl r4,r12,r4
- ldr r3,[r10,r3,lsl #2]
- and r3,r3,r4
- ldr r4,[sp],#4
+ ldr BSTACK_1,[ASTACK_1,#8]
+ sub BSTACK_1,BSTACK_1,ASTACK_3
+ lsr BSTACK_1,BSTACK_1,#2
+
+ str BSTACK_0,[sp,#-4]!
+ and BSTACK_0,BSTACK_1,#31
+ lsr BSTACK_1,BSTACK_1,#5
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
+ ldr BSTACK_1,[HEAP_PTR,BSTACK_1,lsl #2]
+ and BSTACK_1,BSTACK_1,BSTACK_0
+ ldr BSTACK_0,[sp],#4
bne rmarkr_hnf_1
rmarkr_small_tuple_or_record:
- add r12,r6,#-4
- sub r3,r12,r11
+ add SCRATCH_REG,ASTACK_0,#-4
+ sub BSTACK_1,SCRATCH_REG,ASTACK_3
- str r6,[sp,#-4]!
+ str ASTACK_0,[sp,#-4]!
.ifdef PIC
- add r12,r4,#-8+4
+ add SCRATCH_REG,BSTACK_0,#-8+4
.endif
- ldr r4,[r4,#-8]
+ ldr BSTACK_0,[BSTACK_0,#-8]
- and r6,r3,#31*4
- lsr r3,r3,#7
- lsr r6,r6,#2
+ and ASTACK_0,BSTACK_1,#31*4
+ lsr BSTACK_1,BSTACK_1,#7
+ lsr ASTACK_0,ASTACK_0,#2
.ifdef PIC
- ldrh r4,[r12,r4]
+ ldrh BSTACK_0,[SCRATCH_REG,BSTACK_0]
.endif
- mov r12,#1
- lsl r6,r12,r6
- ldr r12,[r10,r3,lsl #2]
- bic r12,r12,r6
- str r12,[r10,r3,lsl #2]
+ mov SCRATCH_REG,#1
+ lsl ASTACK_0,SCRATCH_REG,ASTACK_0
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ bic SCRATCH_REG,SCRATCH_REG,ASTACK_0
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
.ifndef PIC
- ldrh r4,[r4,#4]
+ ldrh BSTACK_0,[BSTACK_0,#4]
.endif
- cmp r4,#8
+ cmp BSTACK_0,#8
ble rmarkr_tuple_or_record_selector_node_2
- ldr r7,[r7,#8]
- sub r4,r4,#12
+ ldr ASTACK_1,[ASTACK_1,#8]
+ sub BSTACK_0,BSTACK_0,#12
rmarkr_tuple_or_record_selector_node_2:
- ldr r6,[r7,r4]
- ldr r7,[sp],#4
- lao r12,e__system__nind,22
- otoa r12,e__system__nind,22
- str r12,[r7,#-4]
- str r6,[r7]
+ ldr ASTACK_0,[ASTACK_1,BSTACK_0]
+ ldr ASTACK_1,[sp],#4
+ lao SCRATCH_REG,e__system__nind,22
+ otoa SCRATCH_REG,e__system__nind,22
+ str SCRATCH_REG,[ASTACK_1,#-4]
+ str ASTACK_0,[ASTACK_1]
b rmarkr_node
rmarkr_strict_record_selector_node_1:
- str r4,[sp,#-4]!
- and r4,r3,#31
- lsr r3,r3,#5
- mov r12,#1
- lsl r4,r12,r4
- ldr r3,[r10,r3,lsl #2]
- and r3,r3,r4
- ldr r4,[sp],#4
+ str BSTACK_0,[sp,#-4]!
+ and BSTACK_0,BSTACK_1,#31
+ lsr BSTACK_1,BSTACK_1,#5
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
+ ldr BSTACK_1,[HEAP_PTR,BSTACK_1,lsl #2]
+ and BSTACK_1,BSTACK_1,BSTACK_0
+ ldr BSTACK_0,[sp],#4
bne rmarkr_hnf_1
- ldr r3,[r7]
- tst r3,#2
+ ldr BSTACK_1,[ASTACK_1]
+ tst BSTACK_1,#2
beq rmarkr_hnf_1
- ldrh r12,[r3,#-2]
- mov r3,#258/2
- cmp r12,r3,lsl #1
+ ldrh SCRATCH_REG,[BSTACK_1,#-2]
+ mov BSTACK_1,#258/2
+ cmp SCRATCH_REG,BSTACK_1,lsl #1
bls rmarkr_select_from_small_record
- ldr r3,[r7,#8]
- sub r3,r3,r11
-
- str r4,[sp,#-4]!
- and r4,r3,#31*4
- lsr r3,r3,#7
- lsr r4,r4,#2
- mov r12,#1
- lsl r4,r12,r4
- ldr r3,[r10,r3,lsl #2]
- and r3,r3,r4
- ldr r4,[sp],#4
+ ldr BSTACK_1,[ASTACK_1,#8]
+ sub BSTACK_1,BSTACK_1,ASTACK_3
+
+ str BSTACK_0,[sp,#-4]!
+ and BSTACK_0,BSTACK_1,#31*4
+ lsr BSTACK_1,BSTACK_1,#7
+ lsr BSTACK_0,BSTACK_0,#2
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
+ ldr BSTACK_1,[HEAP_PTR,BSTACK_1,lsl #2]
+ and BSTACK_1,BSTACK_1,BSTACK_0
+ ldr BSTACK_0,[sp],#4
bne rmarkr_hnf_1
rmarkr_select_from_small_record:
.ifdef PIC
- ldr r12,[r4,#-8]
- add r4,r4,#-8+4
+ ldr SCRATCH_REG,[BSTACK_0,#-8]
+ add BSTACK_0,BSTACK_0,#-8+4
.else
- ldr r4,[r4,#-8]
+ ldr BSTACK_0,[BSTACK_0,#-8]
.endif
- sub r6,r6,#4
+ sub ASTACK_0,ASTACK_0,#4
.ifdef PIC
- ldrh r3,[r4,r12]!
+ ldrh BSTACK_1,[BSTACK_0,SCRATCH_REG]!
.else
- ldrh r3,[r4,#4]
+ ldrh BSTACK_1,[BSTACK_0,#4]
.endif
- cmp r3,#8
+ cmp BSTACK_1,#8
ble rmarkr_strict_record_selector_node_2
- ldr r12,[r7,#8]
- add r3,r3,r12
- ldr r3,[r3,#-12]
+ ldr SCRATCH_REG,[ASTACK_1,#8]
+ add BSTACK_1,BSTACK_1,SCRATCH_REG
+ ldr BSTACK_1,[BSTACK_1,#-12]
b rmarkr_strict_record_selector_node_3
rmarkr_strict_record_selector_node_2:
- ldr r3,[r7,r3]
+ ldr BSTACK_1,[ASTACK_1,BSTACK_1]
rmarkr_strict_record_selector_node_3:
- str r3,[r6,#4]
+ str BSTACK_1,[ASTACK_0,#4]
.ifdef PIC
- ldrh r3,[r4,#6-4]
+ ldrh BSTACK_1,[BSTACK_0,#6-4]
.else
- ldrh r3,[r4,#6]
+ ldrh BSTACK_1,[BSTACK_0,#6]
.endif
- tst r3,r3
+ tst BSTACK_1,BSTACK_1
beq rmarkr_strict_record_selector_node_5
- cmp r3,#8
+ cmp BSTACK_1,#8
ble rmarkr_strict_record_selector_node_4
- ldr r7,[r7,#8]
- subs r3,r3,#12
+ ldr ASTACK_1,[ASTACK_1,#8]
+ subs BSTACK_1,BSTACK_1,#12
rmarkr_strict_record_selector_node_4:
- ldr r3,[r7,r3]
- str r3,[r6,#8]
+ ldr BSTACK_1,[ASTACK_1,BSTACK_1]
+ str BSTACK_1,[ASTACK_0,#8]
rmarkr_strict_record_selector_node_5:
.ifdef PIC
- ldr r4,[r4,#-4-4]
+ ldr BSTACK_0,[BSTACK_0,#-4-4]
.else
- ldr r4,[r4,#-4]
+ ldr BSTACK_0,[BSTACK_0,#-4]
.endif
- str r4,[r6]
+ str BSTACK_0,[ASTACK_0]
b rmarkr_next_node
@ a2,d1: free
rmarkr_next_node:
- tst r9,#3
+ tst ASTACK_PTR,#3
bne rmarkr_parent
- ldr r8,[r9,#-4]
- mov r3,#3
+ ldr ASTACK_2,[ASTACK_PTR,#-4]
+ mov BSTACK_1,#3
- and r3,r3,r8
- subs r9,r9,#4
+ and BSTACK_1,BSTACK_1,ASTACK_2
+ subs ASTACK_PTR,ASTACK_PTR,#4
- cmp r3,#3
+ cmp BSTACK_1,#3
beq rmarkr_argument_part_cycle1
- ldr r7,[r9,#4]
- str r7,[r9]
+ ldr ASTACK_1,[ASTACK_PTR,#4]
+ str ASTACK_1,[ASTACK_PTR]
rmarkr_c_argument_part_cycle1:
- cmp r6,r9
+ cmp ASTACK_0,ASTACK_PTR
bhi rmarkr_no_reverse_1
- ldr r7,[r6]
- add r4,r9,#4+1
- str r7,[r9,#4]
- str r4,[r6]
+ ldr ASTACK_1,[ASTACK_0]
+ add BSTACK_0,ASTACK_PTR,#4+1
+ str ASTACK_1,[ASTACK_PTR,#4]
+ str BSTACK_0,[ASTACK_0]
- orr r9,r9,r3
- mov r6,r8
- eor r6,r6,r3
+ orr ASTACK_PTR,ASTACK_PTR,BSTACK_1
+ mov ASTACK_0,ASTACK_2
+ eor ASTACK_0,ASTACK_0,BSTACK_1
b rmarkr_node
rmarkr_no_reverse_1:
- str r6,[r9,#4]
- mov r6,r8
- orr r9,r9,r3
- eor r6,r6,r3
+ str ASTACK_0,[ASTACK_PTR,#4]
+ mov ASTACK_0,ASTACK_2
+ orr ASTACK_PTR,ASTACK_PTR,BSTACK_1
+ eor ASTACK_0,ASTACK_0,BSTACK_1
b rmarkr_node
rmarkr_lazy_node:
- ldr r8,[r4,#-4]
- tst r8,r8
+ ldr ASTACK_2,[BSTACK_0,#-4]
+ tst ASTACK_2,ASTACK_2
beq rmarkr_next_node
- add r6,r6,#4
+ add ASTACK_0,ASTACK_0,#4
- subs r8,r8,#1
+ subs ASTACK_2,ASTACK_2,#1
ble rmarkr_lazy_node_1
- cmp r8,#255
+ cmp ASTACK_2,#255
bge rmarkr_closure_with_unboxed_arguments
rmarkr_closure_with_unboxed_arguments_:
- ldr r12,[r6]
- orr r12,r12,#2
- str r12,[r6]
- add r6,r6,r8,lsl #2
-
- ldr r8,[r6]
- str r9,[r6]
- mov r9,r6
- mov r6,r8
+ ldr SCRATCH_REG,[ASTACK_0]
+ orr SCRATCH_REG,SCRATCH_REG,#2
+ str SCRATCH_REG,[ASTACK_0]
+ add ASTACK_0,ASTACK_0,ASTACK_2,lsl #2
+
+ ldr ASTACK_2,[ASTACK_0]
+ str ASTACK_PTR,[ASTACK_0]
+ mov ASTACK_PTR,ASTACK_0
+ mov ASTACK_0,ASTACK_2
b rmarkr_node
rmarkr_closure_with_unboxed_arguments:
@ (a_size+b_size)+(b_size<<8)
@ addl $1,a2
- mov r4,r8
- and r8,r8,#255
- lsr r4,r4,#8
- subs r8,r8,r4
+ mov BSTACK_0,ASTACK_2
+ and ASTACK_2,ASTACK_2,#255
+ lsr BSTACK_0,BSTACK_0,#8
+ subs ASTACK_2,ASTACK_2,BSTACK_0
@ subl $1,a2
bgt rmarkr_closure_with_unboxed_arguments_
beq rmarkr_hnf_1
- subs r6,r6,#4
+ subs ASTACK_0,ASTACK_0,#4
b rmarkr_next_node
rmarkr_hnf_0:
- laol r12,INT+2,INT_o_2,12
- otoa r12,INT_o_2,12
- cmp r4,r12
+ laol SCRATCH_REG,INT+2,INT_o_2,12
+ otoa SCRATCH_REG,INT_o_2,12
+ cmp BSTACK_0,SCRATCH_REG
beq rmarkr_int_3
- laol r12,CHAR+2,CHAR_o_2,7
- otoa r12,CHAR_o_2,7
- cmp r4,r12
+ laol SCRATCH_REG,CHAR+2,CHAR_o_2,7
+ otoa SCRATCH_REG,CHAR_o_2,7
+ cmp BSTACK_0,SCRATCH_REG
beq rmarkr_char_3
blo rmarkr_no_normal_hnf_0
- sub r3,r6,r11
+ sub BSTACK_1,ASTACK_0,ASTACK_3
- and r6,r3,#31*4
- lsr r3,r3,#7
- lsr r12,r6,#2
- mov r6,#1
- lsl r6,r6,r12
- ldr r12,[r10,r3,lsl #2]
- bic r12,r12,r6
- str r12,[r10,r3,lsl #2]
+ and ASTACK_0,BSTACK_1,#31*4
+ lsr BSTACK_1,BSTACK_1,#7
+ lsr SCRATCH_REG,ASTACK_0,#2
+ mov ASTACK_0,#1
+ lsl ASTACK_0,ASTACK_0,SCRATCH_REG
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ bic SCRATCH_REG,SCRATCH_REG,ASTACK_0
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
- add r6,r4,#ZERO_ARITY_DESCRIPTOR_OFFSET-2
+ add ASTACK_0,BSTACK_0,#ZERO_ARITY_DESCRIPTOR_OFFSET-2
b rmarkr_next_node_after_static
rmarkr_int_3:
- ldr r8,[r6,#4]
- cmp r8,#33
+ ldr ASTACK_2,[ASTACK_0,#4]
+ cmp ASTACK_2,#33
bhs rmarkr_next_node
- sub r3,r6,r11
+ sub BSTACK_1,ASTACK_0,ASTACK_3
- and r6,r3,#31*4
- lsr r3,r3,#7
- lsr r12,r6,#2
- mov r6,#1
- lsl r6,r6,r12
- ldr r12,[r10,r3,lsl #2]
- bic r12,r12,r6
- str r12,[r10,r3,lsl #2]
+ and ASTACK_0,BSTACK_1,#31*4
+ lsr BSTACK_1,BSTACK_1,#7
+ lsr SCRATCH_REG,ASTACK_0,#2
+ mov ASTACK_0,#1
+ lsl ASTACK_0,ASTACK_0,SCRATCH_REG
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ bic SCRATCH_REG,SCRATCH_REG,ASTACK_0
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
- lao r12,small_integers,4
- otoa r12,small_integers,4
- add r6,r12,r8,lsl #3
+ lao SCRATCH_REG,small_integers,4
+ otoa SCRATCH_REG,small_integers,4
+ add ASTACK_0,SCRATCH_REG,ASTACK_2,lsl #3
b rmarkr_next_node_after_static
rmarkr_char_3:
- ldrb r4,[r6,#4]
- sub r3,r6,r11
-
- and r8,r3,#31*4
- lsr r3,r3,#7
- lsr r12,r8,#2
- mov r8,#1
- lsl r8,r8,r12
- ldr r12,[r10,r3,lsl #2]
- bic r12,r12,r8
- str r12,[r10,r3,lsl #2]
-
- lao r12,static_characters,4
- otoa r12,static_characters,4
- add r6,r12,r4,lsl #3
+ ldrb BSTACK_0,[ASTACK_0,#4]
+ sub BSTACK_1,ASTACK_0,ASTACK_3
+
+ and ASTACK_2,BSTACK_1,#31*4
+ lsr BSTACK_1,BSTACK_1,#7
+ lsr SCRATCH_REG,ASTACK_2,#2
+ mov ASTACK_2,#1
+ lsl ASTACK_2,ASTACK_2,SCRATCH_REG
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ bic SCRATCH_REG,SCRATCH_REG,ASTACK_2
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+
+ lao SCRATCH_REG,static_characters,4
+ otoa SCRATCH_REG,static_characters,4
+ add ASTACK_0,SCRATCH_REG,BSTACK_0,lsl #3
b rmarkr_next_node_after_static
rmarkr_no_normal_hnf_0:
- laol r12,__ARRAY__+2,__ARRAY___o_2,19
- otoa r12,__ARRAY___o_2,19
- cmp r4,r12
+ laol SCRATCH_REG,__ARRAY__+2,__ARRAY___o_2,19
+ otoa SCRATCH_REG,__ARRAY___o_2,19
+ cmp BSTACK_0,SCRATCH_REG
bne rmarkr_next_node
- ldr r4,[r6,#8]
- cmp r4,#0
+ ldr BSTACK_0,[ASTACK_0,#8]
+ cmp BSTACK_0,#0
beq rmarkr_lazy_array
- ldrh r3,[r4,#-2+2]
- cmp r3,#0
+ ldrh BSTACK_1,[BSTACK_0,#-2+2]
+ cmp BSTACK_1,#0
beq rmarkr_b_array
- ldrh r4,[r4,#-2]
- cmp r4,#0
+ ldrh BSTACK_0,[BSTACK_0,#-2]
+ cmp BSTACK_0,#0
beq rmarkr_b_array
- subs r4,r4,#256
- cmp r3,r4
+ subs BSTACK_0,BSTACK_0,#256
+ cmp BSTACK_1,BSTACK_0
beq rmarkr_a_record_array
rmarkr_ab_record_array:
- ldr r7,[r6,#4]
- add r6,r6,#8
- str r6,[sp,#-4]!
+ ldr ASTACK_1,[ASTACK_0,#4]
+ add ASTACK_0,ASTACK_0,#8
+ str ASTACK_0,[sp,#-4]!
- mul r7,r4,r7
- lsl r7,r7,#2
+ mul ASTACK_1,BSTACK_0,ASTACK_1
+ lsl ASTACK_1,ASTACK_1,#2
- subs r4,r4,r3
- add r6,r6,#4
- add r7,r7,r6
+ subs BSTACK_0,BSTACK_0,BSTACK_1
+ add ASTACK_0,ASTACK_0,#4
+ add ASTACK_1,ASTACK_1,ASTACK_0
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl reorder
- ldr r6,[sp],#4
- mov r4,r3
- ldr r12,[r6,#-4]
- mul r4,r12,r4
+ ldr ASTACK_0,[sp],#4
+ mov BSTACK_0,BSTACK_1
+ ldr SCRATCH_REG,[ASTACK_0,#-4]
+ mul BSTACK_0,SCRATCH_REG,BSTACK_0
b rmarkr_lr_array
rmarkr_b_array:
- sub r4,r6,r11
-
- add r4,r4,#4
- lsr r8,r4,#7
- lsr r4,r4,#2
- and r4,r4,#31
- mov r12,#1
- lsl r4,r12,r4
- ldr r12,[r10,r8,lsl #2]
- orr r12,r12,r4
- str r12,[r10,r8,lsl #2]
+ sub BSTACK_0,ASTACK_0,ASTACK_3
+
+ add BSTACK_0,BSTACK_0,#4
+ lsr ASTACK_2,BSTACK_0,#7
+ lsr BSTACK_0,BSTACK_0,#2
+ and BSTACK_0,BSTACK_0,#31
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
+ ldr SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,BSTACK_0
+ str SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
b rmarkr_next_node
rmarkr_a_record_array:
- ldr r4,[r6,#4]
- add r6,r6,#8
- cmp r3,#2
+ ldr BSTACK_0,[ASTACK_0,#4]
+ add ASTACK_0,ASTACK_0,#8
+ cmp BSTACK_1,#2
blo rmarkr_lr_array
- mul r4,r3,r4
+ mul BSTACK_0,BSTACK_1,BSTACK_0
b rmarkr_lr_array
rmarkr_lazy_array:
- ldr r4,[r6,#4]
- add r6,r6,#8
+ ldr BSTACK_0,[ASTACK_0,#4]
+ add ASTACK_0,ASTACK_0,#8
rmarkr_lr_array:
- sub r3,r6,r11
- lsr r3,r3,#2
- add r3,r3,r4
-
- lsr r7,r3,#5
- and r3,r3,#31
- mov r12,#1
- lsl r3,r12,r3
- ldr r12,[r10,r7,lsl #2]
- orr r12,r12,r3
- str r12,[r10,r7,lsl #2]
-
- cmp r4,#1
+ sub BSTACK_1,ASTACK_0,ASTACK_3
+ lsr BSTACK_1,BSTACK_1,#2
+ add BSTACK_1,BSTACK_1,BSTACK_0
+
+ lsr ASTACK_1,BSTACK_1,#5
+ and BSTACK_1,BSTACK_1,#31
+ mov SCRATCH_REG,#1
+ lsl BSTACK_1,SCRATCH_REG,BSTACK_1
+ ldr SCRATCH_REG,[HEAP_PTR,ASTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,BSTACK_1
+ str SCRATCH_REG,[HEAP_PTR,ASTACK_1,lsl #2]
+
+ cmp BSTACK_0,#1
bls rmarkr_array_length_0_1
- mov r7,r6
- add r6,r6,r4,lsl #2
-
- ldr r4,[r6]
- ldr r3,[r7]
- str r4,[r7]
- str r3,[r6]
-
- ldr r4,[r6,#-4]
- subs r6,r6,#4
- add r4,r4,#2
- ldr r3,[r7,#-4]
- subs r7,r7,#4
- str r3,[r6]
- str r4,[r7]
-
- ldr r4,[r6,#-4]
- subs r6,r6,#4
- str r9,[r6]
- mov r9,r6
- mov r6,r4
+ mov ASTACK_1,ASTACK_0
+ add ASTACK_0,ASTACK_0,BSTACK_0,lsl #2
+
+ ldr BSTACK_0,[ASTACK_0]
+ ldr BSTACK_1,[ASTACK_1]
+ str BSTACK_0,[ASTACK_1]
+ str BSTACK_1,[ASTACK_0]
+
+ ldr BSTACK_0,[ASTACK_0,#-4]
+ subs ASTACK_0,ASTACK_0,#4
+ add BSTACK_0,BSTACK_0,#2
+ ldr BSTACK_1,[ASTACK_1,#-4]
+ subs ASTACK_1,ASTACK_1,#4
+ str BSTACK_1,[ASTACK_0]
+ str BSTACK_0,[ASTACK_1]
+
+ ldr BSTACK_0,[ASTACK_0,#-4]
+ subs ASTACK_0,ASTACK_0,#4
+ str ASTACK_PTR,[ASTACK_0]
+ mov ASTACK_PTR,ASTACK_0
+ mov ASTACK_0,BSTACK_0
b rmarkr_node
rmarkr_array_length_0_1:
- add r6,r6,#-8
+ add ASTACK_0,ASTACK_0,#-8
blo rmarkr_next_node
- ldr r3,[r6,#12]
- ldr r8,[r6,#8]
- str r8,[r6,#12]
- ldr r8,[r6,#4]
- str r8,[r6,#8]
- str r3,[r6,#4]
- add r6,r6,#4
+ ldr BSTACK_1,[ASTACK_0,#12]
+ ldr ASTACK_2,[ASTACK_0,#8]
+ str ASTACK_2,[ASTACK_0,#12]
+ ldr ASTACK_2,[ASTACK_0,#4]
+ str ASTACK_2,[ASTACK_0,#8]
+ str BSTACK_1,[ASTACK_0,#4]
+ add ASTACK_0,ASTACK_0,#4
b rmarkr_hnf_1
@ a2: free
rmarkr_parent:
- and r3,r9,#3
+ and BSTACK_1,ASTACK_PTR,#3
- bics r9,r9,#3
+ bics ASTACK_PTR,ASTACK_PTR,#3
beq end_rmarkr
- subs r3,r3,#1
+ subs BSTACK_1,BSTACK_1,#1
beq rmarkr_argument_part_parent
- ldr r8,[r9]
+ ldr ASTACK_2,[ASTACK_PTR]
- cmp r6,r9
+ cmp ASTACK_0,ASTACK_PTR
bhi rmarkr_no_reverse_2
- mov r7,r6
- add r4,r9,#1
- ldr r6,[r7]
- str r4,[r7]
+ mov ASTACK_1,ASTACK_0
+ add BSTACK_0,ASTACK_PTR,#1
+ ldr ASTACK_0,[ASTACK_1]
+ str BSTACK_0,[ASTACK_1]
rmarkr_no_reverse_2:
- str r6,[r9]
- add r6,r9,#-4
- mov r9,r8
+ str ASTACK_0,[ASTACK_PTR]
+ add ASTACK_0,ASTACK_PTR,#-4
+ mov ASTACK_PTR,ASTACK_2
b rmarkr_next_node
rmarkr_argument_part_parent:
- ldr r8,[r9]
+ ldr ASTACK_2,[ASTACK_PTR]
- mov r7,r9
- mov r9,r6
- mov r6,r7
+ mov ASTACK_1,ASTACK_PTR
+ mov ASTACK_PTR,ASTACK_0
+ mov ASTACK_0,ASTACK_1
rmarkr_skip_upward_pointers:
- mov r4,r8
- and r4,r4,#3
- cmp r4,#3
+ mov BSTACK_0,ASTACK_2
+ and BSTACK_0,BSTACK_0,#3
+ cmp BSTACK_0,#3
bne rmarkr_no_upward_pointer
- add r7,r8,#-3
- ldr r8,[r8,#-3]
+ add ASTACK_1,ASTACK_2,#-3
+ ldr ASTACK_2,[ASTACK_2,#-3]
b rmarkr_skip_upward_pointers
rmarkr_no_upward_pointer:
- cmp r9,r6
+ cmp ASTACK_PTR,ASTACK_0
bhi rmarkr_no_reverse_3
- mov r3,r9
- ldr r9,[r9]
- add r4,r6,#1
- str r4,[r3]
+ mov BSTACK_1,ASTACK_PTR
+ ldr ASTACK_PTR,[ASTACK_PTR]
+ add BSTACK_0,ASTACK_0,#1
+ str BSTACK_0,[BSTACK_1]
rmarkr_no_reverse_3:
- str r9,[r7]
- add r9,r8,#-4
+ str ASTACK_PTR,[ASTACK_1]
+ add ASTACK_PTR,ASTACK_2,#-4
- and r9,r9,#-4
+ and ASTACK_PTR,ASTACK_PTR,#-4
- mov r7,r9
- mov r3,#3
+ mov ASTACK_1,ASTACK_PTR
+ mov BSTACK_1,#3
- ldr r8,[r9]
+ ldr ASTACK_2,[ASTACK_PTR]
- and r3,r3,r8
- ldr r4,[r7,#4]
+ and BSTACK_1,BSTACK_1,ASTACK_2
+ ldr BSTACK_0,[ASTACK_1,#4]
- orr r9,r9,r3
- str r4,[r7]
+ orr ASTACK_PTR,ASTACK_PTR,BSTACK_1
+ str BSTACK_0,[ASTACK_1]
- cmp r6,r7
+ cmp ASTACK_0,ASTACK_1
bhi rmarkr_no_reverse_4
- ldr r4,[r6]
- str r4,[r7,#4]
- add r4,r7,#4+2+1
- str r4,[r6]
- mov r6,r8
- and r6,r6,#-4
+ ldr BSTACK_0,[ASTACK_0]
+ str BSTACK_0,[ASTACK_1,#4]
+ add BSTACK_0,ASTACK_1,#4+2+1
+ str BSTACK_0,[ASTACK_0]
+ mov ASTACK_0,ASTACK_2
+ and ASTACK_0,ASTACK_0,#-4
b rmarkr_node
rmarkr_no_reverse_4:
- str r6,[r7,#4]
- mov r6,r8
- and r6,r6,#-4
+ str ASTACK_0,[ASTACK_1,#4]
+ mov ASTACK_0,ASTACK_2
+ and ASTACK_0,ASTACK_0,#-4
b rmarkr_node
rmarkr_argument_part_cycle1:
- ldr r4,[r9,#4]
- str r7,[sp,#-4]!
+ ldr BSTACK_0,[ASTACK_PTR,#4]
+ str ASTACK_1,[sp,#-4]!
rmarkr_skip_pointer_list1:
- mov r7,r8
- and r7,r7,#-4
- ldr r8,[r7]
- mov r3,#3
- and r3,r3,r8
- cmp r3,#3
+ mov ASTACK_1,ASTACK_2
+ and ASTACK_1,ASTACK_1,#-4
+ ldr ASTACK_2,[ASTACK_1]
+ mov BSTACK_1,#3
+ and BSTACK_1,BSTACK_1,ASTACK_2
+ cmp BSTACK_1,#3
beq rmarkr_skip_pointer_list1
- str r4,[r7]
- ldr r7,[sp],#4
+ str BSTACK_0,[ASTACK_1]
+ ldr ASTACK_1,[sp],#4
b rmarkr_c_argument_part_cycle1
rmarkr_next_node_after_static:
- tst r9,#3
+ tst ASTACK_PTR,#3
bne rmarkr_parent_after_static
- ldr r8,[r9,#-4]
- mov r3,#3
+ ldr ASTACK_2,[ASTACK_PTR,#-4]
+ mov BSTACK_1,#3
- and r3,r3,r8
- subs r9,r9,#4
+ and BSTACK_1,BSTACK_1,ASTACK_2
+ subs ASTACK_PTR,ASTACK_PTR,#4
- cmp r3,#3
+ cmp BSTACK_1,#3
beq rmarkr_argument_part_cycle2
- ldr r4,[r9,#4]
- str r4,[r9]
+ ldr BSTACK_0,[ASTACK_PTR,#4]
+ str BSTACK_0,[ASTACK_PTR]
rmarkr_c_argument_part_cycle2:
- str r6,[r9,#4]
- mov r6,r8
- orr r9,r9,r3
- eor r6,r6,r3
+ str ASTACK_0,[ASTACK_PTR,#4]
+ mov ASTACK_0,ASTACK_2
+ orr ASTACK_PTR,ASTACK_PTR,BSTACK_1
+ eor ASTACK_0,ASTACK_0,BSTACK_1
b rmarkr_node
rmarkr_parent_after_static:
- and r3,r9,#3
+ and BSTACK_1,ASTACK_PTR,#3
- ands r9,r9,#-4
+ ands ASTACK_PTR,ASTACK_PTR,#-4
beq end_rmarkr_after_static
- subs r3,r3,#1
+ subs BSTACK_1,BSTACK_1,#1
beq rmarkr_argument_part_parent_after_static
- ldr r8,[r9]
- str r6,[r9]
- add r6,r9,#-4
- mov r9,r8
+ ldr ASTACK_2,[ASTACK_PTR]
+ str ASTACK_0,[ASTACK_PTR]
+ add ASTACK_0,ASTACK_PTR,#-4
+ mov ASTACK_PTR,ASTACK_2
b rmarkr_next_node
rmarkr_argument_part_parent_after_static:
- ldr r8,[r9]
+ ldr ASTACK_2,[ASTACK_PTR]
- mov r7,r9
- mov r9,r6
- mov r6,r7
+ mov ASTACK_1,ASTACK_PTR
+ mov ASTACK_PTR,ASTACK_0
+ mov ASTACK_0,ASTACK_1
@ movl (a1),a2
rmarkr_skip_upward_pointers_2:
- mov r4,r8
- and r4,r4,#3
- cmp r4,#3
+ mov BSTACK_0,ASTACK_2
+ and BSTACK_0,BSTACK_0,#3
+ cmp BSTACK_0,#3
bne rmarkr_no_reverse_3
@ movl a2,a1
@ andl $-4,a1
@ movl (a1),a2
- add r7,r8,#-3
- ldr r8,[r8,#-3]
+ add ASTACK_1,ASTACK_2,#-3
+ ldr ASTACK_2,[ASTACK_2,#-3]
b rmarkr_skip_upward_pointers_2
rmarkr_argument_part_cycle2:
- ldr r4,[r9,#4]
- str r7,[sp,#-4]!
+ ldr BSTACK_0,[ASTACK_PTR,#4]
+ str ASTACK_1,[sp,#-4]!
rmarkr_skip_pointer_list2:
- mov r7,r8
- and r7,r7,#-4
- ldr r8,[r7]
- mov r3,#3
- and r3,r3,r8
- cmp r3,#3
+ mov ASTACK_1,ASTACK_2
+ and ASTACK_1,ASTACK_1,#-4
+ ldr ASTACK_2,[ASTACK_1]
+ mov BSTACK_1,#3
+ and BSTACK_1,BSTACK_1,ASTACK_2
+ cmp BSTACK_1,#3
beq rmarkr_skip_pointer_list2
- str r4,[r7]
- ldr r7,[sp],#4
+ str BSTACK_0,[ASTACK_1]
+ ldr ASTACK_1,[sp],#4
b rmarkr_c_argument_part_cycle2
end_rmarkr_after_static:
- ldr r9,[sp]
+ ldr ASTACK_PTR,[sp]
add sp,sp,#8
- str r6,[r9]
+ str ASTACK_0,[ASTACK_PTR]
b rmarkr_next_stack_node
end_rmarkr:
- ldr r9,[sp],#4
- ldr r3,[sp],#4
+ ldr ASTACK_PTR,[sp],#4
+ ldr BSTACK_1,[sp],#4
- cmp r6,r3
+ cmp ASTACK_0,BSTACK_1
bhi rmark_no_reverse_4
- mov r7,r6
- add r4,r9,#1
- ldr r6,[r6]
- str r4,[r7]
+ mov ASTACK_1,ASTACK_0
+ add BSTACK_0,ASTACK_PTR,#1
+ ldr ASTACK_0,[ASTACK_0]
+ str BSTACK_0,[ASTACK_1]
rmark_no_reverse_4:
- str r6,[r9]
+ str ASTACK_0,[ASTACK_PTR]
rmarkr_next_stack_node:
- cmp sp,r0
+ cmp sp,BSTACK_4
bhs rmark_next_node
- ldr r6,[sp]
- ldr r9,[sp,#4]
+ ldr ASTACK_0,[sp]
+ ldr ASTACK_PTR,[sp,#4]
add sp,sp,#8
- cmp r6,#1
+ cmp ASTACK_0,#1
bhi rmark_using_reversal
b rmark_next_node_
diff --git a/thumb2copy.s b/thumb2copy.s
index 1a917df..604107f 100644
--- a/thumb2copy.s
+++ b/thumb2copy.s
@@ -1,107 +1,106 @@
-
ZERO_ARITY_DESCRIPTOR_OFFSET = -4
COPY_RECORDS_WITHOUT_POINTERS_TO_END_OF_HEAP = 1
- str r9,[sp,#-4]!
+ str ASTACK_PTR,[sp,#-4]!
- lao r12,heap_p2,9
- ldo r10,r12,heap_p2,9
+ lao SCRATCH_REG,heap_p2,9
+ ldo HEAP_PTR,SCRATCH_REG,heap_p2,9
- lao r12,heap_size_129,4
- ldo r4,r12,heap_size_129,4
- lsl r4,r4,#6
+ lao SCRATCH_REG,heap_size_129,4
+ ldo BSTACK_0,SCRATCH_REG,heap_size_129,4
+ lsl BSTACK_0,BSTACK_0,#6
- lao r12,semi_space_size,0
- sto r4,r12,semi_space_size,0
+ lao SCRATCH_REG,semi_space_size,0
+ sto BSTACK_0,SCRATCH_REG,semi_space_size,0
- add r9,r10,r4
+ add ASTACK_PTR,HEAP_PTR,BSTACK_0
-@ r0 = INT+2
-@ r1 = CHAR+2
- laol r0,INT+2,INT_o_2,6
- laol r1,CHAR+2,CHAR_o_2,2
- otoa r0,INT_o_2,6
- otoa r1,CHAR_o_2,2
+@ BSTACK_4 = INT+2
+@ BSTACK_3 = CHAR+2
+ laol BSTACK_4,INT+2,INT_o_2,6
+ laol BSTACK_3,CHAR+2,CHAR_o_2,2
+ otoa BSTACK_4,INT_o_2,6
+ otoa BSTACK_3,CHAR_o_2,2
.if WRITE_HEAP
- laol r12,heap2_begin_and_end+4,heap2_begin_and_end_o_4,0
- sto r9,r12,heap2_begin_and_end_o_4,0
+ laol SCRATCH_REG,heap2_begin_and_end+4,heap2_begin_and_end_o_4,0
+ sto ASTACK_PTR,SCRATCH_REG,heap2_begin_and_end_o_4,0
.endif
sub sp,sp,#16
- lao r12,caf_list,0
- ldo r4,r12,caf_list,0
- tst r4,r4
+ lao SCRATCH_REG,caf_list,0
+ ldo BSTACK_0,SCRATCH_REG,caf_list,0
+ tst BSTACK_0,BSTACK_0
beq end_copy_cafs
copy_cafs_lp:
- ldr r12,[r4,#-4]
- str r12,[sp,#-4]!
+ ldr SCRATCH_REG,[BSTACK_0,#-4]
+ str SCRATCH_REG,[sp,#-4]!
- add r8,r4,#4
- ldr r3,[r4]
- mov r2,#-2
+ add ASTACK_2,BSTACK_0,#4
+ ldr BSTACK_1,[BSTACK_0]
+ mov BSTACK_2,#-2
bl copy_lp2
- ldr r4,[sp],#4
- cmp r4,#0
+ ldr BSTACK_0,[sp],#4
+ cmp BSTACK_0,#0
bne copy_cafs_lp
end_copy_cafs:
- ldr r3,[sp,#16]
- lao r12,stack_p,4
- ldo r8,r12,stack_p,4
- sub r3,r3,r8
- lsr r3,r3,#2
+ ldr BSTACK_1,[sp,#16]
+ lao SCRATCH_REG,stack_p,4
+ ldo ASTACK_2,SCRATCH_REG,stack_p,4
+ sub BSTACK_1,BSTACK_1,ASTACK_2
+ lsr BSTACK_1,BSTACK_1,#2
- cmp r3,#0
+ cmp BSTACK_1,#0
beq end_copy0
- mov r2,#-2
+ mov BSTACK_2,#-2
bl copy_lp2
end_copy0:
- lao r12,heap_p2,10
- ldo r8,r12,heap_p2,10
+ lao SCRATCH_REG,heap_p2,10
+ ldo ASTACK_2,SCRATCH_REG,heap_p2,10
bl copy_lp1
add sp,sp,#16
- lao r12,heap_end_after_gc,10
- sto r9,r12,heap_end_after_gc,10
+ lao SCRATCH_REG,heap_end_after_gc,10
+ sto ASTACK_PTR,SCRATCH_REG,heap_end_after_gc,10
.ifdef FINALIZERS
- lao r6,finalizer_list,1
- lao r7,free_finalizer_list,3
- otoa r6,finalizer_list,1
- otoa r7,free_finalizer_list,3
- ldr r8,[r6]
+ lao ASTACK_0,finalizer_list,1
+ lao ASTACK_1,free_finalizer_list,3
+ otoa ASTACK_0,finalizer_list,1
+ otoa ASTACK_1,free_finalizer_list,3
+ ldr ASTACK_2,[ASTACK_0]
determine_free_finalizers_after_copy:
- ldr r4,[r8]
- tst r4,#1
+ ldr BSTACK_0,[ASTACK_2]
+ tst BSTACK_0,#1
beq finalizer_not_used_after_copy
- ldr r8,[r8,#4]
- sub r4,r4,#1
- str r4,[r6]
- add r6,r4,#4
+ ldr ASTACK_2,[ASTACK_2,#4]
+ sub BSTACK_0,BSTACK_0,#1
+ str BSTACK_0,[ASTACK_0]
+ add ASTACK_0,BSTACK_0,#4
b determine_free_finalizers_after_copy
finalizer_not_used_after_copy:
- laol r12,__Nil-4,__Nil_o_m4,3
- otoa r12,__Nil_o_m4,3
- cmp r8,r12
+ laol SCRATCH_REG,__Nil-4,__Nil_o_m4,3
+ otoa SCRATCH_REG,__Nil_o_m4,3
+ cmp ASTACK_2,SCRATCH_REG
beq end_finalizers_after_copy
- str r8,[r7]
- add r7,r8,#4
- ldr r8,[r8,#4]
+ str ASTACK_2,[ASTACK_1]
+ add ASTACK_1,ASTACK_2,#4
+ ldr ASTACK_2,[ASTACK_2,#4]
b determine_free_finalizers_after_copy
end_finalizers_after_copy:
- str r8,[r6]
- str r8,[r7]
+ str ASTACK_2,[ASTACK_0]
+ str ASTACK_2,[ASTACK_1]
.endif
b skip_copy_gc
@@ -133,998 +132,998 @@ end_finalizers_after_copy:
@
copy_lp2_lp1_all_pointers:
- add r2,r8,r3,lsl #2
+ add BSTACK_2,ASTACK_2,BSTACK_1,lsl #2
copy_lp2_lp1:
copy_lp2:
- ldr r7,[r8],#4
- sub r5,r8,#4
+ ldr ASTACK_1,[ASTACK_2],#4
+ sub HEAP_FREE,ASTACK_2,#4
copy_lp2__lp1:
copy_lp2_:
@ selectors:
continue_after_selector_2:
- ldr r6,[r7]
- tst r6,#2
+ ldr ASTACK_0,[ASTACK_1]
+ tst ASTACK_0,#2
beq not_in_hnf_2
in_hnf_2:
- ldrh r4,[r6,#-2]
- cmp r4,#0
+ ldrh BSTACK_0,[ASTACK_0,#-2]
+ cmp BSTACK_0,#0
beq copy_arity_0_node2
- cmp r4,#256
+ cmp BSTACK_0,#256
bhs copy_record_2
- subs r4,r4,#2
- str r10,[r5]
+ subs BSTACK_0,BSTACK_0,#2
+ str HEAP_PTR,[HEAP_FREE]
bhi copy_hnf_node2_3
- str r6,[r10]
+ str ASTACK_0,[HEAP_PTR]
blo copy_hnf_node2_1
- ldr r6,[r7,#4]
+ ldr ASTACK_0,[ASTACK_1,#4]
- str r10,[r7]
- ldr r4,[r7,#8]
+ str HEAP_PTR,[ASTACK_1]
+ ldr BSTACK_0,[ASTACK_1,#8]
- subs r3,r3,#1
- str r6,[r10,#4]
+ subs BSTACK_1,BSTACK_1,#1
+ str ASTACK_0,[HEAP_PTR,#4]
- str r4,[r10,#8]
- add r10,r10,#12
+ str BSTACK_0,[HEAP_PTR,#8]
+ add HEAP_PTR,HEAP_PTR,#12
bne copy_lp2
- mov r8,r2
+ mov ASTACK_2,BSTACK_2
b copy_lp1
copy_hnf_node2_1:
- ldr r4,[r7,#4]
+ ldr BSTACK_0,[ASTACK_1,#4]
- subs r3,r3,#1
- str r10,[r7]
+ subs BSTACK_1,BSTACK_1,#1
+ str HEAP_PTR,[ASTACK_1]
- str r4,[r10,#4]
- add r10,r10,#8
+ str BSTACK_0,[HEAP_PTR,#4]
+ add HEAP_PTR,HEAP_PTR,#8
bne copy_lp2
- mov r8,r2
+ mov ASTACK_2,BSTACK_2
b copy_lp1
copy_hnf_node2_3:
- str r6,[r10],#1
+ str ASTACK_0,[HEAP_PTR],#1
- str r10,[r7]
- ldr r6,[r7,#4]
+ str HEAP_PTR,[ASTACK_1]
+ ldr ASTACK_0,[ASTACK_1,#4]
- str r6,[r10,#4-1]
- ldr r6,[r7,#8]
+ str ASTACK_0,[HEAP_PTR,#4-1]
+ ldr ASTACK_0,[ASTACK_1,#8]
- add r10,r10,#12-1
- ldr r7,[r6]
+ add HEAP_PTR,HEAP_PTR,#12-1
+ ldr ASTACK_1,[ASTACK_0]
- tst r7,#1
+ tst ASTACK_1,#1
bne arguments_already_copied_2
- str r10,[r10,#-4]
+ str HEAP_PTR,[HEAP_PTR,#-4]
- str r7,[r10],#1
+ str ASTACK_1,[HEAP_PTR],#1
- str r10,[r6],#4
- add r10,r10,#4-1
+ str HEAP_PTR,[ASTACK_0],#4
+ add HEAP_PTR,HEAP_PTR,#4-1
cp_hnf_arg_lp2:
- ldr r7,[r6],#4
- str r7,[r10],#4
- subs r4,r4,#1
+ ldr ASTACK_1,[ASTACK_0],#4
+ str ASTACK_1,[HEAP_PTR],#4
+ subs BSTACK_0,BSTACK_0,#1
bne cp_hnf_arg_lp2
- subs r3,r3,#1
+ subs BSTACK_1,BSTACK_1,#1
bne copy_lp2
- mov r8,r2
+ mov ASTACK_2,BSTACK_2
b copy_lp1
arguments_already_copied_2:
- str r7,[r10,#-4]
+ str ASTACK_1,[HEAP_PTR,#-4]
- subs r3,r3,#1
+ subs BSTACK_1,BSTACK_1,#1
bne copy_lp2
- mov r8,r2
+ mov ASTACK_2,BSTACK_2
b copy_lp1
copy_arity_0_node2:
- cmp r6,r0 @ INT+2
+ cmp ASTACK_0,BSTACK_4 @ INT+2
blo copy_real_file_or_string_2
- cmp r6,r1 @ CHAR+2
+ cmp ASTACK_0,BSTACK_3 @ CHAR+2
bhi copy_normal_hnf_0_2
copy_int_bool_or_char_2:
- ldr r4,[r7,#4]
+ ldr BSTACK_0,[ASTACK_1,#4]
beq copy_char_2
- cmp r6,r0 @ INT+2
+ cmp ASTACK_0,BSTACK_4 @ INT+2
bne no_small_int_or_char_2
copy_int_2:
- cmp r4,#33
+ cmp BSTACK_0,#33
bhs no_small_int_or_char_2
- lao r12,small_integers,1
- subs r3,r3,#1
- otoa r12,small_integers,1
+ lao SCRATCH_REG,small_integers,1
+ subs BSTACK_1,BSTACK_1,#1
+ otoa SCRATCH_REG,small_integers,1
- add r4,r12,r4,lsl #3
+ add BSTACK_0,SCRATCH_REG,BSTACK_0,lsl #3
- str r4,[r5]
+ str BSTACK_0,[HEAP_FREE]
bne copy_lp2
- mov r8,r2
+ mov ASTACK_2,BSTACK_2
b copy_lp1
copy_char_2:
- and r4,r4,#255
+ and BSTACK_0,BSTACK_0,#255
- lao r12,static_characters,1
- subs r3,r3,#1
- otoa r12,static_characters,1
+ lao SCRATCH_REG,static_characters,1
+ subs BSTACK_1,BSTACK_1,#1
+ otoa SCRATCH_REG,static_characters,1
- add r4,r12,r4,lsl #3
+ add BSTACK_0,SCRATCH_REG,BSTACK_0,lsl #3
- str r4,[r5]
+ str BSTACK_0,[HEAP_FREE]
bne copy_lp2
- mov r8,r2
+ mov ASTACK_2,BSTACK_2
b copy_lp1
no_small_int_or_char_2:
copy_record_node2_1_b:
- str r6,[r9,#-8]
+ str ASTACK_0,[ASTACK_PTR,#-8]
- str r4,[r9,#-4]
- sub r9,r9,#7
+ str BSTACK_0,[ASTACK_PTR,#-4]
+ sub ASTACK_PTR,ASTACK_PTR,#7
- str r9,[r7]
- sub r9,r9,#1
+ str ASTACK_PTR,[ASTACK_1]
+ sub ASTACK_PTR,ASTACK_PTR,#1
- str r9,[r5]
+ str ASTACK_PTR,[HEAP_FREE]
- subs r3,r3,#1
+ subs BSTACK_1,BSTACK_1,#1
bne copy_lp2
- mov r8,r2
+ mov ASTACK_2,BSTACK_2
b copy_lp1
copy_normal_hnf_0_2:
- sub r6,r6,#2-ZERO_ARITY_DESCRIPTOR_OFFSET
- subs r3,r3,#1
+ sub ASTACK_0,ASTACK_0,#2-ZERO_ARITY_DESCRIPTOR_OFFSET
+ subs BSTACK_1,BSTACK_1,#1
- str r6,[r5]
+ str ASTACK_0,[HEAP_FREE]
bne copy_lp2
- mov r8,r2
+ mov ASTACK_2,BSTACK_2
b copy_lp1
copy_real_file_or_string_2:
- laol r12,__STRING__+2,__STRING___o_2,7
- otoa r12,__STRING___o_2,7
- cmp r6,r12
+ laol SCRATCH_REG,__STRING__+2,__STRING___o_2,7
+ otoa SCRATCH_REG,__STRING___o_2,7
+ cmp ASTACK_0,SCRATCH_REG
bls copy_string_or_array_2
copy_real_or_file_2:
- str r6,[r9,#-12]
- sub r9,r9,#12-1
+ str ASTACK_0,[ASTACK_PTR,#-12]
+ sub ASTACK_PTR,ASTACK_PTR,#12-1
- str r9,[r7]
- sub r9,r9,#1
+ str ASTACK_PTR,[ASTACK_1]
+ sub ASTACK_PTR,ASTACK_PTR,#1
- ldr r4,[r7,#4]
- ldr r6,[r7,#8]
+ ldr BSTACK_0,[ASTACK_1,#4]
+ ldr ASTACK_0,[ASTACK_1,#8]
- str r9,[r5]
+ str ASTACK_PTR,[HEAP_FREE]
- str r4,[r9,#4]
- subs r3,r3,#1
+ str BSTACK_0,[ASTACK_PTR,#4]
+ subs BSTACK_1,BSTACK_1,#1
- str r6,[r9,#8]
+ str ASTACK_0,[ASTACK_PTR,#8]
bne copy_lp2
- mov r8,r2
+ mov ASTACK_2,BSTACK_2
b copy_lp1
already_copied_2:
- add r6,r6,#1
- subs r3,r3,#1
+ add ASTACK_0,ASTACK_0,#1
+ subs BSTACK_1,BSTACK_1,#1
- str r6,[r5]
+ str ASTACK_0,[HEAP_FREE]
bne copy_lp2
- mov r8,r2
+ mov ASTACK_2,BSTACK_2
b copy_lp1
copy_record_2:
- ldrh r12,[r6,#-3+2]
- sub r4,r4,#256
- subs r4,#2
+ ldrh SCRATCH_REG,[ASTACK_0,#-3+2]
+ sub BSTACK_0,BSTACK_0,#256
+ subs BSTACK_0,#2
bhi copy_record_node2_3
blo copy_record_node2_1
- cmp r12,#0
+ cmp SCRATCH_REG,#0
beq copy_real_or_file_2
- str r10,[r5]
- str r6,[r10]
+ str HEAP_PTR,[HEAP_FREE]
+ str ASTACK_0,[HEAP_PTR]
- add r6,r10,#1
- ldr r4,[r7,#4]
+ add ASTACK_0,HEAP_PTR,#1
+ ldr BSTACK_0,[ASTACK_1,#4]
- str r6,[r7]
+ str ASTACK_0,[ASTACK_1]
- str r4,[r10,#4]
- ldr r4,[r7,#8]
+ str BSTACK_0,[HEAP_PTR,#4]
+ ldr BSTACK_0,[ASTACK_1,#8]
- str r4,[r10,#8]
+ str BSTACK_0,[HEAP_PTR,#8]
- add r10,r10,#12
- subs r3,r3,#1
+ add HEAP_PTR,HEAP_PTR,#12
+ subs BSTACK_1,BSTACK_1,#1
bne copy_lp2
- mov r8,r2
+ mov ASTACK_2,BSTACK_2
b copy_lp1
copy_record_node2_1:
- ldr r4,[r7,#4]
+ ldr BSTACK_0,[ASTACK_1,#4]
- cmp r12,#0
+ cmp SCRATCH_REG,#0
beq copy_record_node2_1_b
- str r10,[r5]
- str r6,[r10]
+ str HEAP_PTR,[HEAP_FREE]
+ str ASTACK_0,[HEAP_PTR]
- add r6,r10,#1
- str r4,[r10,#4]
+ add ASTACK_0,HEAP_PTR,#1
+ str BSTACK_0,[HEAP_PTR,#4]
- str r6,[r7]
+ str ASTACK_0,[ASTACK_1]
- add r10,r10,#8
- subs r3,r3,#1
+ add HEAP_PTR,HEAP_PTR,#8
+ subs BSTACK_1,BSTACK_1,#1
bne copy_lp2
- mov r8,r2
+ mov ASTACK_2,BSTACK_2
b copy_lp1
copy_record_node2_3:
- cmp r12,#1
+ cmp SCRATCH_REG,#1
bls copy_record_node2_3_ab_or_b
- str r4,[sp,#-4]!
- add r4,r10,#1
+ str BSTACK_0,[sp,#-4]!
+ add BSTACK_0,HEAP_PTR,#1
- str r4,[r7]
- ldr r4,[r7,#8]
+ str BSTACK_0,[ASTACK_1]
+ ldr BSTACK_0,[ASTACK_1,#8]
- str r6,[r10]
- ldr r7,[r7,#4]
+ str ASTACK_0,[HEAP_PTR]
+ ldr ASTACK_1,[ASTACK_1,#4]
- str r7,[r10,#4]
- str r10,[r5]
+ str ASTACK_1,[HEAP_PTR,#4]
+ str HEAP_PTR,[HEAP_FREE]
- ldr r12,[r4]
- mov r6,r4
- tst r12,#1
+ ldr SCRATCH_REG,[BSTACK_0]
+ mov ASTACK_0,BSTACK_0
+ tst SCRATCH_REG,#1
bne record_arguments_already_copied_2
- add r7,r10,#12
+ add ASTACK_1,HEAP_PTR,#12
- ldr r4,[sp],#4
- str r7,[r10,#8]
+ ldr BSTACK_0,[sp],#4
+ str ASTACK_1,[HEAP_PTR,#8]
- add r10,r10,#13
- ldr r7,[r6]
+ add HEAP_PTR,HEAP_PTR,#13
+ ldr ASTACK_1,[ASTACK_0]
- str r10,[r6],#4
+ str HEAP_PTR,[ASTACK_0],#4
- str r7,[r10,#-1]
- add r10,r10,#3
+ str ASTACK_1,[HEAP_PTR,#-1]
+ add HEAP_PTR,HEAP_PTR,#3
cp_record_arg_lp2:
- ldr r7,[r6],#4
+ ldr ASTACK_1,[ASTACK_0],#4
- str r7,[r10],#4
+ str ASTACK_1,[HEAP_PTR],#4
- subs r4,r4,#1
+ subs BSTACK_0,BSTACK_0,#1
bne cp_record_arg_lp2
- subs r3,r3,#1
+ subs BSTACK_1,BSTACK_1,#1
bne copy_lp2
- mov r8,r2
+ mov ASTACK_2,BSTACK_2
b copy_lp1
record_arguments_already_copied_2:
- ldr r7,[r6]
- ldr r4,[sp],#4
+ ldr ASTACK_1,[ASTACK_0]
+ ldr BSTACK_0,[sp],#4
- str r7,[r10,#8]
- add r10,r10,#12
+ str ASTACK_1,[HEAP_PTR,#8]
+ add HEAP_PTR,HEAP_PTR,#12
- subs r3,r3,#1
+ subs BSTACK_1,BSTACK_1,#1
bne copy_lp2
- mov r8,r2
+ mov ASTACK_2,BSTACK_2
b copy_lp1
copy_record_node2_3_ab_or_b:
blo copy_record_node2_3_b
copy_record_node2_3_ab:
- str r4,[sp,#-4]!
- add r4,r10,#1
+ str BSTACK_0,[sp,#-4]!
+ add BSTACK_0,HEAP_PTR,#1
- lao r12,heap_p1,9
+ lao SCRATCH_REG,heap_p1,9
- str r4,[r7]
- ldr r4,[r7,#8]
+ str BSTACK_0,[ASTACK_1]
+ ldr BSTACK_0,[ASTACK_1,#8]
- ldo r12,r12,heap_p1,9
+ ldo SCRATCH_REG,SCRATCH_REG,heap_p1,9
- str r6,[r10]
- ldr r7,[r7,#4]
+ str ASTACK_0,[HEAP_PTR]
+ ldr ASTACK_1,[ASTACK_1,#4]
- mov r6,r4
- sub r4,r4,r12
+ mov ASTACK_0,BSTACK_0
+ sub BSTACK_0,BSTACK_0,SCRATCH_REG
- lao r12,heap_copied_vector,4
+ lao SCRATCH_REG,heap_copied_vector,4
- str r7,[r10,#4]
+ str ASTACK_1,[HEAP_PTR,#4]
- lsr r7,r4,#6
- lsr r4,r4,#3
+ lsr ASTACK_1,BSTACK_0,#6
+ lsr BSTACK_0,BSTACK_0,#3
- and r4,r4,#31
+ and BSTACK_0,BSTACK_0,#31
- ldo r12,r12,heap_copied_vector,4
- and r7,r7,#-4
+ ldo SCRATCH_REG,SCRATCH_REG,heap_copied_vector,4
+ and ASTACK_1,ASTACK_1,#-4
- str r10,[r5]
+ str HEAP_PTR,[HEAP_FREE]
- add r7,r7,r12
+ add ASTACK_1,ASTACK_1,SCRATCH_REG
- mov r12,#1
- lsl r4,r12,r4
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
- ldr r12,[r7]
- tst r4,r12
+ ldr SCRATCH_REG,[ASTACK_1]
+ tst BSTACK_0,SCRATCH_REG
bne record_arguments_already_copied_2
- orr r12,r12,r4
- str r12,[r7]
- ldr r4,[sp],#4
+ orr SCRATCH_REG,SCRATCH_REG,BSTACK_0
+ str SCRATCH_REG,[ASTACK_1]
+ ldr BSTACK_0,[sp],#4
- sub r9,r9,#4
+ sub ASTACK_PTR,ASTACK_PTR,#4
- lsl r4,r4,#2
- sub r9,r9,r4
+ lsl BSTACK_0,BSTACK_0,#2
+ sub ASTACK_PTR,ASTACK_PTR,BSTACK_0
- str r9,[sp,#-4]!
- add r9,r9,#1
+ str ASTACK_PTR,[sp,#-4]!
+ add ASTACK_PTR,ASTACK_PTR,#1
- str r9,[r10,#8]
- add r10,r10,#12
+ str ASTACK_PTR,[HEAP_PTR,#8]
+ add HEAP_PTR,HEAP_PTR,#12
- ldr r7,[r6]
+ ldr ASTACK_1,[ASTACK_0]
b cp_record_arg_lp3_c
copy_record_node2_3_b:
- str r4,[sp,#-4]!
- add r4,r9,#-12+1
+ str BSTACK_0,[sp,#-4]!
+ add BSTACK_0,ASTACK_PTR,#-12+1
- lao r12,heap_p1,10
+ lao SCRATCH_REG,heap_p1,10
- str r4,[r7]
- ldr r4,[r7,#8]
+ str BSTACK_0,[ASTACK_1]
+ ldr BSTACK_0,[ASTACK_1,#8]
- ldo r12,r12,heap_p1,10
+ ldo SCRATCH_REG,SCRATCH_REG,heap_p1,10
- str r6,[r9,#-12]
- ldr r7,[r7,#4]
+ str ASTACK_0,[ASTACK_PTR,#-12]
+ ldr ASTACK_1,[ASTACK_1,#4]
- mov r6,r4
- sub r4,r4,r12
+ mov ASTACK_0,BSTACK_0
+ sub BSTACK_0,BSTACK_0,SCRATCH_REG
- lao r12,heap_copied_vector,5
+ lao SCRATCH_REG,heap_copied_vector,5
- str r7,[r9,#-8]
+ str ASTACK_1,[ASTACK_PTR,#-8]
- lsr r7,r4,#6
- sub r9,r9,#12
- lsr r4,r4,#3
+ lsr ASTACK_1,BSTACK_0,#6
+ sub ASTACK_PTR,ASTACK_PTR,#12
+ lsr BSTACK_0,BSTACK_0,#3
- and r4,r4,#31
+ and BSTACK_0,BSTACK_0,#31
- ldo r12,r12,heap_copied_vector,5
- and r7,r7,#-4
+ ldo SCRATCH_REG,SCRATCH_REG,heap_copied_vector,5
+ and ASTACK_1,ASTACK_1,#-4
- str r9,[r5]
+ str ASTACK_PTR,[HEAP_FREE]
- add r7,r7,r12
+ add ASTACK_1,ASTACK_1,SCRATCH_REG
- mov r12,#1
- lsl r4,r12,r4
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
- ldr r12,[r7]
- tst r4,r12
+ ldr SCRATCH_REG,[ASTACK_1]
+ tst BSTACK_0,SCRATCH_REG
bne record_arguments_already_copied_3_b
- orr r12,r12,r4
- str r12,[r7]
- ldr r4,[sp],#4
+ orr SCRATCH_REG,SCRATCH_REG,BSTACK_0
+ str SCRATCH_REG,[ASTACK_1]
+ ldr BSTACK_0,[sp],#4
- mov r7,r9
- sub r9,r9,#4
+ mov ASTACK_1,ASTACK_PTR
+ sub ASTACK_PTR,ASTACK_PTR,#4
- lsl r4,r4,#2
- sub r9,r9,r4
+ lsl BSTACK_0,BSTACK_0,#2
+ sub ASTACK_PTR,ASTACK_PTR,BSTACK_0
- str r9,[r7,#8]
+ str ASTACK_PTR,[ASTACK_1,#8]
- ldr r7,[r6]
+ ldr ASTACK_1,[ASTACK_0]
- str r9,[sp,#-4]!
- add r9,r9,#1
+ str ASTACK_PTR,[sp,#-4]!
+ add ASTACK_PTR,ASTACK_PTR,#1
cp_record_arg_lp3_c:
- str r9,[r6],#4
+ str ASTACK_PTR,[ASTACK_0],#4
- str r7,[r9,#-1]
- add r9,r9,#3
+ str ASTACK_1,[ASTACK_PTR,#-1]
+ add ASTACK_PTR,ASTACK_PTR,#3
cp_record_arg_lp3:
- ldr r7,[r6],#4
+ ldr ASTACK_1,[ASTACK_0],#4
- str r7,[r9],#4
+ str ASTACK_1,[ASTACK_PTR],#4
- subs r4,r4,#4
+ subs BSTACK_0,BSTACK_0,#4
bne cp_record_arg_lp3
- ldr r9,[sp],#4
+ ldr ASTACK_PTR,[sp],#4
- subs r3,r3,#1
+ subs BSTACK_1,BSTACK_1,#1
bne copy_lp2
- mov r8,r2
+ mov ASTACK_2,BSTACK_2
b copy_lp1
record_arguments_already_copied_3_b:
- ldr r7,[r6]
- ldr r4,[sp],#4
+ ldr ASTACK_1,[ASTACK_0]
+ ldr BSTACK_0,[sp],#4
- sub r7,r7,#1
- str r7,[r9,#8]
+ sub ASTACK_1,ASTACK_1,#1
+ str ASTACK_1,[ASTACK_PTR,#8]
- subs r3,r3,#1
+ subs BSTACK_1,BSTACK_1,#1
bne copy_lp2
- mov r8,r2
+ mov ASTACK_2,BSTACK_2
b copy_lp1
not_in_hnf_2:
- tst r6,#1
+ tst ASTACK_0,#1
beq already_copied_2
- ldr r4,[r6,#-5]
- cmp r4,#0
+ ldr BSTACK_0,[ASTACK_0,#-5]
+ cmp BSTACK_0,#0
ble copy_arity_0_node2_
copy_node2_1_:
- and r4,r4,#255
- subs r4,r4,#2
+ and BSTACK_0,BSTACK_0,#255
+ subs BSTACK_0,BSTACK_0,#2
blt copy_arity_1_node2
copy_node2_3:
- str r10,[r5]
- str r6,[r10]
- add r10,r10,#1
- str r10,[r7]
- ldr r6,[r7,#4]
- add r7,r7,#8
- str r6,[r10,#4-1]
- add r10,r10,#8-1
+ str HEAP_PTR,[HEAP_FREE]
+ str ASTACK_0,[HEAP_PTR]
+ add HEAP_PTR,HEAP_PTR,#1
+ str HEAP_PTR,[ASTACK_1]
+ ldr ASTACK_0,[ASTACK_1,#4]
+ add ASTACK_1,ASTACK_1,#8
+ str ASTACK_0,[HEAP_PTR,#4-1]
+ add HEAP_PTR,HEAP_PTR,#8-1
cp_arg_lp2:
- ldr r6,[r7],#4
- str r6,[r10],#4
- subs r4,r4,#1
+ ldr ASTACK_0,[ASTACK_1],#4
+ str ASTACK_0,[HEAP_PTR],#4
+ subs BSTACK_0,BSTACK_0,#1
bhs cp_arg_lp2
- subs r3,r3,#1
+ subs BSTACK_1,BSTACK_1,#1
bne copy_lp2
- mov r8,r2
+ mov ASTACK_2,BSTACK_2
b copy_lp1
copy_arity_1_node2__:
- ldr r3,[sp],#4
+ ldr BSTACK_1,[sp],#4
copy_arity_1_node2:
copy_arity_1_node2_:
- str r10,[r5]
- add r10,r10,#1
+ str HEAP_PTR,[HEAP_FREE]
+ add HEAP_PTR,HEAP_PTR,#1
- str r10,[r7]
+ str HEAP_PTR,[ASTACK_1]
- ldr r4,[r7,#4]
- str r6,[r10,#-1]
+ ldr BSTACK_0,[ASTACK_1,#4]
+ str ASTACK_0,[HEAP_PTR,#-1]
- str r4,[r10,#4-1]
- add r10,r10,#12-1
+ str BSTACK_0,[HEAP_PTR,#4-1]
+ add HEAP_PTR,HEAP_PTR,#12-1
- subs r3,r3,#1
+ subs BSTACK_1,BSTACK_1,#1
bne copy_lp2
- mov r8,r2
+ mov ASTACK_2,BSTACK_2
b copy_lp1
copy_indirection_2:
- mov r4,r7
- ldr r7,[r7,#4]
+ mov BSTACK_0,ASTACK_1
+ ldr ASTACK_1,[ASTACK_1,#4]
- ldr r6,[r7]
- tst r6,#2
+ ldr ASTACK_0,[ASTACK_1]
+ tst ASTACK_0,#2
bne in_hnf_2
- tst r6,#1
+ tst ASTACK_0,#1
beq already_copied_2
- ldr r12,[r6,#-4]
- cmp r12,#-2
+ ldr SCRATCH_REG,[ASTACK_0,#-4]
+ cmp SCRATCH_REG,#-2
beq skip_indirections_2
- movs r4,r12
+ movs BSTACK_0,SCRATCH_REG
ble copy_arity_0_node2_
b copy_node2_1_
skip_indirections_2:
- ldr r7,[r7,#4]
+ ldr ASTACK_1,[ASTACK_1,#4]
- ldr r6,[r7]
- tst r6,#2
+ ldr ASTACK_0,[ASTACK_1]
+ tst ASTACK_0,#2
bne update_indirection_list_2
- tst r6,#1
+ tst ASTACK_0,#1
beq update_indirection_list_2
- ldr r12,[r6,#-4]
- cmp r12,#-2
+ ldr SCRATCH_REG,[ASTACK_0,#-4]
+ cmp SCRATCH_REG,#-2
beq skip_indirections_2
update_indirection_list_2:
- add r6,r4,#4
- ldr r4,[r4,#4]
- str r7,[r6]
- cmp r7,r4
+ add ASTACK_0,BSTACK_0,#4
+ ldr BSTACK_0,[BSTACK_0,#4]
+ str ASTACK_1,[ASTACK_0]
+ cmp ASTACK_1,BSTACK_0
bne update_indirection_list_2
b continue_after_selector_2
copy_selector_2:
- cmp r4,#-2
+ cmp BSTACK_0,#-2
beq copy_indirection_2
blt copy_record_selector_2
- ldr r4,[r7,#4]
+ ldr BSTACK_0,[ASTACK_1,#4]
- str r3,[sp,#-4]!
+ str BSTACK_1,[sp,#-4]!
- ldr r3,[r4]
- tst r3,#2
+ ldr BSTACK_1,[BSTACK_0]
+ tst BSTACK_1,#2
beq copy_arity_1_node2__
- ldrh r12,[r3,#-3]
- cmp r12,#2
+ ldrh SCRATCH_REG,[BSTACK_1,#-3]
+ cmp SCRATCH_REG,#2
bls copy_selector_2_
- ldr r3,[r4,#8]
- ldrb r12,[r3]
- tst r12,#1
+ ldr BSTACK_1,[BSTACK_0,#8]
+ ldrb SCRATCH_REG,[BSTACK_1]
+ tst SCRATCH_REG,#1
bne copy_arity_1_node2__
.ifdef PIC
- add r11,r6,#-9+4
+ add ASTACK_3,ASTACK_0,#-9+4
.endif
- ldr r6,[r6,#-9]
- lao r12,e__system__nind,8
+ ldr ASTACK_0,[ASTACK_0,#-9]
+ lao SCRATCH_REG,e__system__nind,8
.ifdef PIC
- ldrh r6,[r11,r6]
+ ldrh ASTACK_0,[ASTACK_3,ASTACK_0]
.else
- ldrh r6,[r6,#4]
+ ldrh ASTACK_0,[ASTACK_0,#4]
.endif
- otoa r12,e__system__nind,8
- str r12,[r7]
+ otoa SCRATCH_REG,e__system__nind,8
+ str SCRATCH_REG,[ASTACK_1]
- cmp r6,#8
+ cmp ASTACK_0,#8
blt copy_selector_2_1
beq copy_selector_2_2
- sub r3,r3,#12
- ldr r6,[r6,r3]
- ldr r3,[sp],#4
- str r6,[r7,#4]
- mov r7,r6
+ sub BSTACK_1,BSTACK_1,#12
+ ldr ASTACK_0,[ASTACK_0,BSTACK_1]
+ ldr BSTACK_1,[sp],#4
+ str ASTACK_0,[ASTACK_1,#4]
+ mov ASTACK_1,ASTACK_0
b continue_after_selector_2
copy_selector_2_1:
- ldr r6,[r4,#4]
- ldr r3,[sp],#4
- str r6,[r7,#4]
- mov r7,r6
+ ldr ASTACK_0,[BSTACK_0,#4]
+ ldr BSTACK_1,[sp],#4
+ str ASTACK_0,[ASTACK_1,#4]
+ mov ASTACK_1,ASTACK_0
b continue_after_selector_2
copy_selector_2_2:
- ldr r6,[r3]
- ldr r3,[sp],#4
- str r6,[r7,#4]
- mov r7,r6
+ ldr ASTACK_0,[BSTACK_1]
+ ldr BSTACK_1,[sp],#4
+ str ASTACK_0,[ASTACK_1,#4]
+ mov ASTACK_1,ASTACK_0
b continue_after_selector_2
copy_selector_2_:
.ifdef PIC
- add r11,r6,#-9+4
+ add ASTACK_3,ASTACK_0,#-9+4
.endif
- ldr r6,[r6,#-9]
- ldr r3,[sp],#4
+ ldr ASTACK_0,[ASTACK_0,#-9]
+ ldr BSTACK_1,[sp],#4
- lao r12,e__system__nind,9
+ lao SCRATCH_REG,e__system__nind,9
.ifdef PIC
- ldrh r6,[r11,r6]
+ ldrh ASTACK_0,[ASTACK_3,ASTACK_0]
.else
- ldrh r6,[r6,#4]
+ ldrh ASTACK_0,[ASTACK_0,#4]
.endif
- otoa r12,e__system__nind,9
- str r12,[r7]
+ otoa SCRATCH_REG,e__system__nind,9
+ str SCRATCH_REG,[ASTACK_1]
- ldr r6,[r4,r6]
- str r6,[r7,#4]
- mov r7,r6
+ ldr ASTACK_0,[BSTACK_0,ASTACK_0]
+ str ASTACK_0,[ASTACK_1,#4]
+ mov ASTACK_1,ASTACK_0
b continue_after_selector_2
copy_record_selector_2:
- cmp r4,#-3
- ldr r4,[r7,#4]
- ldr r4,[r4]
+ cmp BSTACK_0,#-3
+ ldr BSTACK_0,[ASTACK_1,#4]
+ ldr BSTACK_0,[BSTACK_0]
beq copy_strict_record_selector_2
- tst r4,#2
+ tst BSTACK_0,#2
beq copy_arity_1_node2_
- ldrh r12,[r4,#-3]
- mov r11,#258/2
- cmp r12,r11,lsl #1
+ ldrh SCRATCH_REG,[BSTACK_0,#-3]
+ mov ASTACK_3,#258/2
+ cmp SCRATCH_REG,ASTACK_3,lsl #1
bls copy_record_selector_2_
- ldrh r12,[r4,#-3+2]
- cmp r12,#2
+ ldrh SCRATCH_REG,[BSTACK_0,#-3+2]
+ cmp SCRATCH_REG,#2
bhs copy_selector_2__
- lao r12,heap_p1,11
+ lao SCRATCH_REG,heap_p1,11
- ldr r4,[r7,#4]
- str r7,[sp,#-4]!
+ ldr BSTACK_0,[ASTACK_1,#4]
+ str ASTACK_1,[sp,#-4]!
- ldo r12,r12,heap_p1,11
+ ldo SCRATCH_REG,SCRATCH_REG,heap_p1,11
- ldr r4,[r4,#8]
+ ldr BSTACK_0,[BSTACK_0,#8]
- sub r4,r4,r12
+ sub BSTACK_0,BSTACK_0,SCRATCH_REG
- lao r12,heap_copied_vector,6
+ lao SCRATCH_REG,heap_copied_vector,6
- lsr r7,r4,#6
- lsr r4,r4,#3
+ lsr ASTACK_1,BSTACK_0,#6
+ lsr BSTACK_0,BSTACK_0,#3
- ldo r12,r12,heap_copied_vector,6
+ ldo SCRATCH_REG,SCRATCH_REG,heap_copied_vector,6
- and r7,r7,#-4
- and r4,r4,#31
+ and ASTACK_1,ASTACK_1,#-4
+ and BSTACK_0,BSTACK_0,#31
- add r7,r7,r12
+ add ASTACK_1,ASTACK_1,SCRATCH_REG
- mov r12,#1
- lsl r4,r12,r4
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
- ldr r12,[r7]
- ands r4,r4,r12
- ldr r7,[sp],#4
+ ldr SCRATCH_REG,[ASTACK_1]
+ ands BSTACK_0,BSTACK_0,SCRATCH_REG
+ ldr ASTACK_1,[sp],#4
beq copy_record_selector_2_
b copy_arity_1_node2_
copy_selector_2__:
- ldr r4,[r7,#4]
- ldr r4,[r4,#8]
- ldrb r12,[r4]
- tst r12,#1
+ ldr BSTACK_0,[ASTACK_1,#4]
+ ldr BSTACK_0,[BSTACK_0,#8]
+ ldrb SCRATCH_REG,[BSTACK_0]
+ tst SCRATCH_REG,#1
bne copy_arity_1_node2_
copy_record_selector_2_:
.ifdef PIC
- add r11,r6,#-9+4
+ add ASTACK_3,ASTACK_0,#-9+4
.endif
- ldr r4,[r6,#-9]
- lao r12,e__system__nind,10
- ldr r6,[r7,#4]
- otoa r12,e__system__nind,10
- str r12,[r7]
+ ldr BSTACK_0,[ASTACK_0,#-9]
+ lao SCRATCH_REG,e__system__nind,10
+ ldr ASTACK_0,[ASTACK_1,#4]
+ otoa SCRATCH_REG,e__system__nind,10
+ str SCRATCH_REG,[ASTACK_1]
.ifdef PIC
- ldrh r4,[r11,r4]
+ ldrh BSTACK_0,[ASTACK_3,BSTACK_0]
.else
- ldrh r4,[r4,#4]
+ ldrh BSTACK_0,[BSTACK_0,#4]
.endif
- cmp r4,#8
+ cmp BSTACK_0,#8
ble copy_record_selector_3
- ldr r6,[r6,#8]
- sub r4,r4,#12
+ ldr ASTACK_0,[ASTACK_0,#8]
+ sub BSTACK_0,BSTACK_0,#12
copy_record_selector_3:
- ldr r6,[r6,r4]
+ ldr ASTACK_0,[ASTACK_0,BSTACK_0]
- str r6,[r7,#4]
+ str ASTACK_0,[ASTACK_1,#4]
- mov r7,r6
+ mov ASTACK_1,ASTACK_0
b continue_after_selector_2
copy_strict_record_selector_2:
- tst r4,#2
+ tst BSTACK_0,#2
beq copy_arity_1_node2_
- ldrh r12,[r4,#-3]
- mov r11,#258/2
- cmp r12,r11,lsl #1
+ ldrh SCRATCH_REG,[BSTACK_0,#-3]
+ mov ASTACK_3,#258/2
+ cmp SCRATCH_REG,ASTACK_3,lsl #1
bls copy_strict_record_selector_2_
- ldrh r12,[r4,#-3+2]
- cmp r12,#2
+ ldrh SCRATCH_REG,[BSTACK_0,#-3+2]
+ cmp SCRATCH_REG,#2
blo copy_strict_record_selector_2_b
- ldr r4,[r7,#4]
- ldr r4,[r4,#8]
- ldrb r12,[r4]
- tst r12,#1
+ ldr BSTACK_0,[ASTACK_1,#4]
+ ldr BSTACK_0,[BSTACK_0,#8]
+ ldrb SCRATCH_REG,[BSTACK_0]
+ tst SCRATCH_REG,#1
bne copy_arity_1_node2_
b copy_strict_record_selector_2_
copy_strict_record_selector_2_b:
- lao r12,heap_p1,12
+ lao SCRATCH_REG,heap_p1,12
- ldr r4,[r7,#4]
- str r7,[sp,#-4]!
+ ldr BSTACK_0,[ASTACK_1,#4]
+ str ASTACK_1,[sp,#-4]!
- ldo r12,r12,heap_p1,12
+ ldo SCRATCH_REG,SCRATCH_REG,heap_p1,12
- ldr r4,[r4,#8]
+ ldr BSTACK_0,[BSTACK_0,#8]
- sub r4,r4,r12
+ sub BSTACK_0,BSTACK_0,SCRATCH_REG
- lao r12,heap_copied_vector,7
+ lao SCRATCH_REG,heap_copied_vector,7
- lsr r7,r4,#6
- lsr r4,r4,#3
+ lsr ASTACK_1,BSTACK_0,#6
+ lsr BSTACK_0,BSTACK_0,#3
- ldo r12,r12,heap_copied_vector,7
+ ldo SCRATCH_REG,SCRATCH_REG,heap_copied_vector,7
- and r7,r7,#-4
- and r4,r4,#31
+ and ASTACK_1,ASTACK_1,#-4
+ and BSTACK_0,BSTACK_0,#31
- add r7,r7,r12
+ add ASTACK_1,ASTACK_1,SCRATCH_REG
- mov r12,#1
- lsl r4,r12,r4
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
- ldr r12,[r7]
- ands r4,r4,r12
- ldr r7,[sp],#4
+ ldr SCRATCH_REG,[ASTACK_1]
+ ands BSTACK_0,BSTACK_0,SCRATCH_REG
+ ldr ASTACK_1,[sp],#4
bne copy_arity_1_node2_
copy_strict_record_selector_2_:
.ifdef PIC
- add r11,r6,#-9+4
+ add ASTACK_3,ASTACK_0,#-9+4
.endif
- ldr r4,[r6,#-9]
+ ldr BSTACK_0,[ASTACK_0,#-9]
- str r3,[sp,#-4]!
- ldr r6,[r7,#4]
+ str BSTACK_1,[sp,#-4]!
+ ldr ASTACK_0,[ASTACK_1,#4]
.ifdef PIC
- ldrh r3,[r4,r11]!
+ ldrh BSTACK_1,[BSTACK_0,ASTACK_3]!
.else
- ldrh r3,[r4,#4]
+ ldrh BSTACK_1,[BSTACK_0,#4]
.endif
- cmp r3,#8
+ cmp BSTACK_1,#8
ble copy_strict_record_selector_3
- ldr r12,[r6,#8]
- add r3,r3,r12
- ldr r3,[r3,#-12]
+ ldr SCRATCH_REG,[ASTACK_0,#8]
+ add BSTACK_1,BSTACK_1,SCRATCH_REG
+ ldr BSTACK_1,[BSTACK_1,#-12]
b copy_strict_record_selector_4
copy_strict_record_selector_3:
- ldr r3,[r6,r3]
+ ldr BSTACK_1,[ASTACK_0,BSTACK_1]
copy_strict_record_selector_4:
- str r3,[r7,#4]
+ str BSTACK_1,[ASTACK_1,#4]
.ifdef PIC
- ldrh r3,[r4,#6-4]
+ ldrh BSTACK_1,[BSTACK_0,#6-4]
.else
- ldrh r3,[r4,#6]
+ ldrh BSTACK_1,[BSTACK_0,#6]
.endif
- tst r3,r3
+ tst BSTACK_1,BSTACK_1
beq copy_strict_record_selector_6
- cmp r3,#8
+ cmp BSTACK_1,#8
ble copy_strict_record_selector_5
- ldr r6,[r6,#8]
- sub r3,r3,#12
+ ldr ASTACK_0,[ASTACK_0,#8]
+ sub BSTACK_1,BSTACK_1,#12
copy_strict_record_selector_5:
- ldr r3,[r6,r3]
- str r3,[r7,#8]
+ ldr BSTACK_1,[ASTACK_0,BSTACK_1]
+ str BSTACK_1,[ASTACK_1,#8]
copy_strict_record_selector_6:
.ifdef PIC
- ldr r6,[r4,#-4-4]
+ ldr ASTACK_0,[BSTACK_0,#-4-4]
.else
- ldr r6,[r4,#-4]
+ ldr ASTACK_0,[BSTACK_0,#-4]
.endif
- str r6,[r7]
- ldr r3,[sp],#4
- tst r6,#2
+ str ASTACK_0,[ASTACK_1]
+ ldr BSTACK_1,[sp],#4
+ tst ASTACK_0,#2
bne in_hnf_2
hlt: b hlt
copy_arity_0_node2_:
blt copy_selector_2
- str r6,[r9,#-12]!
- str r9,[r5]
- add r4,r9,#1
- @str r4,[r5]
- @sub r4,r4,#1
- @mov r4,r9
+ str ASTACK_0,[ASTACK_PTR,#-12]!
+ str ASTACK_PTR,[HEAP_FREE]
+ add BSTACK_0,ASTACK_PTR,#1
+ @str BSTACK_0,[HEAP_FREE]
+ @sub BSTACK_0,BSTACK_0,#1
+ @mov BSTACK_0,ASTACK_PTR
- str r4,[r7]
+ str BSTACK_0,[ASTACK_1]
- subs r3,r3,#1
+ subs BSTACK_1,BSTACK_1,#1
bne copy_lp2
- mov r8,r2
+ mov ASTACK_2,BSTACK_2
b copy_lp1
copy_string_or_array_2:
.ifdef DLL
beq copy_string_2
- laol r12,__ARRAY__+2,__ARRAY___o_2,15
- otoa r12,__ARRAY___o_2,15
- cmp r6,r12
+ laol SCRATCH_REG,__ARRAY__+2,__ARRAY___o_2,15
+ otoa SCRATCH_REG,__ARRAY___o_2,15
+ cmp ASTACK_0,SCRATCH_REG
blo copy_normal_hnf_0_2
- mov r6,r7
+ mov ASTACK_0,ASTACK_1
b copy_array_2
copy_string_2:
- mov r6,r7
+ mov ASTACK_0,ASTACK_1
.else
- mov r6,r7
+ mov ASTACK_0,ASTACK_1
bne copy_array_2
.endif
- lao r12,heap_p1,13
- ldo r12,r12,heap_p1,13
- sub r7,r7,r12
+ lao SCRATCH_REG,heap_p1,13
+ ldo SCRATCH_REG,SCRATCH_REG,heap_p1,13
+ sub ASTACK_1,ASTACK_1,SCRATCH_REG
- lao r12,semi_space_size,1
- ldo r12,r12,semi_space_size,1
- cmp r7,r12
+ lao SCRATCH_REG,semi_space_size,1
+ ldo SCRATCH_REG,SCRATCH_REG,semi_space_size,1
+ cmp ASTACK_1,SCRATCH_REG
bhs copy_string_or_array_constant
- ldr r7,[r6,#4]
+ ldr ASTACK_1,[ASTACK_0,#4]
- add r7,r7,#3
- str r3,[sp,#-4]!
+ add ASTACK_1,ASTACK_1,#3
+ str BSTACK_1,[sp,#-4]!
- lsr r4,r7,#2
- and r7,r7,#-4
+ lsr BSTACK_0,ASTACK_1,#2
+ and ASTACK_1,ASTACK_1,#-4
- sub r9,r9,r7
+ sub ASTACK_PTR,ASTACK_PTR,ASTACK_1
- ldr r3,[r6],#4
+ ldr BSTACK_1,[ASTACK_0],#4
- str r3,[r9,#-8]!
+ str BSTACK_1,[ASTACK_PTR,#-8]!
- str r9,[r5]
- add r7,r9,#1
+ str ASTACK_PTR,[HEAP_FREE]
+ add ASTACK_1,ASTACK_PTR,#1
- str r7,[r6,#-4]
- add r7,r9,#4
+ str ASTACK_1,[ASTACK_0,#-4]
+ add ASTACK_1,ASTACK_PTR,#4
cp_s_arg_lp2:
- ldr r3,[r6],#4
+ ldr BSTACK_1,[ASTACK_0],#4
- str r3,[r7],#4
+ str BSTACK_1,[ASTACK_1],#4
- subs r4,r4,#1
+ subs BSTACK_0,BSTACK_0,#1
bge cp_s_arg_lp2
- ldr r3,[sp],#4
- subs r3,r3,#1
+ ldr BSTACK_1,[sp],#4
+ subs BSTACK_1,BSTACK_1,#1
bne copy_lp2
- mov r8,r2
+ mov ASTACK_2,BSTACK_2
b copy_lp1
copy_array_2:
- lao r12,heap_p1,14
- ldo r12,r12,heap_p1,14
- sub r7,r7,r12
+ lao SCRATCH_REG,heap_p1,14
+ ldo SCRATCH_REG,SCRATCH_REG,heap_p1,14
+ sub ASTACK_1,ASTACK_1,SCRATCH_REG
- lao r12,semi_space_size,2
- ldo r12,r12,semi_space_size,2
- cmp r7,r12
+ lao SCRATCH_REG,semi_space_size,2
+ ldo SCRATCH_REG,SCRATCH_REG,semi_space_size,2
+ cmp ASTACK_1,SCRATCH_REG
bhs copy_string_or_array_constant
- str r3,[sp,#-4]!
+ str BSTACK_1,[sp,#-4]!
- ldr r4,[r6,#8]
- cmp r4,#0
+ ldr BSTACK_0,[ASTACK_0,#8]
+ cmp BSTACK_0,#0
beq copy_array_a2
- ldrh r3,[r4,#-3]
+ ldrh BSTACK_1,[BSTACK_0,#-3]
- cmp r3,#0
+ cmp BSTACK_1,#0
beq copy_strict_basic_array_2
- sub r3,r3,#256
- ldr r12,[r6,#4]
- mul r3,r12,r3
+ sub BSTACK_1,BSTACK_1,#256
+ ldr SCRATCH_REG,[ASTACK_0,#4]
+ mul BSTACK_1,SCRATCH_REG,BSTACK_1
b copy_array_a3
copy_array_a2:
- ldr r3,[r6,#4]
+ ldr BSTACK_1,[ASTACK_0,#4]
copy_array_a3:
- mov r7,r10
+ mov ASTACK_1,HEAP_PTR
- add r10,r10,#12
- add r10,r10,r3,lsl #2
+ add HEAP_PTR,HEAP_PTR,#12
+ add HEAP_PTR,HEAP_PTR,BSTACK_1,lsl #2
- str r7,[r5]
- ldr r4,[r6]
+ str ASTACK_1,[HEAP_FREE]
+ ldr BSTACK_0,[ASTACK_0]
- str r4,[r7]
+ str BSTACK_0,[ASTACK_1]
- add r4,r7,#1
- add r7,r7,#4
+ add BSTACK_0,ASTACK_1,#1
+ add ASTACK_1,ASTACK_1,#4
- str r4,[r6],#4
+ str BSTACK_0,[ASTACK_0],#4
- sub r4,r3,#1
+ sub BSTACK_0,BSTACK_1,#1
b cp_s_arg_lp2
copy_strict_basic_array_2:
- ldr r3,[r6,#4]
- cmp r4,r0 @ INT+2
+ ldr BSTACK_1,[ASTACK_0,#4]
+ cmp BSTACK_0,BSTACK_4 @ INT+2
beq copy_int_array_2
- laol r12,BOOL+2,BOOL_o_2,4
- otoa r12,BOOL_o_2,4
- cmp r4,r12
+ laol SCRATCH_REG,BOOL+2,BOOL_o_2,4
+ otoa SCRATCH_REG,BOOL_o_2,4
+ cmp BSTACK_0,SCRATCH_REG
beq copy_bool_array_2
- add r3,r3,r3
+ add BSTACK_1,BSTACK_1,BSTACK_1
copy_int_array_2:
- add r7,r9,#-12
+ add ASTACK_1,ASTACK_PTR,#-12
- sub r7,r7,r3,lsl #2
- ldr r4,[r6]
+ sub ASTACK_1,ASTACK_1,BSTACK_1,lsl #2
+ ldr BSTACK_0,[ASTACK_0]
- str r7,[r5]
+ str ASTACK_1,[HEAP_FREE]
- mov r9,r7
+ mov ASTACK_PTR,ASTACK_1
- str r4,[r7]
- add r4,r7,#1
+ str BSTACK_0,[ASTACK_1]
+ add BSTACK_0,ASTACK_1,#1
- add r7,r7,#4
- str r4,[r6],#4
+ add ASTACK_1,ASTACK_1,#4
+ str BSTACK_0,[ASTACK_0],#4
- add r4,r3,#1
+ add BSTACK_0,BSTACK_1,#1
b cp_s_arg_lp2
copy_bool_array_2:
- add r3,r3,#3
- lsr r3,r3,#2
+ add BSTACK_1,BSTACK_1,#3
+ lsr BSTACK_1,BSTACK_1,#2
b copy_int_array_2
copy_string_or_array_constant:
- str r6,[r5]
+ str ASTACK_0,[HEAP_FREE]
- subs r3,r3,#1
+ subs BSTACK_1,BSTACK_1,#1
bne copy_lp2
- mov r8,r2
+ mov ASTACK_2,BSTACK_2
b copy_lp1
@
@@ -1132,175 +1131,175 @@ copy_string_or_array_constant:
@
copy_lp1:
- cmp r8,r10
+ cmp ASTACK_2,HEAP_PTR
bhs end_copy1
- ldr r4,[r8],#4
- tst r4,#2
+ ldr BSTACK_0,[ASTACK_2],#4
+ tst BSTACK_0,#2
beq not_in_hnf_1
in_hnf_1:
- ldrh r3,[r4,#-2]
+ ldrh BSTACK_1,[BSTACK_0,#-2]
- cmp r3,#0
+ cmp BSTACK_1,#0
beq copy_array_21
- cmp r3,#2
+ cmp BSTACK_1,#2
bls copy_lp2_lp1_all_pointers
- cmp r3,#256
+ cmp BSTACK_1,#256
bhs copy_record_21
- ldr r12,[r8,#4]
- tst r12,#1
+ ldr SCRATCH_REG,[ASTACK_2,#4]
+ tst SCRATCH_REG,#1
bne node_without_arguments_part
- ldr r7,[r8],#8
- sub r5,r8,#8
- sub r2,r8,#4
- add r2,r2,r3,lsl #2
+ ldr ASTACK_1,[ASTACK_2],#8
+ sub HEAP_FREE,ASTACK_2,#8
+ sub BSTACK_2,ASTACK_2,#4
+ add BSTACK_2,BSTACK_2,BSTACK_1,lsl #2
b copy_lp2__lp1
copy_record_21:
- sub r3,r3,#256
- subs r3,r3,#2
+ sub BSTACK_1,BSTACK_1,#256
+ subs BSTACK_1,BSTACK_1,#2
bhi copy_record_arguments_3
- ldrh r3,[r4,#-3+2]
+ ldrh BSTACK_1,[BSTACK_0,#-3+2]
blo copy_record_arguments_1
- add r2,r8,#8
+ add BSTACK_2,ASTACK_2,#8
- cmp r3,#1
+ cmp BSTACK_1,#1
bhi copy_lp2_lp1
b copy_node_arity1
copy_record_arguments_1:
- add r2,r8,#4
+ add BSTACK_2,ASTACK_2,#4
b copy_lp2_lp1
copy_record_arguments_3:
- ldr r12,[r8,#4]
- tst r12,#1
+ ldr SCRATCH_REG,[ASTACK_2,#4]
+ tst SCRATCH_REG,#1
bne record_node_without_arguments_part
- ldrh r7,[r4,#-3+2]
+ ldrh ASTACK_1,[BSTACK_0,#-3+2]
- add r6,r8,r3,lsl #2
- add r2,r6,#3*4
- mov r3,r7
+ add ASTACK_0,ASTACK_2,BSTACK_1,lsl #2
+ add BSTACK_2,ASTACK_0,#3*4
+ mov BSTACK_1,ASTACK_1
- ldr r7,[r8],#8
- sub r5,r8,#8
+ ldr ASTACK_1,[ASTACK_2],#8
+ sub HEAP_FREE,ASTACK_2,#8
b copy_lp2__lp1
node_without_arguments_part:
record_node_without_arguments_part:
- ldr r7,[r8],#8
- sub r4,r12,#1
+ ldr ASTACK_1,[ASTACK_2],#8
+ sub BSTACK_0,SCRATCH_REG,#1
- mov r3,#1
- sub r5,r8,#8
- str r4,[r8,#-4]
- mov r2,r8
+ mov BSTACK_1,#1
+ sub HEAP_FREE,ASTACK_2,#8
+ str BSTACK_0,[ASTACK_2,#-4]
+ mov BSTACK_2,ASTACK_2
b copy_lp2__lp1
not_in_hnf_1:
- ldr r3,[r4,#-5]
- cmp r3,#256
+ ldr BSTACK_1,[BSTACK_0,#-5]
+ cmp BSTACK_1,#256
bgt copy_unboxed_closure_arguments
- cmp r3,#1
+ cmp BSTACK_1,#1
bgt copy_lp2_lp1_all_pointers
copy_node_arity1:
- ldr r7,[r8],#8
- mov r3,#1
- sub r5,r8,#8
- mov r2,r8
+ ldr ASTACK_1,[ASTACK_2],#8
+ mov BSTACK_1,#1
+ sub HEAP_FREE,ASTACK_2,#8
+ mov BSTACK_2,ASTACK_2
b copy_lp2__lp1
copy_unboxed_closure_arguments:
- ldr r12,=257
- cmp r3,r12
+ ldr SCRATCH_REG,=257
+ cmp BSTACK_1,SCRATCH_REG
beq copy_unboxed_closure_arguments1
- uxtb r4,r3,ror #8
- and r2,r3,#255
+ uxtb BSTACK_0,BSTACK_1,ror #8
+ and BSTACK_2,BSTACK_1,#255
- subs r3,r2,r4
- add r2,r8,r2,lsl #2
+ subs BSTACK_1,BSTACK_2,BSTACK_0
+ add BSTACK_2,ASTACK_2,BSTACK_2,lsl #2
bne copy_lp2_lp1
copy_unboxed_closure_arguments_without_pointers:
- mov r8,r2
+ mov ASTACK_2,BSTACK_2
b copy_lp1
copy_unboxed_closure_arguments1:
- add r8,r8,#8
+ add ASTACK_2,ASTACK_2,#8
b copy_lp1
copy_array_21:
- ldr r3,[r8,#4]
- add r8,r8,#8
- cmp r3,#0
+ ldr BSTACK_1,[ASTACK_2,#4]
+ add ASTACK_2,ASTACK_2,#8
+ cmp BSTACK_1,#0
beq copy_array_21_a
- ldrh r4,[r3,#-3]
- ldrh r3,[r3,#-3+2]
- sub r4,r4,#256
- cmp r3,#0
+ ldrh BSTACK_0,[BSTACK_1,#-3]
+ ldrh BSTACK_1,[BSTACK_1,#-3+2]
+ sub BSTACK_0,BSTACK_0,#256
+ cmp BSTACK_1,#0
beq copy_array_21_b
- cmp r3,r4
+ cmp BSTACK_1,BSTACK_0
bne copy_array_21_ab
copy_array_21_r_a:
- ldr r3,[r8,#-9]
- mul r3,r4,r3
- cmp r3,#0
+ ldr BSTACK_1,[ASTACK_2,#-9]
+ mul BSTACK_1,BSTACK_0,BSTACK_1
+ cmp BSTACK_1,#0
beq copy_lp1
b copy_lp2_lp1_all_pointers
copy_array_21_a:
- ldr r3,[r8,#-9]
- cmp r3,#0
+ ldr BSTACK_1,[ASTACK_2,#-9]
+ cmp BSTACK_1,#0
beq copy_lp1
b copy_lp2_lp1_all_pointers
copy_array_21_b:
- ldr r3,[r8,#-9]
- mul r3,r4,r3
- add r8,r8,r3,lsl #2
+ ldr BSTACK_1,[ASTACK_2,#-9]
+ mul BSTACK_1,BSTACK_0,BSTACK_1
+ add ASTACK_2,ASTACK_2,BSTACK_1,lsl #2
b copy_lp1
copy_array_21_ab:
- ldr r12,[r8,#-9]
- cmp r12,#0
+ ldr SCRATCH_REG,[ASTACK_2,#-9]
+ cmp SCRATCH_REG,#0
beq copy_lp1
- str r12,[sp,#0]
- lsl r4,r4,#2
- str r3,[sp,#8]
- str r4,[sp,#4]
+ str SCRATCH_REG,[sp,#0]
+ lsl BSTACK_0,BSTACK_0,#2
+ str BSTACK_1,[sp,#8]
+ str BSTACK_0,[sp,#4]
copy_array_21_lp_ab:
- add r2,r8,r4
- str r2,[sp,#12]
- mov r2,#-1
+ add BSTACK_2,ASTACK_2,BSTACK_0
+ str BSTACK_2,[sp,#12]
+ mov BSTACK_2,#-1
b copy_lp2
end_copy1:
- cmp r8,#-1
+ cmp ASTACK_2,#-1
it ne
bxne lr
copy_array_21_lp_ab_next:
- ldr r8,[sp,#12]
- ldr r12,[sp]
- ldr r3,[sp,#8]
- ldr r4,[sp,#4]
- subs r12,r12,#1
- str r12,[sp]
+ ldr ASTACK_2,[sp,#12]
+ ldr SCRATCH_REG,[sp]
+ ldr BSTACK_1,[sp,#8]
+ ldr BSTACK_0,[sp,#4]
+ subs SCRATCH_REG,SCRATCH_REG,#1
+ str SCRATCH_REG,[sp]
bne copy_array_21_lp_ab
b copy_lp1
diff --git a/thumb2divmod.s b/thumb2divmod.s
index 4a28c13..5ef8cfe 100644
--- a/thumb2divmod.s
+++ b/thumb2divmod.s
@@ -1,3 +1,4 @@
+ .include "thumb2regs.s"
.arch armv7-a
.syntax unified
@@ -9,158 +10,158 @@
.thumb_func
.align
divide:
- eor r12,r3,r4
- cmp r4,#0
+ eor SCRATCH_REG,BSTACK_1,BSTACK_0
+ cmp BSTACK_0,#0
it lt
- neglt r4,r4
- cmp r3,#0
+ neglt BSTACK_0,BSTACK_0
+ cmp BSTACK_1,#0
it lt
- neglt r3,r3
+ neglt BSTACK_1,BSTACK_1
- cmp r4,#32
+ cmp BSTACK_0,#32
bls divide_by_small_number
- clz r1,r4
- clz r2,r3
- rsb r1,r1,#31-5-11
- add r1,r1,r2
- mov r2,#0
+ clz BSTACK_3,BSTACK_0
+ clz BSTACK_2,BSTACK_1
+ rsb BSTACK_3,BSTACK_3,#31-5-11
+ add BSTACK_3,BSTACK_3,BSTACK_2
+ mov BSTACK_2,#0
- cmp r1,#32-5-11
+ cmp BSTACK_3,#32-5-11
bhs divide_large_result
- add r1,r1,r1,lsl #1
+ add BSTACK_3,BSTACK_3,BSTACK_3,lsl #1
.align @ alignment is right now, try to not make this a nop
- add r14,pc,#6
- add r14,r14,r1,lsl #2
- mov pc,r14
+ add LINK_REG,pc,#6
+ add LINK_REG,LINK_REG,BSTACK_3,lsl #2
+ mov pc,LINK_REG
.set shift,32-5-11
.rept 32-5-11
.set shift,shift-1
- subs r1,r3,r4,lsl #shift
+ subs BSTACK_3,BSTACK_1,BSTACK_0,lsl #shift
itt cs
- movcs r3,r1
- orrcs r2,r2,#1<<shift
+ movcs BSTACK_1,BSTACK_3
+ orrcs BSTACK_2,BSTACK_2,#1<<shift
.endr
- mov r4,r2
- cmp r12,#0
+ mov BSTACK_0,BSTACK_2
+ cmp SCRATCH_REG,#0
it lt
- neglt r4,r4
+ neglt BSTACK_0,BSTACK_0
ldr pc,[sp],#4
.thumb_func
divide_large_result:
bpl divide_result_0
- vmov s13,r3
- vmov s15,r4
+ vmov s13,BSTACK_1
+ vmov s15,BSTACK_0
vcvt.f64.u32 d6,s13
vcvt.f64.u32 d7,s15
vdiv.f64 d7,d6,d7
vcvt.u32.f64 s15,d7
- vmov r4,s15
- cmp r12,#0
+ vmov BSTACK_0,s15
+ cmp SCRATCH_REG,#0
it lt
- neglt r4,r4
+ neglt BSTACK_0,BSTACK_0
ldr pc,[sp],#4
divide_result_0:
- mov r4,#0
+ mov BSTACK_0,#0
ldr pc,[sp],#4
.thumb_func
.align
divide_by_small_number:
- mov r1,r4,lsl #3
- add r1,r1,pc
- ldrb r4,[r1,#(div_mod_table+1)-(divide_by_small_number+8)]
- ldr r2,[r1,#(div_mod_table+4)-(divide_by_small_number+8)]
- ldrb r1,[r1,#div_mod_table-(divide_by_small_number+8)]
- adds r3,r3,r4
+ mov BSTACK_3,BSTACK_0,lsl #3
+ add BSTACK_3,BSTACK_3,pc
+ ldrb BSTACK_0,[BSTACK_3,#(div_mod_table+1)-(divide_by_small_number+8)]
+ ldr BSTACK_2,[BSTACK_3,#(div_mod_table+4)-(divide_by_small_number+8)]
+ ldrb BSTACK_3,[BSTACK_3,#div_mod_table-(divide_by_small_number+8)]
+ adds BSTACK_1,BSTACK_1,BSTACK_0
it cc
- umullcc r4,r2,r3,r2
- lsr r4,r2,r1
- cmp r12,#0
+ umullcc BSTACK_0,BSTACK_2,BSTACK_1,BSTACK_2
+ lsr BSTACK_0,BSTACK_2,BSTACK_3
+ cmp SCRATCH_REG,#0
it lt
- neglt r4,r4
+ neglt BSTACK_0,BSTACK_0
ldr pc,[sp],#4
.globl modulo
.thumb_func
modulo:
- cmp r4,#0
+ cmp BSTACK_0,#0
it lt
- neglt r4,r4
- movs r12,r3
+ neglt BSTACK_0,BSTACK_0
+ movs SCRATCH_REG,BSTACK_1
it lt
- neglt r3,r3
+ neglt BSTACK_1,BSTACK_1
- cmp r4,#32
+ cmp BSTACK_0,#32
bls modulo_of_small_number
- clz r1,r4
- clz r2,r3
- rsb r1,r1,#31-5-11
- add r1,r1,r2
+ clz BSTACK_3,BSTACK_0
+ clz BSTACK_2,BSTACK_1
+ rsb BSTACK_3,BSTACK_3,#31-5-11
+ add BSTACK_3,BSTACK_3,BSTACK_2
- cmp r1,#32-5-11
+ cmp BSTACK_3,#32-5-11
bhs modulo_large_divide_result
.align
- add r14,pc,#6
- add r14,r14,r1,lsl #3
- mov pc,r14
+ add LINK_REG,pc,#6
+ add LINK_REG,LINK_REG,BSTACK_3,lsl #3
+ mov pc,LINK_REG
.set shift,32
.rept 32
.set shift,shift-1
- subs r1,r3,r4,lsl #shift
+ subs BSTACK_3,BSTACK_1,BSTACK_0,lsl #shift
it cs
- movcs r3,r1
+ movcs BSTACK_1,BSTACK_3
.endr
modulo_divide_result_0:
- mov r4,r3
- cmp r12,#0
+ mov BSTACK_0,BSTACK_1
+ cmp SCRATCH_REG,#0
it lt
- neglt r4,r4
+ neglt BSTACK_0,BSTACK_0
ldr pc,[sp],#4
.thumb_func
modulo_large_divide_result:
bpl modulo_divide_result_0
- vmov s13,r3
- vmov s15,r4
+ vmov s13,BSTACK_1
+ vmov s15,BSTACK_0
vcvt.f64.u32 d6,s13
vcvt.f64.u32 d7,s15
vdiv.f64 d7,d6,d7
vcvt.u32.f64 s15,d7
- vmov r2,s15
+ vmov BSTACK_2,s15
b modulo_from_quotient
.thumb_func
.align
modulo_of_small_number:
- add r1,pc,#4
- add r1,r1,r4,lsl #3
- ldrb r0,[r1,#(div_mod_table+1)-(modulo_of_small_number+8)]
- ldr r2,[r1,#(div_mod_table+4)-(modulo_of_small_number+8)]
- ldrb r1,[r1,#div_mod_table-(modulo_of_small_number+8)]
- adds r14,r3,r0
+ add BSTACK_3,pc,#4
+ add BSTACK_3,BSTACK_3,BSTACK_0,lsl #3
+ ldrb BSTACK_4,[BSTACK_3,#(div_mod_table+1)-(modulo_of_small_number+8)]
+ ldr BSTACK_2,[BSTACK_3,#(div_mod_table+4)-(modulo_of_small_number+8)]
+ ldrb BSTACK_3,[BSTACK_3,#div_mod_table-(modulo_of_small_number+8)]
+ adds LINK_REG,BSTACK_1,BSTACK_4
it cc
- umullcc r0,r2,r14,r2
- lsr r2,r2,r1
+ umullcc BSTACK_4,BSTACK_2,LINK_REG,BSTACK_2
+ lsr BSTACK_2,BSTACK_2,BSTACK_3
.thumb_func
modulo_from_quotient:
-@ mls r4,r4,r2,r3
- neg r3,r3
- mla r4,r4,r2,r3
- cmp r12,#0
+@ mls BSTACK_0,BSTACK_0,BSTACK_2,BSTACK_1
+ neg BSTACK_1,BSTACK_1
+ mla BSTACK_0,BSTACK_0,BSTACK_2,BSTACK_1
+ cmp SCRATCH_REG,#0
it ge
- negge r4,r4
+ negge BSTACK_0,BSTACK_0
ldr pc,[sp],#4
div_mod_table:
diff --git a/thumb2fileIO3.s b/thumb2fileIO3.s
index 9981e61..532f80a 100644
--- a/thumb2fileIO3.s
+++ b/thumb2fileIO3.s
@@ -1,3 +1,4 @@
+ .include "thumb2regs.s"
.syntax unified
.fpu vfp3
@@ -91,14 +92,14 @@ fwritestring_error:
# .o 0 2 f
stdioF:
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl open_stdio
- mov sp,r4
+ mov sp,BSTACK_0
- mov r3,r0
- mov r4,#-1
+ mov BSTACK_1,BSTACK_4
+ mov BSTACK_0,#-1
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
@@ -108,14 +109,14 @@ stdioF:
@ .o 0 2 f
stderrF:
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl open_stderr
- mov sp,r4
+ mov sp,BSTACK_0
- mov r3,r0
- mov r4,#-1
+ mov BSTACK_1,BSTACK_4
+ mov BSTACK_0,#-1
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
@@ -125,21 +126,21 @@ stderrF:
@ .o 0 3 b f
openF:
- add r0,r6,#4
- mov r1,r4
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ add BSTACK_4,ASTACK_0,#4
+ mov BSTACK_3,BSTACK_0
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl open_file
- mov sp,r4
+ mov sp,BSTACK_0
- mov r3,r0
- cmp r0,#0
- mov r4,#-1
+ mov BSTACK_1,BSTACK_4
+ cmp BSTACK_4,#0
+ mov BSTACK_0,#-1
it mi
- movmi r2,#0
+ movmi BSTACK_2,#0
it pl
- movpl r2,#1
+ movpl BSTACK_2,#1
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
@@ -149,13 +150,13 @@ openF:
@ .o 0 1 b
closeF:
- mov r0,r3
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ mov BSTACK_4,BSTACK_1
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl close_file
- mov sp,r4
- mov r4,r0
+ mov sp,BSTACK_0
+ mov BSTACK_0,BSTACK_4
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
@@ -165,18 +166,18 @@ closeF:
@ .o 0 3 b f
reopenF:
- mov r0,r2
- mov r1,r4
- mov r6,r2
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ mov BSTACK_4,BSTACK_2
+ mov BSTACK_3,BSTACK_0
+ mov ASTACK_0,BSTACK_2
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl re_open_file
- mov sp,r4
+ mov sp,BSTACK_0
- neg r2,r0
- mov r3,r6
- mov r4,#-1
+ neg BSTACK_2,BSTACK_4
+ mov BSTACK_1,ASTACK_0
+ mov BSTACK_0,#-1
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
@@ -186,28 +187,28 @@ reopenF:
@ .o 0 4 b c f
readFC:
- mov r0,r3
- mov r6,r3
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ mov BSTACK_4,BSTACK_1
+ mov ASTACK_0,BSTACK_1
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl file_read_char
- mov sp,r4
+ mov sp,BSTACK_0
- mov r3,r6
- mov r4,#-1
- cmp r0,#-1
+ mov BSTACK_1,ASTACK_0
+ mov BSTACK_0,#-1
+ cmp BSTACK_4,#-1
beq readFC_eof
- mov r2,r0
- mov r1,#1
+ mov BSTACK_2,BSTACK_4
+ mov BSTACK_3,#1
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
readFC_eof:
- mov r2,#0
- mov r3,#0
+ mov BSTACK_2,#0
+ mov BSTACK_1,#0
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
@@ -218,20 +219,20 @@ readFC_eof:
readFI:
sub sp,sp,#4
- mov r0,r3
- mov r1,sp
- mov r6,r3
+ mov BSTACK_4,BSTACK_1
+ mov BSTACK_3,sp
+ mov ASTACK_0,BSTACK_1
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl file_read_int
- mov sp,r4
+ mov sp,BSTACK_0
- ldr r2,[sp],#4
- mov r3,r6
- mov r4,#-1
- neg r1,r0
+ ldr BSTACK_2,[sp],#4
+ mov BSTACK_1,ASTACK_0
+ mov BSTACK_0,#-1
+ neg BSTACK_3,BSTACK_4
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
@@ -241,19 +242,19 @@ readFI:
@ .o 0 5 b r f
readFR:
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
- mov r0,r3
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
+ mov BSTACK_4,BSTACK_1
sub sp,sp,#8
- mov r6,r3
- mov r1,sp
+ mov ASTACK_0,BSTACK_1
+ mov BSTACK_3,sp
bl file_read_real
vldr.f64 d0,[sp]
- mov sp,r4
- mov r3,r6
- mov r4,#-1
- neg r2,r0
+ mov sp,BSTACK_0
+ mov BSTACK_1,ASTACK_0
+ mov BSTACK_0,#-1
+ neg BSTACK_2,BSTACK_4
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
@@ -263,42 +264,42 @@ readFR:
@ .o 1 2 f
readFS:
- add r12,r4,#8+3
- subs r1,r5,r12,lsr #2
+ add SCRATCH_REG,BSTACK_0,#8+3
+ subs BSTACK_3,HEAP_FREE,SCRATCH_REG,lsr #2
blo readFS_gc
readFS_r_gc:
- laol r12,__STRING__+2,__STRING___o_2,0
- otoa r12,__STRING___o_2,0
- str r12,[r10]
- add r1,r10,#4
- str r4,[r10,#4]
- mov r0,r2
- mov r8,r2
- add r2,r10,#8
-
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ laol SCRATCH_REG,__STRING__+2,__STRING___o_2,0
+ otoa SCRATCH_REG,__STRING___o_2,0
+ str SCRATCH_REG,[HEAP_PTR]
+ add BSTACK_3,HEAP_PTR,#4
+ str BSTACK_0,[HEAP_PTR,#4]
+ mov BSTACK_4,BSTACK_2
+ mov ASTACK_2,BSTACK_2
+ add BSTACK_2,HEAP_PTR,#8
+
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl file_read_characters
- mov sp,r4
- mov r3,r8
+ mov sp,BSTACK_0
+ mov BSTACK_1,ASTACK_2
readFS_end:
- add r2,r0,#8+3
- mov r6,r10
- and r2,r2,#-4
- add r10,r10,r2
- sub r5,r5,r2,lsr #2
- mov r4,#-1
+ add BSTACK_2,BSTACK_4,#8+3
+ mov ASTACK_0,HEAP_PTR
+ and BSTACK_2,BSTACK_2,#-4
+ add HEAP_PTR,HEAP_PTR,BSTACK_2
+ sub HEAP_FREE,HEAP_FREE,BSTACK_2,lsr #2
+ mov BSTACK_0,#-1
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
readFS_gc:
- mov r5,r1
+ mov HEAP_FREE,BSTACK_3
bl collect_0
- add r12,r4,#8+3
- add r5,r5,r12,lsr #2
+ add SCRATCH_REG,BSTACK_0,#8+3
+ add HEAP_FREE,HEAP_FREE,SCRATCH_REG,lsr #2
b readFS_r_gc
@ .d 1 4 i i f
@@ -306,38 +307,38 @@ readFS_gc:
@ .o 1 3 i f
readFString:
- ldr r0,[r6,#4]
- cmp r1,r0
+ ldr BSTACK_4,[ASTACK_0,#4]
+ cmp BSTACK_3,BSTACK_4
bhs readFString_error
- sub r0,r0,r1
- cmp r2,r0
+ sub BSTACK_4,BSTACK_4,BSTACK_3
+ cmp BSTACK_2,BSTACK_4
bhi readFString_error
- str r2,[sp,#-4]!
- add r2,r6,#8
- mov r0,r3
- mov r8,r3
- add r2,r2,r1
- mov r1,sp
+ str BSTACK_2,[sp,#-4]!
+ add BSTACK_2,ASTACK_0,#8
+ mov BSTACK_4,BSTACK_1
+ mov ASTACK_2,BSTACK_1
+ add BSTACK_2,BSTACK_2,BSTACK_3
+ mov BSTACK_3,sp
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl file_read_characters
- mov sp,r4
- mov r3,r8
+ mov sp,BSTACK_0
+ mov BSTACK_1,ASTACK_2
- ldr r2,[sp],#4
+ ldr BSTACK_2,[sp],#4
- mov r4,#-1
+ mov BSTACK_0,#-1
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
readFString_error:
- lao r8,freadstring_error,0
- otoa r8,freadstring_error,0
+ lao ASTACK_2,freadstring_error,0
+ otoa ASTACK_2,freadstring_error,0
b print_error
@ .d 0 2 f
@@ -345,102 +346,102 @@ readFString_error:
@ .o 1 2 f
readLineF:
- subs r2,r5,#32+2
+ subs BSTACK_2,HEAP_FREE,#32+2
blo readLineF_gc
readLineF_r_gc:
- laol r12,__STRING__+2,__STRING___o_2,1
- otoa r12,__STRING___o_2,1
- add r2,r10,#8
- str r12,[r10]
- lsl r1,r5,#2
- mov r0,r3
- sub r1,r1,#8
- mov r7,r1
- mov r8,r3
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ laol SCRATCH_REG,__STRING__+2,__STRING___o_2,1
+ otoa SCRATCH_REG,__STRING___o_2,1
+ add BSTACK_2,HEAP_PTR,#8
+ str SCRATCH_REG,[HEAP_PTR]
+ lsl BSTACK_3,HEAP_FREE,#2
+ mov BSTACK_4,BSTACK_1
+ sub BSTACK_3,BSTACK_3,#8
+ mov ASTACK_1,BSTACK_3
+ mov ASTACK_2,BSTACK_1
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl file_read_line
- mov sp,r4
- mov r3,r8
+ mov sp,BSTACK_0
+ mov BSTACK_1,ASTACK_2
- str r0,[r10,#4]
+ str BSTACK_4,[HEAP_PTR,#4]
- cmp r0,#0
+ cmp BSTACK_4,#0
bpl readFS_end
- mov r6,r10
+ mov ASTACK_0,HEAP_PTR
readLineF_again:
- str r7,[r6,#4]
+ str ASTACK_1,[ASTACK_0,#4]
- add r10,#8
- mov r5,#-(32+4)
- add r10,r10,r7
- sub r5,r5,r7,lsr #2
+ add HEAP_PTR,#8
+ mov HEAP_FREE,#-(32+4)
+ add HEAP_PTR,HEAP_PTR,ASTACK_1
+ sub HEAP_FREE,HEAP_FREE,ASTACK_1,lsr #2
bl collect_1
- ldr r4,[r6,#4]
- add r5,r5,#32+4
- add r11,r6,#8
+ ldr BSTACK_0,[ASTACK_0,#4]
+ add HEAP_FREE,HEAP_FREE,#32+4
+ add ASTACK_3,ASTACK_0,#8
- add r5,r5,r4,lsr #2
+ add HEAP_FREE,HEAP_FREE,BSTACK_0,lsr #2
- laol r12,__STRING__+2,__STRING___o_2,2
- otoa r12,__STRING___o_2,2
- mov r6,r10
- add r1,r10,r5,lsl #2
- str r12,[r10]
+ laol SCRATCH_REG,__STRING__+2,__STRING___o_2,2
+ otoa SCRATCH_REG,__STRING___o_2,2
+ mov ASTACK_0,HEAP_PTR
+ add BSTACK_3,HEAP_PTR,HEAP_FREE,lsl #2
+ str SCRATCH_REG,[HEAP_PTR]
- add r2,r4,#3
- lsr r2,r2,#2
+ add BSTACK_2,BSTACK_0,#3
+ lsr BSTACK_2,BSTACK_2,#2
- str r4,[r10,#4]
- add r10,r10,#8
+ str BSTACK_0,[HEAP_PTR,#4]
+ add HEAP_PTR,HEAP_PTR,#8
b st_copy_string1
copy_st_lp1:
- ldr r12,[r11],#4
- str r12,[r10],#4
+ ldr SCRATCH_REG,[ASTACK_3],#4
+ str SCRATCH_REG,[HEAP_PTR],#4
st_copy_string1:
- subs r2,r2,#1
+ subs BSTACK_2,BSTACK_2,#1
bcs copy_st_lp1
- mov r2,r10
- sub r1,r1,r10
- mov r0,r3
- mov r8,r3
+ mov BSTACK_2,HEAP_PTR
+ sub BSTACK_3,BSTACK_3,HEAP_PTR
+ mov BSTACK_4,BSTACK_1
+ mov ASTACK_2,BSTACK_1
- add r7,r1,r4
+ add ASTACK_1,BSTACK_3,BSTACK_0
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl file_read_line
- mov sp,r4
- mov r3,r8
+ mov sp,BSTACK_0
+ mov BSTACK_1,ASTACK_2
- cmp r0,#0
+ cmp BSTACK_4,#0
bmi readLineF_again
- ldr r4,[r6,#4]
- add r4,r4,r0
- str r4,[r6,#4]
- add r12,r0,#3
- and r12,r12,#-4
- add r10,r10,r12
- add r12,r4,#8+3
- sub r5,r5,r12,lsr #2
- mov r4,#-1
+ ldr BSTACK_0,[ASTACK_0,#4]
+ add BSTACK_0,BSTACK_0,BSTACK_4
+ str BSTACK_0,[ASTACK_0,#4]
+ add SCRATCH_REG,BSTACK_4,#3
+ and SCRATCH_REG,SCRATCH_REG,#-4
+ add HEAP_PTR,HEAP_PTR,SCRATCH_REG
+ add SCRATCH_REG,BSTACK_0,#8+3
+ sub HEAP_FREE,HEAP_FREE,SCRATCH_REG,lsr #2
+ mov BSTACK_0,#-1
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
readLineF_gc:
- mov r5,r2
+ mov HEAP_FREE,BSTACK_2
bl collect_0
- add r5,r5,#32+2
+ add HEAP_FREE,HEAP_FREE,#32+2
b readLineF_r_gc
@ .d 0 3 i f
@@ -448,18 +449,18 @@ readLineF_gc:
@ .o 0 2 f
writeFC:
- mov r6,r3
- mov r1,r3
- mov r0,r2
+ mov ASTACK_0,BSTACK_1
+ mov BSTACK_3,BSTACK_1
+ mov BSTACK_4,BSTACK_2
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl file_write_char
- mov sp,r4
+ mov sp,BSTACK_0
- mov r3,r6
- mov r4,#-1
+ mov BSTACK_1,ASTACK_0
+ mov BSTACK_0,#-1
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
@@ -469,18 +470,18 @@ writeFC:
@ .o 0 2 f
writeFI:
- mov r6,r3
- mov r1,r3
- mov r0,r2
+ mov ASTACK_0,BSTACK_1
+ mov BSTACK_3,BSTACK_1
+ mov BSTACK_4,BSTACK_2
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl file_write_int
- mov sp,r4
+ mov sp,BSTACK_0
- mov r3,r6
- mov r4,#-1
+ mov BSTACK_1,ASTACK_0
+ mov BSTACK_0,#-1
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
@@ -490,17 +491,17 @@ writeFI:
@ .o 0 2 f
writeFR:
- mov r6,r3
- mov r0,r3
+ mov ASTACK_0,BSTACK_1
+ mov BSTACK_4,BSTACK_1
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl file_write_real
- mov sp,r4
+ mov sp,BSTACK_0
- mov r3,r6
- mov r4,#-1
+ mov BSTACK_1,ASTACK_0
+ mov BSTACK_0,#-1
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
@@ -510,19 +511,19 @@ writeFR:
@ .o 0 2 f
writeFS:
- mov r2,r3
- ldr r1,[r6,#4]
- add r0,r6,#8
- mov r6,r3
-
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ mov BSTACK_2,BSTACK_1
+ ldr BSTACK_3,[ASTACK_0,#4]
+ add BSTACK_4,ASTACK_0,#8
+ mov ASTACK_0,BSTACK_1
+
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl file_write_characters
- mov sp,r4
+ mov sp,BSTACK_0
- mov r3,r6
- mov r4,#-1
+ mov BSTACK_1,ASTACK_0
+ mov BSTACK_0,#-1
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
@@ -532,35 +533,35 @@ writeFS:
@ .o 0 2 f
writeFString:
- ldr r0,[r6,#4]
- cmp r1,r0
+ ldr BSTACK_4,[ASTACK_0,#4]
+ cmp BSTACK_3,BSTACK_4
bhs writeFString_error
- sub r0,r0,r1
- cmp r2,r0
+ sub BSTACK_4,BSTACK_4,BSTACK_3
+ cmp BSTACK_2,BSTACK_4
bhi writeFString_error
- mov r1,r2
- mov r2,r3
- add r0,r6,#8
- mov r6,r3
- add r0,r0,r1
+ mov BSTACK_3,BSTACK_2
+ mov BSTACK_2,BSTACK_1
+ add BSTACK_4,ASTACK_0,#8
+ mov ASTACK_0,BSTACK_1
+ add BSTACK_4,BSTACK_4,BSTACK_3
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl file_write_characters
- mov sp,r4
+ mov sp,BSTACK_0
- mov r3,r6
- mov r4,#-1
+ mov BSTACK_1,ASTACK_0
+ mov BSTACK_0,#-1
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
writeFString_error:
- lao r8,fwritestring_error,0
- otoa r8,fwritestring_error,0
+ lao ASTACK_2,fwritestring_error,0
+ otoa ASTACK_2,fwritestring_error,0
b print_error
@ .d 0 2 f
@@ -568,18 +569,18 @@ writeFString_error:
@ .o 0 3 b f
endF:
- mov r0,r3
- mov r6,r3
+ mov BSTACK_4,BSTACK_1
+ mov ASTACK_0,BSTACK_1
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl file_end
- mov sp,r4
+ mov sp,BSTACK_0
- neg r2,r0
- mov r3,r6
- mov r4,#-1
+ neg BSTACK_2,BSTACK_4
+ mov BSTACK_1,ASTACK_0
+ mov BSTACK_0,#-1
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
@@ -589,18 +590,18 @@ endF:
@ .o 0 3 b f
errorF:
- mov r0,r3
- mov r6,r3
+ mov BSTACK_4,BSTACK_1
+ mov ASTACK_0,BSTACK_1
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl file_error
- mov sp,r4
+ mov sp,BSTACK_0
- neg r2,r0
- mov r3,r6
- mov r4,#-1
+ neg BSTACK_2,BSTACK_4
+ mov BSTACK_1,ASTACK_0
+ mov BSTACK_0,#-1
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
@@ -610,18 +611,18 @@ errorF:
@ .o 0 3 i f
positionF:
- mov r0,r3
- mov r6,r3
+ mov BSTACK_4,BSTACK_1
+ mov ASTACK_0,BSTACK_1
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl file_position
- mov sp,r4
+ mov sp,BSTACK_0
- mov r2,r0
- mov r3,r6
- mov r4,#-1
+ mov BSTACK_2,BSTACK_4
+ mov BSTACK_1,ASTACK_0
+ mov BSTACK_0,#-1
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
@@ -631,20 +632,20 @@ positionF:
@ .o 0 3 b f
seekF:
- mov r0,r1
- mov r6,r1
- mov r1,r3
- mov r2,r4
-
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ mov BSTACK_4,BSTACK_3
+ mov ASTACK_0,BSTACK_3
+ mov BSTACK_3,BSTACK_1
+ mov BSTACK_2,BSTACK_0
+
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl file_seek
- mov sp,r4
+ mov sp,BSTACK_0
- neg r2,r0
- mov r3,r6
- mov r4,#-1
+ neg BSTACK_2,BSTACK_4
+ mov BSTACK_1,ASTACK_0
+ mov BSTACK_0,#-1
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
@@ -654,17 +655,17 @@ seekF:
@ .o 0 2 f
shareF:
- mov r0,r1
- mov r6,r3
+ mov BSTACK_4,BSTACK_3
+ mov ASTACK_0,BSTACK_1
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl file_share
- mov sp,r4
+ mov sp,BSTACK_0
- mov r3,r6
- mov r4,#-1
+ mov BSTACK_1,ASTACK_0
+ mov BSTACK_0,#-1
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
@@ -674,24 +675,24 @@ shareF:
@ .o 0 3 b f
openSF:
- mov r0,r4
- add r1,r6,#4
- mov r6,r3
+ mov BSTACK_4,BSTACK_0
+ add BSTACK_3,ASTACK_0,#4
+ mov ASTACK_0,BSTACK_1
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl open_s_file
- mov sp,r4
+ mov sp,BSTACK_0
- cmp r0,#0
+ cmp BSTACK_4,#0
it mi
- movmi r2,#0
+ movmi BSTACK_2,#0
it pl
- movpl r2,#1
+ movpl BSTACK_2,#1
- mov r3,r6
- mov r4,#0
+ mov BSTACK_1,ASTACK_0
+ mov BSTACK_0,#0
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
@@ -701,32 +702,32 @@ openSF:
@ .o 0 4 b c f
readSFC:
- str r4,[sp,#-4]!
- mov r6,r3
- mov r1,sp
- mov r0,r3
-
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ str BSTACK_0,[sp,#-4]!
+ mov ASTACK_0,BSTACK_1
+ mov BSTACK_3,sp
+ mov BSTACK_4,BSTACK_1
+
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl file_read_s_char
- mov sp,r4
+ mov sp,BSTACK_0
- ldr r4,[sp],#4
- mov r3,r6
+ ldr BSTACK_0,[sp],#4
+ mov BSTACK_1,ASTACK_0
- mov r2,r0
- cmp r0,#-1
+ mov BSTACK_2,BSTACK_4
+ cmp BSTACK_4,#-1
beq readSFC_eof
- mov r1,#1
+ mov BSTACK_3,#1
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
readSFC_eof:
- mov r2,#0
- mov r1,#0
+ mov BSTACK_2,#0
+ mov BSTACK_3,#0
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
@@ -736,23 +737,23 @@ readSFC_eof:
@ .o 0 4 b i f
readSFI:
- str r4,[sp,#-4]!
- mov r6,r3
- mov r2,sp
- sub r1,sp,#4
+ str BSTACK_0,[sp,#-4]!
+ mov ASTACK_0,BSTACK_1
+ mov BSTACK_2,sp
+ sub BSTACK_3,sp,#4
sub sp,sp,#4
- mov r0,r3
+ mov BSTACK_4,BSTACK_1
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl file_read_s_int
- mov sp,r4
+ mov sp,BSTACK_0
- neg r1,r0
- ldr r2,[sp],#4
- mov r3,r6
- ldr r4,[sp],#4
+ neg BSTACK_3,BSTACK_4
+ ldr BSTACK_2,[sp],#4
+ mov BSTACK_1,ASTACK_0
+ ldr BSTACK_0,[sp],#4
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
@@ -762,23 +763,23 @@ readSFI:
@ .o 0 5 b r f
readSFR:
- str r4,[sp,#-4]!
- mov r6,r3
- mov r2,sp
-
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
- mov r0,r3
- sub r1,sp,#8
+ str BSTACK_0,[sp,#-4]!
+ mov ASTACK_0,BSTACK_1
+ mov BSTACK_2,sp
+
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
+ mov BSTACK_4,BSTACK_1
+ sub BSTACK_3,sp,#8
sub sp,sp,#8
bl file_read_s_real
vldr.f64 d0,[sp]
- mov sp,r4
+ mov sp,BSTACK_0
- mov r3,r6
- ldr r4,[sp],#4
- neg r2,r0
+ mov BSTACK_1,ASTACK_0
+ ldr BSTACK_0,[sp],#4
+ neg BSTACK_2,BSTACK_4
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
@@ -788,45 +789,45 @@ readSFR:
@ .o 1 2 f
readSFS:
- add r12,r4,#8+3
- subs r2,r5,r12,lsr #2
+ add SCRATCH_REG,BSTACK_0,#8+3
+ subs BSTACK_2,HEAP_FREE,SCRATCH_REG,lsr #2
blo readSFS_gc
readSFS_r_gc:
- laol r12,__STRING__+2,__STRING___o_2,3
- otoa r12,__STRING___o_2,3
- str r12,[r10]
- mov r1,r4
- mov r0,r2
- mov r8,r2
- add r2,r10,#4
- str r3,[sp,#-4]!
- mov r3,sp
-
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ laol SCRATCH_REG,__STRING__+2,__STRING___o_2,3
+ otoa SCRATCH_REG,__STRING___o_2,3
+ str SCRATCH_REG,[HEAP_PTR]
+ mov BSTACK_3,BSTACK_0
+ mov BSTACK_4,BSTACK_2
+ mov ASTACK_2,BSTACK_2
+ add BSTACK_2,HEAP_PTR,#4
+ str BSTACK_1,[sp,#-4]!
+ mov BSTACK_1,sp
+
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl file_read_s_string
- mov sp,r4
- mov r3,r8
+ mov sp,BSTACK_0
+ mov BSTACK_1,ASTACK_2
- ldr r4,[sp],#4
+ ldr BSTACK_0,[sp],#4
readSFS_end:
- add r2,r0,#8+3
- mov r6,r10
- and r2,r2,#-4
- add r10,r10,r2
- sub r5,r5,r2,lsr #2
+ add BSTACK_2,BSTACK_4,#8+3
+ mov ASTACK_0,HEAP_PTR
+ and BSTACK_2,BSTACK_2,#-4
+ add HEAP_PTR,HEAP_PTR,BSTACK_2
+ sub HEAP_FREE,HEAP_FREE,BSTACK_2,lsr #2
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
readSFS_gc:
- mov r5,r2
+ mov HEAP_FREE,BSTACK_2
bl collect_0
- add r12,r4,#8+3
- add r5,r5,r12,lsr #2
+ add SCRATCH_REG,BSTACK_0,#8+3
+ add HEAP_FREE,HEAP_FREE,SCRATCH_REG,lsr #2
b readSFS_r_gc
@ .d 0 2 f
@@ -834,107 +835,107 @@ readSFS_gc:
@ .o 1 2 f
readLineSF:
- subs r2,r5,#32+2
+ subs BSTACK_2,HEAP_FREE,#32+2
blo readLineSF_gc
readLineSF_r_gc:
- laol r12,__STRING__+2,__STRING___o_2,4
- otoa r12,__STRING___o_2,4
- add r2,r10,#8
- str r12,[r10]
- lsl r1,r5,#2
- mov r0,r3
- sub r1,r1,#8
- mov r7,r1
- mov r8,r3
- str r4,[sp,#-4]!
- mov r3,sp
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ laol SCRATCH_REG,__STRING__+2,__STRING___o_2,4
+ otoa SCRATCH_REG,__STRING___o_2,4
+ add BSTACK_2,HEAP_PTR,#8
+ str SCRATCH_REG,[HEAP_PTR]
+ lsl BSTACK_3,HEAP_FREE,#2
+ mov BSTACK_4,BSTACK_1
+ sub BSTACK_3,BSTACK_3,#8
+ mov ASTACK_1,BSTACK_3
+ mov ASTACK_2,BSTACK_1
+ str BSTACK_0,[sp,#-4]!
+ mov BSTACK_1,sp
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl file_read_s_line
- mov sp,r4
- mov r3,r8
- ldr r4,[sp],#4
+ mov sp,BSTACK_0
+ mov BSTACK_1,ASTACK_2
+ ldr BSTACK_0,[sp],#4
- str r0,[r10,#4]
+ str BSTACK_4,[HEAP_PTR,#4]
- cmp r0,#0
+ cmp BSTACK_4,#0
bpl readSFS_end
- mov r6,r10
+ mov ASTACK_0,HEAP_PTR
readLineSF_again:
- str r7,[r6,#4]
+ str ASTACK_1,[ASTACK_0,#4]
- add r10,#8
- mov r5,#-(32+4)
- add r10,r10,r7
- sub r5,r5,r7,lsr #2
+ add HEAP_PTR,#8
+ mov HEAP_FREE,#-(32+4)
+ add HEAP_PTR,HEAP_PTR,ASTACK_1
+ sub HEAP_FREE,HEAP_FREE,ASTACK_1,lsr #2
bl collect_1
- ldr r2,[r6,#4]
- add r5,r5,#32+4
- add r11,r6,#8
+ ldr BSTACK_2,[ASTACK_0,#4]
+ add HEAP_FREE,HEAP_FREE,#32+4
+ add ASTACK_3,ASTACK_0,#8
- add r5,r5,r2,lsr #2
+ add HEAP_FREE,HEAP_FREE,BSTACK_2,lsr #2
- laol r12,__STRING__+2,__STRING___o_2,5
- otoa r12,__STRING___o_2,5
- add r1,r10,r5,lsl #2
- str r12,[r10]
+ laol SCRATCH_REG,__STRING__+2,__STRING___o_2,5
+ otoa SCRATCH_REG,__STRING___o_2,5
+ add BSTACK_3,HEAP_PTR,HEAP_FREE,lsl #2
+ str SCRATCH_REG,[HEAP_PTR]
- add r6,r2,#3
- lsr r6,r6,#2
+ add ASTACK_0,BSTACK_2,#3
+ lsr ASTACK_0,ASTACK_0,#2
- str r2,[r10,#4]
- add r10,r10,#8
+ str BSTACK_2,[HEAP_PTR,#4]
+ add HEAP_PTR,HEAP_PTR,#8
b st_copy_string2
copy_st_lp2:
- ldr r12,[r11],#4
- str r12,[r10],#4
+ ldr SCRATCH_REG,[ASTACK_3],#4
+ str SCRATCH_REG,[HEAP_PTR],#4
st_copy_string2:
- subs r6,r6,#1
+ subs ASTACK_0,ASTACK_0,#1
bcs copy_st_lp2
- sub r1,r1,r10
- mov r0,r3
- mov r8,r3
-
- add r7,r1,r2
- mov r2,r10
- str r4,[sp,#-4]!
- mov r3,sp
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ sub BSTACK_3,BSTACK_3,HEAP_PTR
+ mov BSTACK_4,BSTACK_1
+ mov ASTACK_2,BSTACK_1
+
+ add ASTACK_1,BSTACK_3,BSTACK_2
+ mov BSTACK_2,HEAP_PTR
+ str BSTACK_0,[sp,#-4]!
+ mov BSTACK_1,sp
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl file_read_s_line
- mov sp,r4
- mov r3,r8
- ldr r4,[sp],#4
+ mov sp,BSTACK_0
+ mov BSTACK_1,ASTACK_2
+ ldr BSTACK_0,[sp],#4
- ldr r6,[sp],#4
+ ldr ASTACK_0,[sp],#4
- cmp r0,#0
+ cmp BSTACK_4,#0
bmi readLineSF_again
- ldr r2,[r6,#4]
- add r2,r2,r0
- str r2,[r6,#4]
- add r12,r0,#3
- and r12,r12,#-4
- add r10,r10,r12
- add r12,r2,#8+3
- sub r5,r5,r12,lsr #2
+ ldr BSTACK_2,[ASTACK_0,#4]
+ add BSTACK_2,BSTACK_2,BSTACK_4
+ str BSTACK_2,[ASTACK_0,#4]
+ add SCRATCH_REG,BSTACK_4,#3
+ and SCRATCH_REG,SCRATCH_REG,#-4
+ add HEAP_PTR,HEAP_PTR,SCRATCH_REG
+ add SCRATCH_REG,BSTACK_2,#8+3
+ sub HEAP_FREE,HEAP_FREE,SCRATCH_REG,lsr #2
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
readLineSF_gc:
- mov r5,r2
+ mov HEAP_FREE,BSTACK_2
bl collect_0
- add r5,r5,#32+2
+ add HEAP_FREE,HEAP_FREE,#32+2
b readLineSF_r_gc
@ .d 0 2 f
@@ -942,16 +943,16 @@ readLineSF_gc:
@ .o 0 1 b
endSF:
- mov r1,r4
- mov r0,r3
+ mov BSTACK_3,BSTACK_0
+ mov BSTACK_4,BSTACK_1
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl file_s_end
- mov sp,r4
+ mov sp,BSTACK_0
- neg r4,r0
+ neg BSTACK_0,BSTACK_4
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
@@ -961,16 +962,16 @@ endSF:
@ .o 0 1 i
positionSF:
- mov r1,r4
- mov r0,r3
+ mov BSTACK_3,BSTACK_0
+ mov BSTACK_4,BSTACK_1
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl file_s_position
- mov sp,r4
+ mov sp,BSTACK_0
- mov r4,r0
+ mov BSTACK_0,BSTACK_4
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
@@ -980,22 +981,22 @@ positionSF:
@ .o 0 3 b f
seekSF:
- str r4,[sp,#-4]!
- mov r6,r3
- mov r0,r3
-@ mov r1,r1
-@ mov r2,r2
- mov r3,sp
+ str BSTACK_0,[sp,#-4]!
+ mov ASTACK_0,BSTACK_1
+ mov BSTACK_4,BSTACK_1
+@ mov BSTACK_3,BSTACK_3
+@ mov BSTACK_2,BSTACK_2
+ mov BSTACK_1,sp
- mov r4,sp
- bic r3,r4,#4
- mov sp,r3
+ mov BSTACK_0,sp
+ bic BSTACK_1,BSTACK_0,#4
+ mov sp,BSTACK_1
bl file_s_seek
- mov sp,r4
+ mov sp,BSTACK_0
- neg r2,r0
- ldr r4,[sp],#4
- mov r3,r6
+ neg BSTACK_2,BSTACK_4
+ ldr BSTACK_0,[sp],#4
+ mov BSTACK_1,ASTACK_0
ldr lr,[sp],#4
orr lr,lr,#1
mov pc,lr
diff --git a/thumb2mark.s b/thumb2mark.s
index a94235f..e7e1e99 100644
--- a/thumb2mark.s
+++ b/thumb2mark.s
@@ -1,4 +1,3 @@
-
ZERO_ARITY_DESCRIPTOR_OFFSET = -4
#undef COUNT_GARBAGE_COLLECTIONS
@@ -6,109 +5,109 @@ ZERO_ARITY_DESCRIPTOR_OFFSET = -4
#undef COMPARE_HEAP_AFTER_MARK
#undef DEBUG_MARK_COLLECT
- lao r12,heap_size_33,6
- ldo r4,r12,heap_size_33,6
- mov r3,#0
+ lao SCRATCH_REG,heap_size_33,6
+ ldo BSTACK_0,SCRATCH_REG,heap_size_33,6
+ mov BSTACK_1,#0
-@ heap_p3 in r0
+@ heap_p3 in BSTACK_4
- lao r12,heap_p3,9
- ldo r0,r12,heap_p3,9
+ lao SCRATCH_REG,heap_p3,9
+ ldo BSTACK_4,SCRATCH_REG,heap_p3,9
-@ n_marked_words in r2
+@ n_marked_words in BSTACK_2
- mov r2,#0
+ mov BSTACK_2,#0
- lsl r1,r4,#5
-@ heap_size_32_33 in r1
- lao r12,heap_size_32_33,0
- sto r1,r12,heap_size_32_33,0
+ lsl BSTACK_3,BSTACK_0,#5
+@ heap_size_32_33 in BSTACK_3
+ lao SCRATCH_REG,heap_size_32_33,0
+ sto BSTACK_3,SCRATCH_REG,heap_size_32_33,0
- lao r12,lazy_array_list,0
- sto r3,r12,lazy_array_list,0
+ lao SCRATCH_REG,lazy_array_list,0
+ sto BSTACK_1,SCRATCH_REG,lazy_array_list,0
- add r9,sp,#-2000
+ add ASTACK_PTR,sp,#-2000
- lao r12,caf_list,1
- ldo r4,r12,caf_list,1
+ lao SCRATCH_REG,caf_list,1
+ ldo BSTACK_0,SCRATCH_REG,caf_list,1
- lao r12,end_stack,0
-@ end_stack in r11
- mov r11,r9
- sto r9,r12,end_stack,0
+ lao SCRATCH_REG,end_stack,0
+@ end_stack in ASTACK_3
+ mov ASTACK_3,ASTACK_PTR
+ sto ASTACK_PTR,SCRATCH_REG,end_stack,0
- tst r4,r4
+ tst BSTACK_0,BSTACK_0
beq _end_mark_cafs
.thumb_func
_mark_cafs_lp:
- ldr r3,[r4]
- ldr r8,[r4,#-4]
+ ldr BSTACK_1,[BSTACK_0]
+ ldr ASTACK_2,[BSTACK_0,#-4]
- str r8,[sp,#-4]!
- add r8,r4,#4
- add r12,r4,#4
- add r4,r12,r3,lsl #2
- lao r12,end_vector,0
- sto r4,r12,end_vector,0
+ str ASTACK_2,[sp,#-4]!
+ add ASTACK_2,BSTACK_0,#4
+ add SCRATCH_REG,BSTACK_0,#4
+ add BSTACK_0,SCRATCH_REG,BSTACK_1,lsl #2
+ lao SCRATCH_REG,end_vector,0
+ sto BSTACK_0,SCRATCH_REG,end_vector,0
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl _mark_stack_nodes
- ldr r4,[sp],#4
- tst r4,r4
+ ldr BSTACK_0,[sp],#4
+ tst BSTACK_0,BSTACK_0
bne _mark_cafs_lp
.thumb_func
_end_mark_cafs:
- lao r12,stack_top,2
- ldo r9,r12,stack_top,2
- lao r12,stack_p,5
- ldo r8,r12,stack_p,5
+ lao SCRATCH_REG,stack_top,2
+ ldo ASTACK_PTR,SCRATCH_REG,stack_top,2
+ lao SCRATCH_REG,stack_p,5
+ ldo ASTACK_2,SCRATCH_REG,stack_p,5
- lao r12,end_vector,1
- sto r9,r12,end_vector,1
+ lao SCRATCH_REG,end_vector,1
+ sto ASTACK_PTR,SCRATCH_REG,end_vector,1
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl _mark_stack_nodes
- lao r12,lazy_array_list,1
- ldo r6,r12,lazy_array_list,1
+ lao SCRATCH_REG,lazy_array_list,1
+ ldo ASTACK_0,SCRATCH_REG,lazy_array_list,1
- cmp r6,#0
+ cmp ASTACK_0,#0
beq end_restore_arrays
.thumb_func
restore_arrays:
- ldr r3,[r6]
- laol r12,__ARRAY__+2,__ARRAY___o_2,16
- otoa r12,__ARRAY___o_2,16
- str r12,[r6]
+ ldr BSTACK_1,[ASTACK_0]
+ laol SCRATCH_REG,__ARRAY__+2,__ARRAY___o_2,16
+ otoa SCRATCH_REG,__ARRAY___o_2,16
+ str SCRATCH_REG,[ASTACK_0]
- cmp r3,#1
+ cmp BSTACK_1,#1
beq restore_array_size_1
- add r7,r6,r3,lsl #2
- ldr r4,[r7,#8]
- cmp r4,#0
+ add ASTACK_1,ASTACK_0,BSTACK_1,lsl #2
+ ldr BSTACK_0,[ASTACK_1,#8]
+ cmp BSTACK_0,#0
beq restore_lazy_array
- ldrh r8,[r4,#-2+2]
-
- neg r12,r8
- and r12,r12,r8
-@ r12 contains lowest 1 bit of r8
- clz r12,r12
- rsb r12,r12,#31
- lsr r8,r8,r12
- lsr r3,r3,r12
- sub r8,r8,#1
- add r8,r8,r8
- add r12,pc,#0 @TODO check offset
- ldr r8,[r12,r8]
+ ldrh ASTACK_2,[BSTACK_0,#-2+2]
+
+ neg SCRATCH_REG,ASTACK_2
+ and SCRATCH_REG,SCRATCH_REG,ASTACK_2
+@ SCRATCH_REG contains lowest 1 bit of ASTACK_2
+ clz SCRATCH_REG,SCRATCH_REG
+ rsb SCRATCH_REG,SCRATCH_REG,#31
+ lsr ASTACK_2,ASTACK_2,SCRATCH_REG
+ lsr BSTACK_1,BSTACK_1,SCRATCH_REG
+ sub ASTACK_2,ASTACK_2,#1
+ add ASTACK_2,ASTACK_2,ASTACK_2
+ add SCRATCH_REG,pc,#0 @TODO check offset
+ ldr ASTACK_2,[SCRATCH_REG,ASTACK_2]
b skip_mod_inverse_table
.word 1
@@ -130,33 +129,33 @@ restore_arrays:
.thumb_func
skip_mod_inverse_table:
- mul r3,r8,r3
+ mul BSTACK_1,ASTACK_2,BSTACK_1
.thumb_func
restore_lazy_array:
- ldr r10,[r6,#8]
- ldr r8,[r6,#4]
- str r3,[r6,#4]
- ldr r9,[r7,#4]
- str r4,[r6,#8]
- str r8,[r7,#4]
- str r10,[r7,#8]
-
- cmp r4,#0
+ ldr HEAP_PTR,[ASTACK_0,#8]
+ ldr ASTACK_2,[ASTACK_0,#4]
+ str BSTACK_1,[ASTACK_0,#4]
+ ldr ASTACK_PTR,[ASTACK_1,#4]
+ str BSTACK_0,[ASTACK_0,#8]
+ str ASTACK_2,[ASTACK_1,#4]
+ str HEAP_PTR,[ASTACK_1,#8]
+
+ cmp BSTACK_0,#0
beq no_reorder_array
- ldrh r7,[r4,#-2]
- sub r7,r7,#256
- ldrh r8,[r4,#-2+2]
- cmp r8,r7
+ ldrh ASTACK_1,[BSTACK_0,#-2]
+ sub ASTACK_1,ASTACK_1,#256
+ ldrh ASTACK_2,[BSTACK_0,#-2+2]
+ cmp ASTACK_2,ASTACK_1
beq no_reorder_array
- add r6,r6,#12
- mul r3,r7,r3
- mov r4,r7
- add r7,r6,r3,lsl #2
- mov r3,r8
- sub r4,r4,r8
+ add ASTACK_0,ASTACK_0,#12
+ mul BSTACK_1,ASTACK_1,BSTACK_1
+ mov BSTACK_0,ASTACK_1
+ add ASTACK_1,ASTACK_0,BSTACK_1,lsl #2
+ mov BSTACK_1,ASTACK_2
+ sub BSTACK_0,BSTACK_0,ASTACK_2
.align
add lr,pc,#9
@@ -165,179 +164,179 @@ restore_lazy_array:
.thumb_func
no_reorder_array:
- mov r6,r9
- cmp r6,#0
+ mov ASTACK_0,ASTACK_PTR
+ cmp ASTACK_0,#0
bne restore_arrays
b end_restore_arrays
restore_array_size_1:
- ldr r8,[r6,#4]
- ldr r7,[r6,#8]
- str r3,[r6,#4]
- ldr r4,[r6,#12]
- str r8,[r6,#12]
- str r4,[r6,#8]
-
- mov r6,r7
- tst r6,r6
+ ldr ASTACK_2,[ASTACK_0,#4]
+ ldr ASTACK_1,[ASTACK_0,#8]
+ str BSTACK_1,[ASTACK_0,#4]
+ ldr BSTACK_0,[ASTACK_0,#12]
+ str ASTACK_2,[ASTACK_0,#12]
+ str BSTACK_0,[ASTACK_0,#8]
+
+ mov ASTACK_0,ASTACK_1
+ tst ASTACK_0,ASTACK_0
bne restore_arrays
.thumb_func
end_restore_arrays:
.ifdef FINALIZERS
- lao r12,heap_vector,7
- ldo r10,r12,heap_vector,7
- lao r6,finalizer_list,2
- lao r7,free_finalizer_list,4
- otoa r6,finalizer_list,2
- otoa r7,free_finalizer_list,4
+ lao SCRATCH_REG,heap_vector,7
+ ldo HEAP_PTR,SCRATCH_REG,heap_vector,7
+ lao ASTACK_0,finalizer_list,2
+ lao ASTACK_1,free_finalizer_list,4
+ otoa ASTACK_0,finalizer_list,2
+ otoa ASTACK_1,free_finalizer_list,4
- ldr r8,[r6]
+ ldr ASTACK_2,[ASTACK_0]
.thumb_func
determine_free_finalizers_after_mark:
- laol r12,__Nil-4,__Nil_o_m4,4
- otoa r12,__Nil_o_m4,4
- cmp r8,r12
+ laol SCRATCH_REG,__Nil-4,__Nil_o_m4,4
+ otoa SCRATCH_REG,__Nil_o_m4,4
+ cmp ASTACK_2,SCRATCH_REG
beq end_finalizers_after_mark
- sub r4,r8,r0
- lsr r3,r4,#7
- and r4,r4,#31*4
- lsr r9,r4,#2
- mov r12,#1
- lsl r9,r12,r9
+ sub BSTACK_0,ASTACK_2,BSTACK_4
+ lsr BSTACK_1,BSTACK_0,#7
+ and BSTACK_0,BSTACK_0,#31*4
+ lsr ASTACK_PTR,BSTACK_0,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_PTR,SCRATCH_REG,ASTACK_PTR
- ldr r12,[r10,r3,lsl #2]
- tst r9,r12
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ tst ASTACK_PTR,SCRATCH_REG
beq finalizer_not_used_after_mark
- add r6,r8,#4
- ldr r8,[r8,#4]
+ add ASTACK_0,ASTACK_2,#4
+ ldr ASTACK_2,[ASTACK_2,#4]
b determine_free_finalizers_after_mark
.thumb_func
finalizer_not_used_after_mark:
- str r8,[r7]
- add r7,r8,#4
+ str ASTACK_2,[ASTACK_1]
+ add ASTACK_1,ASTACK_2,#4
- ldr r8,[r8,#4]
- str r8,[r6]
+ ldr ASTACK_2,[ASTACK_2,#4]
+ str ASTACK_2,[ASTACK_0]
b determine_free_finalizers_after_mark
.thumb_func
end_finalizers_after_mark:
- str r8,[r7]
+ str ASTACK_2,[ASTACK_1]
.endif
- str r2,[sp,#-4]!
+ str BSTACK_2,[sp,#-4]!
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl add_garbage_collect_time
- ldr r2,[sp],#4
+ ldr BSTACK_2,[sp],#4
.ifdef ADJUST_HEAP_SIZE
- lao r12,bit_vector_size,3
- ldo r4,r12,bit_vector_size,3
+ lao SCRATCH_REG,bit_vector_size,3
+ ldo BSTACK_0,SCRATCH_REG,bit_vector_size,3
.else
- lao r12,heap_size_33,7
- ldo r4,r12,heap_size_33,7
- lsl r4,r4,#3
+ lao SCRATCH_REG,heap_size_33,7
+ ldo BSTACK_0,SCRATCH_REG,heap_size_33,7
+ lsl BSTACK_0,BSTACK_0,#3
.endif
.ifdef ADJUST_HEAP_SIZE
- lao r12,n_allocated_words,7
- ldo r10,r12,n_allocated_words,7
- add r10,r10,r2
- lsl r10,r10,#2
+ lao SCRATCH_REG,n_allocated_words,7
+ ldo HEAP_PTR,SCRATCH_REG,n_allocated_words,7
+ add HEAP_PTR,HEAP_PTR,BSTACK_2
+ lsl HEAP_PTR,HEAP_PTR,#2
- lsl r9,r4,#2
+ lsl ASTACK_PTR,BSTACK_0,#2
- str r7,[sp,#-4]!
- str r4,[sp,#-4]!
+ str ASTACK_1,[sp,#-4]!
+ str BSTACK_0,[sp,#-4]!
- lao r12,heap_size_multiple,3
- ldo r12,r12,heap_size_multiple,3
- umull r4,r7,r12,r10
- lsr r4,r4,#8
- orr r4,r4,r7,lsl #32-8
- lsr r7,r7,#8
+ lao SCRATCH_REG,heap_size_multiple,3
+ ldo SCRATCH_REG,SCRATCH_REG,heap_size_multiple,3
+ umull BSTACK_0,ASTACK_1,SCRATCH_REG,HEAP_PTR
+ lsr BSTACK_0,BSTACK_0,#8
+ orr BSTACK_0,BSTACK_0,ASTACK_1,lsl #32-8
+ lsr ASTACK_1,ASTACK_1,#8
- mov r3,r4
- cmp r7,#0
+ mov BSTACK_1,BSTACK_0
+ cmp ASTACK_1,#0
- ldr r4,[sp],#4
- ldr r7,[sp],#4
+ ldr BSTACK_0,[sp],#4
+ ldr ASTACK_1,[sp],#4
beq not_largest_heap
- lao r12,heap_size_33,8
- ldo r3,r12,heap_size_33,8
- lsl r3,r3,#5
+ lao SCRATCH_REG,heap_size_33,8
+ ldo BSTACK_1,SCRATCH_REG,heap_size_33,8
+ lsl BSTACK_1,BSTACK_1,#5
.thumb_func
not_largest_heap:
- cmp r3,r9
+ cmp BSTACK_1,ASTACK_PTR
bls no_larger_heap
- lao r12,heap_size_33,9
- ldo r9,r12,heap_size_33,9
- lsl r9,r9,#5
- cmp r3,r9
+ lao SCRATCH_REG,heap_size_33,9
+ ldo ASTACK_PTR,SCRATCH_REG,heap_size_33,9
+ lsl ASTACK_PTR,ASTACK_PTR,#5
+ cmp BSTACK_1,ASTACK_PTR
bls not_larger_then_heap
- mov r3,r9
+ mov BSTACK_1,ASTACK_PTR
.thumb_func
not_larger_then_heap:
- lsr r4,r3,#2
- lao r12,bit_vector_size,4
- sto r4,r12,bit_vector_size,4
+ lsr BSTACK_0,BSTACK_1,#2
+ lao SCRATCH_REG,bit_vector_size,4
+ sto BSTACK_0,SCRATCH_REG,bit_vector_size,4
.thumb_func
no_larger_heap:
.endif
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
- lao r12,heap_vector,8
- ldo r10,r12,heap_vector,8
+ lao SCRATCH_REG,heap_vector,8
+ ldo HEAP_PTR,SCRATCH_REG,heap_vector,8
- lsr r8,r8,#5
+ lsr ASTACK_2,ASTACK_2,#5
- tst r4,#31
+ tst BSTACK_0,#31
beq no_extra_word
- mov r12,#0
- str r12,[r10,r8,lsl #2]
+ mov SCRATCH_REG,#0
+ str SCRATCH_REG,[HEAP_PTR,ASTACK_2,lsl #2]
.thumb_func
no_extra_word:
- sub r4,r4,r2
- lsl r4,r4,#2
- lao r12,n_last_heap_free_bytes,2
- sto r4,r12,n_last_heap_free_bytes,2
-
- lao r12,flags,15
- ldo r12,r12,flags,15
- tst r12,#2
+ sub BSTACK_0,BSTACK_0,BSTACK_2
+ lsl BSTACK_0,BSTACK_0,#2
+ lao SCRATCH_REG,n_last_heap_free_bytes,2
+ sto BSTACK_0,SCRATCH_REG,n_last_heap_free_bytes,2
+
+ lao SCRATCH_REG,flags,15
+ ldo SCRATCH_REG,SCRATCH_REG,flags,15
+ tst SCRATCH_REG,#2
beq _no_heap_use_message2
- str r2,[sp,#-4]!
+ str BSTACK_2,[sp,#-4]!
- lao r0,marked_gc_string_1,0
- otoa r0,marked_gc_string_1,0
+ lao BSTACK_4,marked_gc_string_1,0
+ otoa BSTACK_4,marked_gc_string_1,0
bl ew_print_string
- ldr r2,[sp]
- lsl r0,r2,#2
+ ldr BSTACK_2,[sp]
+ lsl BSTACK_4,BSTACK_2,#2
bl ew_print_int
- lao r0,heap_use_after_gc_string_2,1
- otoa r0,heap_use_after_gc_string_2,1
+ lao BSTACK_4,heap_use_after_gc_string_2,1
+ otoa BSTACK_4,heap_use_after_gc_string_2,1
bl ew_print_string
- ldr r2,[sp],#4
+ ldr BSTACK_2,[sp],#4
_no_heap_use_message2:
@@ -348,115 +347,115 @@ _no_heap_use_message2:
bl call_finalizers
.endif
- lao r12,n_allocated_words,8
- ldo r9,r12,n_allocated_words,8
- mov r3,#0
+ lao SCRATCH_REG,n_allocated_words,8
+ ldo ASTACK_PTR,SCRATCH_REG,n_allocated_words,8
+ mov BSTACK_1,#0
-@ n_free_words_after_mark in r2
- mov r6,r10
- mov r2,#0
+@ n_free_words_after_mark in BSTACK_2
+ mov ASTACK_0,HEAP_PTR
+ mov BSTACK_2,#0
.thumb_func
_scan_bits:
- ldr r12,[r6]
- cmp r3,r12
+ ldr SCRATCH_REG,[ASTACK_0]
+ cmp BSTACK_1,SCRATCH_REG
beq _zero_bits
- str r3,[r6],#4
- subs r8,r8,#1
+ str BSTACK_1,[ASTACK_0],#4
+ subs ASTACK_2,ASTACK_2,#1
bne _scan_bits
- lao r12,n_free_words_after_mark,5
- sto r2,r12,n_free_words_after_mark,5
+ lao SCRATCH_REG,n_free_words_after_mark,5
+ sto BSTACK_2,SCRATCH_REG,n_free_words_after_mark,5
b _end_scan
.thumb_func
_zero_bits:
- add r7,r6,#4
- add r6,r6,#4
- subs r8,r8,#1
+ add ASTACK_1,ASTACK_0,#4
+ add ASTACK_0,ASTACK_0,#4
+ subs ASTACK_2,ASTACK_2,#1
bne _skip_zero_bits_lp1
- lao r12,n_free_words_after_mark,6
- sto r2,r12,n_free_words_after_mark,6
+ lao SCRATCH_REG,n_free_words_after_mark,6
+ sto BSTACK_2,SCRATCH_REG,n_free_words_after_mark,6
b _end_bits
.thumb_func
_skip_zero_bits_lp:
- cmp r4,#0
+ cmp BSTACK_0,#0
bne _end_zero_bits
_skip_zero_bits_lp1:
- ldr r4,[r6],#4
- subs r8,r8,#1
+ ldr BSTACK_0,[ASTACK_0],#4
+ subs ASTACK_2,ASTACK_2,#1
bne _skip_zero_bits_lp
- lao r12,n_free_words_after_mark,7
- sto r2,r12,n_free_words_after_mark,7
+ lao SCRATCH_REG,n_free_words_after_mark,7
+ sto BSTACK_2,SCRATCH_REG,n_free_words_after_mark,7
- cmp r4,#0
+ cmp BSTACK_0,#0
beq _end_bits
- mov r4,r6
- str r3,[r6,#-4]
- subs r4,r4,r7
+ mov BSTACK_0,ASTACK_0
+ str BSTACK_1,[ASTACK_0,#-4]
+ subs BSTACK_0,BSTACK_0,ASTACK_1
b _end_bits2
.thumb_func
_end_zero_bits:
- sub r4,r6,r7
- lsl r4,r4,#3
- add r2,r2,r4
- str r3,[r6,#-4]
+ sub BSTACK_0,ASTACK_0,ASTACK_1
+ lsl BSTACK_0,BSTACK_0,#3
+ add BSTACK_2,BSTACK_2,BSTACK_0
+ str BSTACK_1,[ASTACK_0,#-4]
- cmp r4,r9
+ cmp BSTACK_0,ASTACK_PTR
blo _scan_bits
@ n_free_words_after_mark updated
.thumb_func
_found_free_memory:
- lao r12,n_free_words_after_mark,8
- sto r2,r12,n_free_words_after_mark,8
- lao r12,bit_counter,3
- sto r8,r12,bit_counter,3
- lao r12,bit_vector_p,2
- sto r6,r12,bit_vector_p,2
+ lao SCRATCH_REG,n_free_words_after_mark,8
+ sto BSTACK_2,SCRATCH_REG,n_free_words_after_mark,8
+ lao SCRATCH_REG,bit_counter,3
+ sto ASTACK_2,SCRATCH_REG,bit_counter,3
+ lao SCRATCH_REG,bit_vector_p,2
+ sto ASTACK_0,SCRATCH_REG,bit_vector_p,2
- sub r5,r4,r9
+ sub HEAP_FREE,BSTACK_0,ASTACK_PTR
- add r3,r7,#-4
- sub r3,r3,r10
- lsl r3,r3,#5
- lao r12,heap_p3,10
- ldo r10,r12,heap_p3,10
- add r10,r10,r3
+ add BSTACK_1,ASTACK_1,#-4
+ sub BSTACK_1,BSTACK_1,HEAP_PTR
+ lsl BSTACK_1,BSTACK_1,#5
+ lao SCRATCH_REG,heap_p3,10
+ ldo HEAP_PTR,SCRATCH_REG,heap_p3,10
+ add HEAP_PTR,HEAP_PTR,BSTACK_1
- lao r12,stack_top,3
- ldo r9,r12,stack_top,3
+ lao SCRATCH_REG,stack_top,3
+ ldo ASTACK_PTR,SCRATCH_REG,stack_top,3
- add r3,r10,r4,lsl #2
- lao r12,heap_end_after_gc,11
- sto r3,r12,heap_end_after_gc,11
+ add BSTACK_1,HEAP_PTR,BSTACK_0,lsl #2
+ lao SCRATCH_REG,heap_end_after_gc,11
+ sto BSTACK_1,SCRATCH_REG,heap_end_after_gc,11
- ldmia sp!,{r0-r4,pc}
+ ldmia sp!,{BSTACK_4-BSTACK_0,pc}
@ n_free_words_after_mark updated
.thumb_func
_end_bits:
- sub r4,r6,r7
- add r4,r4,#4
+ sub BSTACK_0,ASTACK_0,ASTACK_1
+ add BSTACK_0,BSTACK_0,#4
_end_bits2:
- lsl r4,r4,#3
- add r2,r2,r4
+ lsl BSTACK_0,BSTACK_0,#3
+ add BSTACK_2,BSTACK_2,BSTACK_0
- cmp r4,r9
+ cmp BSTACK_0,ASTACK_PTR
bhs _found_free_memory
- lao r12,n_free_words_after_mark,9
- sto r2,r12,n_free_words_after_mark,9
+ lao SCRATCH_REG,n_free_words_after_mark,9
+ sto BSTACK_2,SCRATCH_REG,n_free_words_after_mark,9
@ n_free_words_after_mark updated
.thumb_func
_end_scan:
- lao r12,bit_counter,4
- sto r8,r12,bit_counter,4
+ lao SCRATCH_REG,bit_counter,4
+ sto ASTACK_2,SCRATCH_REG,bit_counter,4
b compact_gc
.ifdef PIC
@@ -516,432 +515,432 @@ _end_scan:
.thumb_func
_mark_stack_nodes:
- lao r12,end_vector,2
- ldo r12,r12,end_vector,2
- cmp r8,r12
+ lao SCRATCH_REG,end_vector,2
+ ldo SCRATCH_REG,SCRATCH_REG,end_vector,2
+ cmp ASTACK_2,SCRATCH_REG
beq _end_mark_nodes
.thumb_func
_mark_stack_nodes_:
- ldr r6,[r8],#4
+ ldr ASTACK_0,[ASTACK_2],#4
- sub r7,r6,r0
- cmp r7,r1
+ sub ASTACK_1,ASTACK_0,BSTACK_4
+ cmp ASTACK_1,BSTACK_3
bcs _mark_stack_nodes
- lsr r3,r7,#7
- and r7,r7,#31*4
- lsr r9,r7,#2
- mov r12,#1
- lsl r9,r12,r9
+ lsr BSTACK_1,ASTACK_1,#7
+ and ASTACK_1,ASTACK_1,#31*4
+ lsr ASTACK_PTR,ASTACK_1,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_PTR,SCRATCH_REG,ASTACK_PTR
- ldr r12,[r10,r3,lsl #2]
- tst r9,r12
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ tst ASTACK_PTR,SCRATCH_REG
bne _mark_stack_nodes
- str r8,[sp,#-4]!
+ str ASTACK_2,[sp,#-4]!
.ifdef MARK_USING_REVERSAL
- mov r9,#1
+ mov ASTACK_PTR,#1
b __mark_node
.thumb_func
__end_mark_using_reversal:
- ldr r8,[sp],#4
- str r6,[r8,#-4]
+ ldr ASTACK_2,[sp],#4
+ str ASTACK_0,[ASTACK_2,#-4]
b _mark_stack_nodes
.else
- mov r12,#0
- str r12,[sp,#-4]!
+ mov SCRATCH_REG,#0
+ str SCRATCH_REG,[sp,#-4]!
b _mark_arguments
_mark_hnf_2:
- cmp r9,#0x20000000
+ cmp ASTACK_PTR,#0x20000000
bls fits_in_word_6
- add r12,r10,#4
- ldr r9,[r12,r3,lsl #2]
- orr r9,r9,#1
- str r9,[r12,r3,lsl #2]
+ add SCRATCH_REG,HEAP_PTR,#4
+ ldr ASTACK_PTR,[SCRATCH_REG,BSTACK_1,lsl #2]
+ orr ASTACK_PTR,ASTACK_PTR,#1
+ str ASTACK_PTR,[SCRATCH_REG,BSTACK_1,lsl #2]
fits_in_word_6:
- add r2,r2,#3
+ add BSTACK_2,BSTACK_2,#3
_mark_record_2_c:
- ldr r3,[r6,#4]
- str r3,[sp,#-4]!
+ ldr BSTACK_1,[ASTACK_0,#4]
+ str BSTACK_1,[sp,#-4]!
- cmp sp,r11
+ cmp sp,ASTACK_3
blo __mark_using_reversal
_mark_node2:
.thumb_func
_shared_argument_part:
- ldr r6,[r6]
+ ldr ASTACK_0,[ASTACK_0]
.thumb_func
_mark_node:
- sub r7,r6,r0
- cmp r7,r1
+ sub ASTACK_1,ASTACK_0,BSTACK_4
+ cmp ASTACK_1,BSTACK_3
bcs _mark_next_node
- lsr r3,r7,#7
- and r7,r7,#31*4
- lsr r9,r7,#2
- mov r12,#1
- lsl r9,r12,r9
+ lsr BSTACK_1,ASTACK_1,#7
+ and ASTACK_1,ASTACK_1,#31*4
+ lsr ASTACK_PTR,ASTACK_1,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_PTR,SCRATCH_REG,ASTACK_PTR
- ldr r12,[r10,r3,lsl #2]
- tst r9,r12
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ tst ASTACK_PTR,SCRATCH_REG
bne _mark_next_node
.thumb_func
_mark_arguments:
- ldr r4,[r6]
- tst r4,#2
+ ldr BSTACK_0,[ASTACK_0]
+ tst BSTACK_0,#2
beq _mark_lazy_node
- ldrh r8,[r4,#-2]
+ ldrh ASTACK_2,[BSTACK_0,#-2]
- cmp r8,#0
+ cmp ASTACK_2,#0
beq _mark_hnf_0
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r9
- str r12,[r10,r3,lsl #2]
- add r6,r6,#4
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_PTR
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ add ASTACK_0,ASTACK_0,#4
- cmp r8,#256
+ cmp ASTACK_2,#256
bhs _mark_record
- subs r8,r8,#2
+ subs ASTACK_2,ASTACK_2,#2
beq _mark_hnf_2
blo _mark_hnf_1
_mark_hnf_3:
- ldr r7,[r6,#4]
+ ldr ASTACK_1,[ASTACK_0,#4]
- cmp r9,#0x20000000
+ cmp ASTACK_PTR,#0x20000000
bls fits_in_word_1
- add r12,r10,#4
- ldr r9,[r12,r3,lsl #2]
- orr r9,r9,#1
- str r9,[r12,r3,lsl #2]
+ add SCRATCH_REG,HEAP_PTR,#4
+ ldr ASTACK_PTR,[SCRATCH_REG,BSTACK_1,lsl #2]
+ orr ASTACK_PTR,ASTACK_PTR,#1
+ str ASTACK_PTR,[SCRATCH_REG,BSTACK_1,lsl #2]
fits_in_word_1:
- sub r4,r7,r0
- add r2,r2,#3
+ sub BSTACK_0,ASTACK_1,BSTACK_4
+ add BSTACK_2,BSTACK_2,#3
- lsr r3,r4,#7
- and r4,r4,#31*4
+ lsr BSTACK_1,BSTACK_0,#7
+ and BSTACK_0,BSTACK_0,#31*4
- lsr r9,r4,#2
- mov r12,#1
- lsl r9,r12,r9
+ lsr ASTACK_PTR,BSTACK_0,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_PTR,SCRATCH_REG,ASTACK_PTR
- ldr r12,[r10,r3,lsl #2]
- tst r9,r12
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ tst ASTACK_PTR,SCRATCH_REG
bne _shared_argument_part
.thumb_func
_no_shared_argument_part:
- orr r12,r12,r9
- str r12,[r10,r3,lsl #2]
- add r8,r8,#1
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_PTR
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ add ASTACK_2,ASTACK_2,#1
- add r2,r2,r8
- add r4,r4,r8,lsl #2
- add r12,r7,#-4
- add r7,r12,r8,lsl #2
+ add BSTACK_2,BSTACK_2,ASTACK_2
+ add BSTACK_0,BSTACK_0,ASTACK_2,lsl #2
+ add SCRATCH_REG,ASTACK_1,#-4
+ add ASTACK_1,SCRATCH_REG,ASTACK_2,lsl #2
- cmp r4,#32*4
+ cmp BSTACK_0,#32*4
bls fits_in_word_2
- add r12,r10,#4
- ldr r9,[r12,r3,lsl #2]
- orr r9,r9,#1
- str r9,[r12,r3,lsl #2]
+ add SCRATCH_REG,HEAP_PTR,#4
+ ldr ASTACK_PTR,[SCRATCH_REG,BSTACK_1,lsl #2]
+ orr ASTACK_PTR,ASTACK_PTR,#1
+ str ASTACK_PTR,[SCRATCH_REG,BSTACK_1,lsl #2]
fits_in_word_2:
- ldr r3,[r7]
- sub r8,r8,#2
- str r3,[sp,#-4]!
+ ldr BSTACK_1,[ASTACK_1]
+ sub ASTACK_2,ASTACK_2,#2
+ str BSTACK_1,[sp,#-4]!
.thumb_func
_push_hnf_args:
- ldr r3,[r7,#-4]!
- str r3,[sp,#-4]!
- subs r8,r8,#1
+ ldr BSTACK_1,[ASTACK_1,#-4]!
+ str BSTACK_1,[sp,#-4]!
+ subs ASTACK_2,ASTACK_2,#1
bge _push_hnf_args
- cmp sp,r11
+ cmp sp,ASTACK_3
bhs _mark_node2
b __mark_using_reversal
_mark_hnf_1:
- cmp r9,#0x40000000
+ cmp ASTACK_PTR,#0x40000000
bls fits_in_word_4
- add r12,r10,#4
- ldr r9,[r12,r3,lsl #2]
- orr r9,r9,#1
- str r9,[r12,r3,lsl #2]
+ add SCRATCH_REG,HEAP_PTR,#4
+ ldr ASTACK_PTR,[SCRATCH_REG,BSTACK_1,lsl #2]
+ orr ASTACK_PTR,ASTACK_PTR,#1
+ str ASTACK_PTR,[SCRATCH_REG,BSTACK_1,lsl #2]
fits_in_word_4:
- add r2,r2,#2
- ldr r6,[r6]
+ add BSTACK_2,BSTACK_2,#2
+ ldr ASTACK_0,[ASTACK_0]
b _mark_node
_mark_lazy_node_1:
- add r6,r6,#4
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r9
- str r12,[r10,r3,lsl #2]
- cmp r9,#0x20000000
+ add ASTACK_0,ASTACK_0,#4
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_PTR
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ cmp ASTACK_PTR,#0x20000000
bls fits_in_word_3
- add r12,r10,#4
- ldr r9,[r12,r3,lsl #2]
- orr r9,r9,#1
- str r9,[r12,r3,lsl #2]
+ add SCRATCH_REG,HEAP_PTR,#4
+ ldr ASTACK_PTR,[SCRATCH_REG,BSTACK_1,lsl #2]
+ orr ASTACK_PTR,ASTACK_PTR,#1
+ str ASTACK_PTR,[SCRATCH_REG,BSTACK_1,lsl #2]
fits_in_word_3:
- add r2,r2,#3
+ add BSTACK_2,BSTACK_2,#3
- cmp r8,#1
+ cmp ASTACK_2,#1
beq _mark_node2
_mark_selector_node_1:
- cmp r8,#-2
- ldr r7,[r6]
+ cmp ASTACK_2,#-2
+ ldr ASTACK_1,[ASTACK_0]
beq _mark_indirection_node
- sub r9,r7,r0
+ sub ASTACK_PTR,ASTACK_1,BSTACK_4
- lsr r3,r9,#7
- and r9,r9,#31*4
+ lsr BSTACK_1,ASTACK_PTR,#7
+ and ASTACK_PTR,ASTACK_PTR,#31*4
- cmp r8,#-3
+ cmp ASTACK_2,#-3
- lsr r9,r9,#2
- mov r12,#1
- lsl r9,r12,r9
+ lsr ASTACK_PTR,ASTACK_PTR,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_PTR,SCRATCH_REG,ASTACK_PTR
ble _mark_record_selector_node_1
- ldr r12,[r10,r3,lsl #2]
- tst r9,r12
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ tst ASTACK_PTR,SCRATCH_REG
bne _mark_node3
- ldr r8,[r7]
- tst r8,#2
+ ldr ASTACK_2,[ASTACK_1]
+ tst ASTACK_2,#2
beq _mark_node3
- ldrh r12,[r8,#-2]
- cmp r12,#2
+ ldrh SCRATCH_REG,[ASTACK_2,#-2]
+ cmp SCRATCH_REG,#2
bls _small_tuple_or_record
.thumb_func
_large_tuple_or_record:
- ldr r8,[r7,#8]
- sub r8,r8,r0
- lsr r3,r8,#7
- and r8,r8,#31*4
- lsr r8,r8,#2
- mov r12,#1
- lsl r8,r12,r8
-
- ldr r12,[r10,r3,lsl #2]
- tst r8,r12
+ ldr ASTACK_2,[ASTACK_1,#8]
+ sub ASTACK_2,ASTACK_2,BSTACK_4
+ lsr BSTACK_1,ASTACK_2,#7
+ and ASTACK_2,ASTACK_2,#31*4
+ lsr ASTACK_2,ASTACK_2,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_2,SCRATCH_REG,ASTACK_2
+
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ tst ASTACK_2,SCRATCH_REG
bne _mark_node3
- lao r8,e__system__nind,11
+ lao ASTACK_2,e__system__nind,11
.ifdef PIC
- add r12,r4,#-8+4
+ add SCRATCH_REG,BSTACK_0,#-8+4
.endif
- ldr r4,[r4,#-8]
- otoa r8,e__system__nind,11
- str r8,[r6,#-4]
- mov r8,r6
+ ldr BSTACK_0,[BSTACK_0,#-8]
+ otoa ASTACK_2,e__system__nind,11
+ str ASTACK_2,[ASTACK_0,#-4]
+ mov ASTACK_2,ASTACK_0
.ifdef PIC
- ldrh r4,[r12,r4]
+ ldrh BSTACK_0,[SCRATCH_REG,BSTACK_0]
.else
- ldrh r4,[r4,#4]
+ ldrh BSTACK_0,[BSTACK_0,#4]
.endif
- cmp r4,#8
+ cmp BSTACK_0,#8
blt _mark_tuple_selector_node_1
- ldr r7,[r7,#8]
+ ldr ASTACK_1,[ASTACK_1,#8]
beq _mark_tuple_selector_node_2
- add r12,r4,#-12
- ldr r6,[r7,r12]
- str r6,[r8]
+ add SCRATCH_REG,BSTACK_0,#-12
+ ldr ASTACK_0,[ASTACK_1,SCRATCH_REG]
+ str ASTACK_0,[ASTACK_2]
b _mark_node
_mark_tuple_selector_node_2:
- ldr r6,[r7]
- str r6,[r8]
+ ldr ASTACK_0,[ASTACK_1]
+ str ASTACK_0,[ASTACK_2]
b _mark_node
.thumb_func
_small_tuple_or_record:
- lao r8,e__system__nind,12
+ lao ASTACK_2,e__system__nind,12
.ifdef PIC
- add r12,r4,#-8+4
+ add SCRATCH_REG,BSTACK_0,#-8+4
.endif
- ldr r4,[r4,#-8]
- otoa r8,e__system__nind,12
- str r8,[r6,#-4]
- mov r8,r6
+ ldr BSTACK_0,[BSTACK_0,#-8]
+ otoa ASTACK_2,e__system__nind,12
+ str ASTACK_2,[ASTACK_0,#-4]
+ mov ASTACK_2,ASTACK_0
.ifdef PIC
- ldrh r4,[r12,r4]
+ ldrh BSTACK_0,[SCRATCH_REG,BSTACK_0]
.else
- ldrh r4,[r4,#4]
+ ldrh BSTACK_0,[BSTACK_0,#4]
.endif
_mark_tuple_selector_node_1:
- ldr r6,[r7,r4]
- str r6,[r8]
+ ldr ASTACK_0,[ASTACK_1,BSTACK_0]
+ str ASTACK_0,[ASTACK_2]
b _mark_node
_mark_record_selector_node_1:
beq _mark_strict_record_selector_node_1
- ldr r12,[r10,r3,lsl #2]
- tst r9,r12
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ tst ASTACK_PTR,SCRATCH_REG
bne _mark_node3
- ldr r8,[r7]
- tst r8,#2
+ ldr ASTACK_2,[ASTACK_1]
+ tst ASTACK_2,#2
beq _mark_node3
- ldrh r12,[r8,#-2]
- mov r3,#258/2
- cmp r12,r3,lsl #1
+ ldrh SCRATCH_REG,[ASTACK_2,#-2]
+ mov BSTACK_1,#258/2
+ cmp SCRATCH_REG,BSTACK_1,lsl #1
bls _small_tuple_or_record
- ldr r8,[r7,#8]
- sub r8,r8,r0
- lsr r3,r8,#7
- and r8,r8,#31*4
- lsr r8,r8,#2
- mov r12,#1
- lsl r8,r12,r8
+ ldr ASTACK_2,[ASTACK_1,#8]
+ sub ASTACK_2,ASTACK_2,BSTACK_4
+ lsr BSTACK_1,ASTACK_2,#7
+ and ASTACK_2,ASTACK_2,#31*4
+ lsr ASTACK_2,ASTACK_2,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_2,SCRATCH_REG,ASTACK_2
- ldr r12,[r10,r3,lsl #2]
- tst r8,r12
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ tst ASTACK_2,SCRATCH_REG
bne _mark_node3
- lao r8,e__system__nind,13
+ lao ASTACK_2,e__system__nind,13
.ifdef PIC
- add r12,r4,#-8+4
+ add SCRATCH_REG,BSTACK_0,#-8+4
.endif
- ldr r4,[r4,#-8]
- otoa r8,e__system__nind,13
- str r8,[r6,#-4]
- mov r8,r6
+ ldr BSTACK_0,[BSTACK_0,#-8]
+ otoa ASTACK_2,e__system__nind,13
+ str ASTACK_2,[ASTACK_0,#-4]
+ mov ASTACK_2,ASTACK_0
.ifdef PIC
- ldrh r4,[r12,r4]
+ ldrh BSTACK_0,[SCRATCH_REG,BSTACK_0]
.else
- ldrh r4,[r4,#4]
+ ldrh BSTACK_0,[BSTACK_0,#4]
.endif
- cmp r4,#8
+ cmp BSTACK_0,#8
ble _mark_record_selector_node_2
- ldr r7,[r7,#8]
- sub r4,r4,#12
+ ldr ASTACK_1,[ASTACK_1,#8]
+ sub BSTACK_0,BSTACK_0,#12
_mark_record_selector_node_2:
- ldr r6,[r7,r4]
+ ldr ASTACK_0,[ASTACK_1,BSTACK_0]
- str r6,[r8]
+ str ASTACK_0,[ASTACK_2]
b _mark_node
_mark_strict_record_selector_node_1:
- ldr r12,[r10,r3,lsl #2]
- tst r9,r12
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ tst ASTACK_PTR,SCRATCH_REG
bne _mark_node3
- ldr r8,[r7]
- tst r8,#2
+ ldr ASTACK_2,[ASTACK_1]
+ tst ASTACK_2,#2
beq _mark_node3
- ldrh r12,[r8,#-2]
- mov r3,#258/2
- cmp r12,r3,lsl #1
+ ldrh SCRATCH_REG,[ASTACK_2,#-2]
+ mov BSTACK_1,#258/2
+ cmp SCRATCH_REG,BSTACK_1,lsl #1
bls _select_from_small_record
- ldr r8,[r7,#8]
- sub r8,r8,r0
- lsr r3,r8,#7
- and r8,r8,#31*4
- lsr r8,r8,#2
- mov r12,#1
- lsl r8,r12,r8
+ ldr ASTACK_2,[ASTACK_1,#8]
+ sub ASTACK_2,ASTACK_2,BSTACK_4
+ lsr BSTACK_1,ASTACK_2,#7
+ and ASTACK_2,ASTACK_2,#31*4
+ lsr ASTACK_2,ASTACK_2,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_2,SCRATCH_REG,ASTACK_2
- ldr r12,[r10,r3,lsl #2]
- tst r8,r12
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ tst ASTACK_2,SCRATCH_REG
bne _mark_node3
.thumb_func
_select_from_small_record:
.ifdef PIC
- ldr r12,[r4,#-8]
- add r4,r4,#-8+4
+ ldr SCRATCH_REG,[BSTACK_0,#-8]
+ add BSTACK_0,BSTACK_0,#-8+4
.else
- ldr r4,[r4,#-8]
+ ldr BSTACK_0,[BSTACK_0,#-8]
.endif
- sub r6,r6,#4
+ sub ASTACK_0,ASTACK_0,#4
.ifdef PIC
- ldrh r3,[r4,r12]!
+ ldrh BSTACK_1,[BSTACK_0,SCRATCH_REG]!
.else
- ldrh r3,[r4,#4]
+ ldrh BSTACK_1,[BSTACK_0,#4]
.endif
- cmp r3,#8
+ cmp BSTACK_1,#8
ble _mark_strict_record_selector_node_2
- ldr r12,[r7,#8]
- add r3,r3,r12
- ldr r3,[r3,#-12]
+ ldr SCRATCH_REG,[ASTACK_1,#8]
+ add BSTACK_1,BSTACK_1,SCRATCH_REG
+ ldr BSTACK_1,[BSTACK_1,#-12]
b _mark_strict_record_selector_node_3
_mark_strict_record_selector_node_2:
- ldr r3,[r7,r3]
+ ldr BSTACK_1,[ASTACK_1,BSTACK_1]
_mark_strict_record_selector_node_3:
- str r3,[r6,#4]
+ str BSTACK_1,[ASTACK_0,#4]
.ifdef PIC
- ldrh r3,[r4,#6-4]
+ ldrh BSTACK_1,[BSTACK_0,#6-4]
.else
- ldrh r3,[r4,#6]
+ ldrh BSTACK_1,[BSTACK_0,#6]
.endif
- tst r3,r3
+ tst BSTACK_1,BSTACK_1
beq _mark_strict_record_selector_node_5
- cmp r3,#8
+ cmp BSTACK_1,#8
ble _mark_strict_record_selector_node_4
- ldr r7,[r7,#8]
- sub r3,r3,#12
+ ldr ASTACK_1,[ASTACK_1,#8]
+ sub BSTACK_1,BSTACK_1,#12
_mark_strict_record_selector_node_4:
- ldr r3,[r7,r3]
- str r3,[r6,#8]
+ ldr BSTACK_1,[ASTACK_1,BSTACK_1]
+ str BSTACK_1,[ASTACK_0,#8]
_mark_strict_record_selector_node_5:
.ifdef PIC
- ldr r4,[r4,#-4-4]
+ ldr BSTACK_0,[BSTACK_0,#-4-4]
.else
- ldr r4,[r4,#-4]
+ ldr BSTACK_0,[BSTACK_0,#-4]
.endif
- str r4,[r6]
+ str BSTACK_0,[ASTACK_0]
b _mark_next_node
.thumb_func
_mark_indirection_node:
_mark_node3:
- mov r6,r7
+ mov ASTACK_0,ASTACK_1
b _mark_node
.thumb_func
_mark_next_node:
- ldr r6,[sp],#4
- tst r6,r6
+ ldr ASTACK_0,[sp],#4
+ tst ASTACK_0,ASTACK_0
bne _mark_node
- lao r12,end_vector,3
- ldr r8,[sp],#4
- ldo r12,r12,end_vector,3
- cmp r8,r12
+ lao SCRATCH_REG,end_vector,3
+ ldr ASTACK_2,[sp],#4
+ ldo SCRATCH_REG,SCRATCH_REG,end_vector,3
+ cmp ASTACK_2,SCRATCH_REG
bne _mark_stack_nodes_
.thumb_func
@@ -950,239 +949,239 @@ _end_mark_nodes:
.thumb_func
_mark_lazy_node:
- ldr r8,[r4,#-4]
- tst r8,r8
+ ldr ASTACK_2,[BSTACK_0,#-4]
+ tst ASTACK_2,ASTACK_2
beq _mark_real_or_file
- cmp r8,#1
+ cmp ASTACK_2,#1
ble _mark_lazy_node_1
- cmp r8,#256
+ cmp ASTACK_2,#256
bge _mark_closure_with_unboxed_arguments
- add r8,r8,#1
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r9
- str r12,[r10,r3,lsl #2]
+ add ASTACK_2,ASTACK_2,#1
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_PTR
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
- add r2,r2,r8
- add r7,r7,r8,lsl #2
- add r6,r6,r8,lsl #2
+ add BSTACK_2,BSTACK_2,ASTACK_2
+ add ASTACK_1,ASTACK_1,ASTACK_2,lsl #2
+ add ASTACK_0,ASTACK_0,ASTACK_2,lsl #2
- cmp r7,#32*4
+ cmp ASTACK_1,#32*4
bls fits_in_word_7
- add r12,r10,#4
- ldr r7,[r12,r3,lsl #2]
- orr r7,r7,#1
- str r7,[r12,r3,lsl #2]
+ add SCRATCH_REG,HEAP_PTR,#4
+ ldr ASTACK_1,[SCRATCH_REG,BSTACK_1,lsl #2]
+ orr ASTACK_1,ASTACK_1,#1
+ str ASTACK_1,[SCRATCH_REG,BSTACK_1,lsl #2]
fits_in_word_7:
- sub r8,r8,#3
+ sub ASTACK_2,ASTACK_2,#3
.thumb_func
_push_lazy_args:
- ldr r3,[r6,#-4]!
- str r3,[sp,#-4]!
- subs r8,r8,#1
+ ldr BSTACK_1,[ASTACK_0,#-4]!
+ str BSTACK_1,[sp,#-4]!
+ subs ASTACK_2,ASTACK_2,#1
bge _push_lazy_args
- sub r6,r6,#4
+ sub ASTACK_0,ASTACK_0,#4
- cmp sp,r11
+ cmp sp,ASTACK_3
bhs _mark_node2
b __mark_using_reversal
.thumb_func
_mark_closure_with_unboxed_arguments:
- mov r4,r8
- and r8,r8,#255
- subs r8,r8,#1
+ mov BSTACK_0,ASTACK_2
+ and ASTACK_2,ASTACK_2,#255
+ subs ASTACK_2,ASTACK_2,#1
beq _mark_real_or_file
- lsr r4,r4,#8
- add r8,r8,#2
+ lsr BSTACK_0,BSTACK_0,#8
+ add ASTACK_2,ASTACK_2,#2
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r9
- str r12,[r10,r3,lsl #2]
- add r2,r2,r8
- add r7,r7,r8,lsl #2
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_PTR
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ add BSTACK_2,BSTACK_2,ASTACK_2
+ add ASTACK_1,ASTACK_1,ASTACK_2,lsl #2
- sub r8,r8,r4
+ sub ASTACK_2,ASTACK_2,BSTACK_0
- cmp r7,#32*4
+ cmp ASTACK_1,#32*4
bls fits_in_word_7_
- add r12,r10,#4
- ldr r7,[r12,r3,lsl #2]
- orr r7,r7,#1
- str r7,[r12,r3,lsl #2]
+ add SCRATCH_REG,HEAP_PTR,#4
+ ldr ASTACK_1,[SCRATCH_REG,BSTACK_1,lsl #2]
+ orr ASTACK_1,ASTACK_1,#1
+ str ASTACK_1,[SCRATCH_REG,BSTACK_1,lsl #2]
fits_in_word_7_:
- subs r8,r8,#2
+ subs ASTACK_2,ASTACK_2,#2
blt _mark_next_node
- add r12,r6,#8
- add r6,r12,r8,lsl #2
+ add SCRATCH_REG,ASTACK_0,#8
+ add ASTACK_0,SCRATCH_REG,ASTACK_2,lsl #2
bne _push_lazy_args
.thumb_func
_mark_closure_with_one_boxed_argument:
- ldr r6,[r6,#-4]
+ ldr ASTACK_0,[ASTACK_0,#-4]
b _mark_node
_mark_hnf_0:
- laol r12,INT+2,INT_o_2,7
- otoa r12,INT_o_2,7
- cmp r4,r12
+ laol SCRATCH_REG,INT+2,INT_o_2,7
+ otoa SCRATCH_REG,INT_o_2,7
+ cmp BSTACK_0,SCRATCH_REG
blo _mark_real_file_or_string
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r9
- str r12,[r10,r3,lsl #2]
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_PTR
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
- laol r12,CHAR+2,CHAR_o_2,3
- otoa r12,CHAR_o_2,3
- cmp r4,r12
+ laol SCRATCH_REG,CHAR+2,CHAR_o_2,3
+ otoa SCRATCH_REG,CHAR_o_2,3
+ cmp BSTACK_0,SCRATCH_REG
bhi _mark_normal_hnf_0
.thumb_func
_mark_bool:
- add r2,r2,#2
+ add BSTACK_2,BSTACK_2,#2
- cmp r9,#0x40000000
+ cmp ASTACK_PTR,#0x40000000
bls _mark_next_node
- add r12,r10,#4
- ldr r9,[r12,r3,lsl #2]
- orr r9,r9,#1
- str r9,[r12,r3,lsl #2]
+ add SCRATCH_REG,HEAP_PTR,#4
+ ldr ASTACK_PTR,[SCRATCH_REG,BSTACK_1,lsl #2]
+ orr ASTACK_PTR,ASTACK_PTR,#1
+ str ASTACK_PTR,[SCRATCH_REG,BSTACK_1,lsl #2]
b _mark_next_node
_mark_normal_hnf_0:
- add r2,r2,#1
+ add BSTACK_2,BSTACK_2,#1
b _mark_next_node
.thumb_func
_mark_real_file_or_string:
- laol r12,__STRING__+2,__STRING___o_2,8
- otoa r12,__STRING___o_2,8
- cmp r4,r12
+ laol SCRATCH_REG,__STRING__+2,__STRING___o_2,8
+ otoa SCRATCH_REG,__STRING___o_2,8
+ cmp BSTACK_0,SCRATCH_REG
bls _mark_string_or_array
.thumb_func
_mark_real_or_file:
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r9
- str r12,[r10,r3,lsl #2]
- add r2,r2,#3
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_PTR
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ add BSTACK_2,BSTACK_2,#3
- cmp r9,#0x20000000
+ cmp ASTACK_PTR,#0x20000000
bls _mark_next_node
- add r12,r10,#4
- ldr r9,[r12,r3,lsl #2]
- orr r9,r9,#1
- str r9,[r12,r3,lsl #2]
+ add SCRATCH_REG,HEAP_PTR,#4
+ ldr ASTACK_PTR,[SCRATCH_REG,BSTACK_1,lsl #2]
+ orr ASTACK_PTR,ASTACK_PTR,#1
+ str ASTACK_PTR,[SCRATCH_REG,BSTACK_1,lsl #2]
b _mark_next_node
.thumb_func
_mark_record:
- mov r12,#258/2
- subs r8,r8,r12,lsl #1
+ mov SCRATCH_REG,#258/2
+ subs ASTACK_2,ASTACK_2,SCRATCH_REG,lsl #1
beq _mark_record_2
blt _mark_record_1
_mark_record_3:
- add r2,r2,#3
+ add BSTACK_2,BSTACK_2,#3
- cmp r9,#0x20000000
+ cmp ASTACK_PTR,#0x20000000
bls fits_in_word_13
- add r12,r10,#4
- ldr r9,[r12,r3,lsl #2]
- orr r9,r9,#1
- str r9,[r12,r3,lsl #2]
+ add SCRATCH_REG,HEAP_PTR,#4
+ ldr ASTACK_PTR,[SCRATCH_REG,BSTACK_1,lsl #2]
+ orr ASTACK_PTR,ASTACK_PTR,#1
+ str ASTACK_PTR,[SCRATCH_REG,BSTACK_1,lsl #2]
fits_in_word_13:
- ldr r7,[r6,#4]
+ ldr ASTACK_1,[ASTACK_0,#4]
- ldrh r3,[r4,#-2+2]
- sub r9,r7,r0
+ ldrh BSTACK_1,[BSTACK_0,#-2+2]
+ sub ASTACK_PTR,ASTACK_1,BSTACK_4
- lsr r4,r9,#7
- and r9,r9,#31*4
+ lsr BSTACK_0,ASTACK_PTR,#7
+ and ASTACK_PTR,ASTACK_PTR,#31*4
- subs r3,r3,#1
+ subs BSTACK_1,BSTACK_1,#1
- lsr r7,r9,#2
- mov r12,#1
- lsl r7,r12,r7
+ lsr ASTACK_1,ASTACK_PTR,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_1,SCRATCH_REG,ASTACK_1
blo _mark_record_3_bb
- ldr r12,[r10,r4,lsl #2]
- tst r7,r12
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_0,lsl #2]
+ tst ASTACK_1,SCRATCH_REG
bne _mark_node2
- add r8,r8,#1
- ldr r12,[r10,r4,lsl #2]
- orr r12,r12,r7
- str r12,[r10,r4,lsl #2]
- add r2,r2,r8
- add r9,r9,r8,lsl #2
+ add ASTACK_2,ASTACK_2,#1
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_0,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_1
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_0,lsl #2]
+ add BSTACK_2,BSTACK_2,ASTACK_2
+ add ASTACK_PTR,ASTACK_PTR,ASTACK_2,lsl #2
- cmp r9,#32*4
+ cmp ASTACK_PTR,#32*4
bls _push_record_arguments
- add r12,r10,#4
- ldr r7,[r12,r4,lsl #2]
- orr r7,r7,#1
- str r7,[r12,r4,lsl #2]
+ add SCRATCH_REG,HEAP_PTR,#4
+ ldr ASTACK_1,[SCRATCH_REG,BSTACK_0,lsl #2]
+ orr ASTACK_1,ASTACK_1,#1
+ str ASTACK_1,[SCRATCH_REG,BSTACK_0,lsl #2]
.thumb_func
_push_record_arguments:
- ldr r7,[r6,#4]
- mov r8,r3
- lsl r3,r3,#2
- add r7,r7,r3
- subs r8,r8,#1
+ ldr ASTACK_1,[ASTACK_0,#4]
+ mov ASTACK_2,BSTACK_1
+ lsl BSTACK_1,BSTACK_1,#2
+ add ASTACK_1,ASTACK_1,BSTACK_1
+ subs ASTACK_2,ASTACK_2,#1
bge _push_hnf_args
b _mark_node2
_mark_record_3_bb:
- ldr r12,[r10,r4,lsl #2]
- tst r7,r12
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_0,lsl #2]
+ tst ASTACK_1,SCRATCH_REG
bne _mark_next_node
- add r8,r8,#1
- ldr r12,[r10,r4,lsl #2]
- orr r12,r12,r7
- str r12,[r10,r4,lsl #2]
- add r2,r2,r8
- add r9,r9,r8,lsl #2
+ add ASTACK_2,ASTACK_2,#1
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_0,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_1
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_0,lsl #2]
+ add BSTACK_2,BSTACK_2,ASTACK_2
+ add ASTACK_PTR,ASTACK_PTR,ASTACK_2,lsl #2
- cmp r9,#32*4
+ cmp ASTACK_PTR,#32*4
bls _mark_next_node
- add r12,r10,#4
- ldr r7,[r12,r4,lsl #2]
- orr r7,r7,#1
- str r7,[r12,r4,lsl #2]
+ add SCRATCH_REG,HEAP_PTR,#4
+ ldr ASTACK_1,[SCRATCH_REG,BSTACK_0,lsl #2]
+ orr ASTACK_1,ASTACK_1,#1
+ str ASTACK_1,[SCRATCH_REG,BSTACK_0,lsl #2]
b _mark_next_node
_mark_record_2:
- cmp r9,#0x20000000
+ cmp ASTACK_PTR,#0x20000000
bls fits_in_word_12
- add r12,r10,#4
- ldr r7,[r12,r3,lsl #2]
- orr r7,r7,#1
- str r7,[r12,r3,lsl #2]
+ add SCRATCH_REG,HEAP_PTR,#4
+ ldr ASTACK_1,[SCRATCH_REG,BSTACK_1,lsl #2]
+ orr ASTACK_1,ASTACK_1,#1
+ str ASTACK_1,[SCRATCH_REG,BSTACK_1,lsl #2]
fits_in_word_12:
- add r2,r2,#3
+ add BSTACK_2,BSTACK_2,#3
- ldrh r12,[r4,#-2+2]
- cmp r12,#1
+ ldrh SCRATCH_REG,[BSTACK_0,#-2+2]
+ cmp SCRATCH_REG,#1
bhi _mark_record_2_c
beq _mark_node2
b _mark_next_node
_mark_record_1:
- ldrh r12,[r4,#-2+2]
- cmp r12,#0
+ ldrh SCRATCH_REG,[BSTACK_0,#-2+2]
+ cmp SCRATCH_REG,#0
bne _mark_hnf_1
b _mark_bool
@@ -1193,331 +1192,331 @@ _mark_string_or_array:
.thumb_func
_mark_array:
- ldr r8,[r6,#8]
- cmp r8,#0
+ ldr ASTACK_2,[ASTACK_0,#8]
+ cmp ASTACK_2,#0
beq _mark_lazy_array
- ldrh r4,[r8,#-2]
+ ldrh BSTACK_0,[ASTACK_2,#-2]
- cmp r4,#0
+ cmp BSTACK_0,#0
beq _mark_strict_basic_array
- ldrh r8,[r8,#-2+2]
- cmp r8,#0
+ ldrh ASTACK_2,[ASTACK_2,#-2+2]
+ cmp ASTACK_2,#0
beq _mark_b_record_array
- cmp sp,r11
+ cmp sp,ASTACK_3
blo _mark_array_using_reversal
- sub r4,r4,#256
- cmp r4,r8
+ sub BSTACK_0,BSTACK_0,#256
+ cmp BSTACK_0,ASTACK_2
beq _mark_a_record_array
.thumb_func
_mark_ab_record_array:
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r9
- str r12,[r10,r3,lsl #2]
- ldr r8,[r6,#4]
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_PTR
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ ldr ASTACK_2,[ASTACK_0,#4]
- mul r4,r8,r4
- add r4,r4,#3
+ mul BSTACK_0,ASTACK_2,BSTACK_0
+ add BSTACK_0,BSTACK_0,#3
- add r2,r2,r4
- add r12,r6,#-4
- add r4,r12,r4,lsl #2
+ add BSTACK_2,BSTACK_2,BSTACK_0
+ add SCRATCH_REG,ASTACK_0,#-4
+ add BSTACK_0,SCRATCH_REG,BSTACK_0,lsl #2
- sub r4,r4,r0
- lsr r4,r4,#7
+ sub BSTACK_0,BSTACK_0,BSTACK_4
+ lsr BSTACK_0,BSTACK_0,#7
- cmp r3,r4
+ cmp BSTACK_1,BSTACK_0
bhs _end_set_ab_array_bits
- add r3,r3,#1
- mov r8,#1
- cmp r3,r4
+ add BSTACK_1,BSTACK_1,#1
+ mov ASTACK_2,#1
+ cmp BSTACK_1,BSTACK_0
bhs _last_ab_array_bits
.thumb_func
_mark_ab_array_lp:
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r8
- str r12,[r10,r3,lsl #2]
- add r3,r3,#1
- cmp r3,r4
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_2
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ add BSTACK_1,BSTACK_1,#1
+ cmp BSTACK_1,BSTACK_0
blo _mark_ab_array_lp
.thumb_func
_last_ab_array_bits:
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r8
- str r12,[r10,r3,lsl #2]
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_2
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
.thumb_func
_end_set_ab_array_bits:
- ldr r4,[r6,#4]
- ldr r7,[r6,#8]
- ldrh r3,[r7,#-2+2]
- ldrh r7,[r7,#-2]
- lsl r3,r3,#2
- sub r7,r7,#256
- lsl r7,r7,#2
- str r3,[sp,#-4]!
- str r7,[sp,#-4]!
- add r8,r6,#12
-
- lao r12,end_vector,4
- ldo r12,r12,end_vector,4
- str r12,[sp,#-4]!
+ ldr BSTACK_0,[ASTACK_0,#4]
+ ldr ASTACK_1,[ASTACK_0,#8]
+ ldrh BSTACK_1,[ASTACK_1,#-2+2]
+ ldrh ASTACK_1,[ASTACK_1,#-2]
+ lsl BSTACK_1,BSTACK_1,#2
+ sub ASTACK_1,ASTACK_1,#256
+ lsl ASTACK_1,ASTACK_1,#2
+ str BSTACK_1,[sp,#-4]!
+ str ASTACK_1,[sp,#-4]!
+ add ASTACK_2,ASTACK_0,#12
+
+ lao SCRATCH_REG,end_vector,4
+ ldo SCRATCH_REG,SCRATCH_REG,end_vector,4
+ str SCRATCH_REG,[sp,#-4]!
b _mark_ab_array_begin
.thumb_func
_mark_ab_array:
- ldr r3,[sp,#8]
- str r4,[sp,#-4]!
- str r8,[sp,#-4]!
- add r4,r8,r3
+ ldr BSTACK_1,[sp,#8]
+ str BSTACK_0,[sp,#-4]!
+ str ASTACK_2,[sp,#-4]!
+ add BSTACK_0,ASTACK_2,BSTACK_1
- lao r12,end_vector,5
- sto r4,r12,end_vector,5
+ lao SCRATCH_REG,end_vector,5
+ sto BSTACK_0,SCRATCH_REG,end_vector,5
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl _mark_stack_nodes
- ldr r3,[sp,#4+8]
- ldr r8,[sp],#4
- ldr r4,[sp],#4
- add r8,r8,r3
+ ldr BSTACK_1,[sp,#4+8]
+ ldr ASTACK_2,[sp],#4
+ ldr BSTACK_0,[sp],#4
+ add ASTACK_2,ASTACK_2,BSTACK_1
.thumb_func
_mark_ab_array_begin:
- subs r4,r4,#1
+ subs BSTACK_0,BSTACK_0,#1
bcs _mark_ab_array
- ldr r6,[sp]
- lao r12,end_vector,6
- sto r6,r12,end_vector,6
+ ldr ASTACK_0,[sp]
+ lao SCRATCH_REG,end_vector,6
+ sto ASTACK_0,SCRATCH_REG,end_vector,6
add sp,sp,#12
b _mark_next_node
.thumb_func
_mark_a_record_array:
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r9
- str r12,[r10,r3,lsl #2]
- ldr r8,[r6,#4]
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_PTR
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ ldr ASTACK_2,[ASTACK_0,#4]
- mul r4,r8,r4
- str r4,[sp,#-4]!
+ mul BSTACK_0,ASTACK_2,BSTACK_0
+ str BSTACK_0,[sp,#-4]!
- add r4,r4,#3
+ add BSTACK_0,BSTACK_0,#3
- add r2,r2,r4
- add r12,r6,#-4
- add r4,r12,r4,lsl #2
+ add BSTACK_2,BSTACK_2,BSTACK_0
+ add SCRATCH_REG,ASTACK_0,#-4
+ add BSTACK_0,SCRATCH_REG,BSTACK_0,lsl #2
- sub r4,r4,r0
- lsr r4,r4,#7
+ sub BSTACK_0,BSTACK_0,BSTACK_4
+ lsr BSTACK_0,BSTACK_0,#7
- cmp r3,r4
+ cmp BSTACK_1,BSTACK_0
bhs _end_set_a_array_bits
- add r3,r3,#1
- mov r8,#1
- cmp r3,r4
+ add BSTACK_1,BSTACK_1,#1
+ mov ASTACK_2,#1
+ cmp BSTACK_1,BSTACK_0
bhs _last_a_array_bits
.thumb_func
_mark_a_array_lp:
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r8
- str r12,[r10,r3,lsl #2]
- add r3,r3,#1
- cmp r3,r4
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_2
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ add BSTACK_1,BSTACK_1,#1
+ cmp BSTACK_1,BSTACK_0
blo _mark_a_array_lp
.thumb_func
_last_a_array_bits:
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r8
- str r12,[r10,r3,lsl #2]
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_2
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
.thumb_func
_end_set_a_array_bits:
- ldr r4,[sp],#4
- add r8,r6,#12
+ ldr BSTACK_0,[sp],#4
+ add ASTACK_2,ASTACK_0,#12
- lao r12,end_vector,7
- ldo r12,r12,end_vector,7
- str r12,[sp,#-4]!
- add r12,r6,#12
- add r4,r12,r4,lsl #2
+ lao SCRATCH_REG,end_vector,7
+ ldo SCRATCH_REG,SCRATCH_REG,end_vector,7
+ str SCRATCH_REG,[sp,#-4]!
+ add SCRATCH_REG,ASTACK_0,#12
+ add BSTACK_0,SCRATCH_REG,BSTACK_0,lsl #2
- lao r12,end_vector,8
- sto r4,r12,end_vector,8
+ lao SCRATCH_REG,end_vector,8
+ sto BSTACK_0,SCRATCH_REG,end_vector,8
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl _mark_stack_nodes
- ldr r6,[sp],#4
- lao r12,end_vector,9
- sto r6,r12,end_vector,9
+ ldr ASTACK_0,[sp],#4
+ lao SCRATCH_REG,end_vector,9
+ sto ASTACK_0,SCRATCH_REG,end_vector,9
b _mark_next_node
.thumb_func
_mark_lazy_array:
- cmp sp,r11
+ cmp sp,ASTACK_3
blo _mark_array_using_reversal
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r9
- str r12,[r10,r3,lsl #2]
- ldr r4,[r6,#4]
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_PTR
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ ldr BSTACK_0,[ASTACK_0,#4]
- add r4,r4,#3
+ add BSTACK_0,BSTACK_0,#3
- add r2,r2,r4
- add r12,r6,#-4
- add r4,r12,r4,lsl #2
+ add BSTACK_2,BSTACK_2,BSTACK_0
+ add SCRATCH_REG,ASTACK_0,#-4
+ add BSTACK_0,SCRATCH_REG,BSTACK_0,lsl #2
- sub r4,r4,r0
- lsr r4,r4,#7
+ sub BSTACK_0,BSTACK_0,BSTACK_4
+ lsr BSTACK_0,BSTACK_0,#7
- cmp r3,r4
+ cmp BSTACK_1,BSTACK_0
bhs _end_set_lazy_array_bits
- add r3,r3,#1
- mov r8,#1
- cmp r3,r4
+ add BSTACK_1,BSTACK_1,#1
+ mov ASTACK_2,#1
+ cmp BSTACK_1,BSTACK_0
bhs _last_lazy_array_bits
.thumb_func
_mark_lazy_array_lp:
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r8
- str r12,[r10,r3,lsl #2]
- add r3,r3,#1
- cmp r3,r4
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_2
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ add BSTACK_1,BSTACK_1,#1
+ cmp BSTACK_1,BSTACK_0
blo _mark_lazy_array_lp
.thumb_func
_last_lazy_array_bits:
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r8
- str r12,[r10,r3,lsl #2]
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_2
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
.thumb_func
_end_set_lazy_array_bits:
- ldr r4,[r6,#4]
- add r8,r6,#12
+ ldr BSTACK_0,[ASTACK_0,#4]
+ add ASTACK_2,ASTACK_0,#12
- lao r12,end_vector,10
- ldo r12,r12,end_vector,10
- str r12,[sp,#-4]!
- add r12,r6,#12
- add r4,r12,r4,lsl #2
+ lao SCRATCH_REG,end_vector,10
+ ldo SCRATCH_REG,SCRATCH_REG,end_vector,10
+ str SCRATCH_REG,[sp,#-4]!
+ add SCRATCH_REG,ASTACK_0,#12
+ add BSTACK_0,SCRATCH_REG,BSTACK_0,lsl #2
- lao r12,end_vector,11
- sto r4,r12,end_vector,11
+ lao SCRATCH_REG,end_vector,11
+ sto BSTACK_0,SCRATCH_REG,end_vector,11
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl _mark_stack_nodes
- ldr r6,[sp],#4
- lao r12,end_vector,12
- sto r6,r12,end_vector,12
+ ldr ASTACK_0,[sp],#4
+ lao SCRATCH_REG,end_vector,12
+ sto ASTACK_0,SCRATCH_REG,end_vector,12
b _mark_next_node
.thumb_func
_mark_array_using_reversal:
- mov r12,#0
- str r12,[sp,#-4]!
- mov r9,#1
+ mov SCRATCH_REG,#0
+ str SCRATCH_REG,[sp,#-4]!
+ mov ASTACK_PTR,#1
b __mark_node
.thumb_func
_mark_strict_basic_array:
- ldr r4,[r6,#4]
- laol r12,INT+2,INT_o_2,8
- otoa r12,INT_o_2,8
- cmp r8,r12
+ ldr BSTACK_0,[ASTACK_0,#4]
+ laol SCRATCH_REG,INT+2,INT_o_2,8
+ otoa SCRATCH_REG,INT_o_2,8
+ cmp ASTACK_2,SCRATCH_REG
beq _mark_strict_int_array
- laol r12,BOOL+2,BOOL_o_2,5
- otoa r12,BOOL_o_2,5
- cmp r8,r12
+ laol SCRATCH_REG,BOOL+2,BOOL_o_2,5
+ otoa SCRATCH_REG,BOOL_o_2,5
+ cmp ASTACK_2,SCRATCH_REG
beq _mark_strict_bool_array
.thumb_func
_mark_strict_real_array:
- add r4,r4,r4
+ add BSTACK_0,BSTACK_0,BSTACK_0
.thumb_func
_mark_strict_int_array:
- add r4,r4,#3
+ add BSTACK_0,BSTACK_0,#3
b _mark_basic_array_
.thumb_func
_mark_strict_bool_array:
- add r4,r4,#12+3
- lsr r4,r4,#2
+ add BSTACK_0,BSTACK_0,#12+3
+ lsr BSTACK_0,BSTACK_0,#2
b _mark_basic_array_
.thumb_func
_mark_b_record_array:
- ldr r8,[r6,#4]
- sub r4,r4,#256
- mul r4,r8,r4
- add r4,r4,#3
+ ldr ASTACK_2,[ASTACK_0,#4]
+ sub BSTACK_0,BSTACK_0,#256
+ mul BSTACK_0,ASTACK_2,BSTACK_0
+ add BSTACK_0,BSTACK_0,#3
b _mark_basic_array_
.thumb_func
_mark_string_:
- ldr r4,[r6,#4]
- add r4,r4,#8+3
- lsr r4,r4,#2
+ ldr BSTACK_0,[ASTACK_0,#4]
+ add BSTACK_0,BSTACK_0,#8+3
+ lsr BSTACK_0,BSTACK_0,#2
.thumb_func
_mark_basic_array_:
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r9
- str r12,[r10,r3,lsl #2]
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_PTR
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
- add r2,r2,r4
- add r12,r6,#-4
- add r4,r12,r4,lsl #2
+ add BSTACK_2,BSTACK_2,BSTACK_0
+ add SCRATCH_REG,ASTACK_0,#-4
+ add BSTACK_0,SCRATCH_REG,BSTACK_0,lsl #2
- sub r4,r4,r0
- lsr r4,r4,#7
+ sub BSTACK_0,BSTACK_0,BSTACK_4
+ lsr BSTACK_0,BSTACK_0,#7
- cmp r3,r4
+ cmp BSTACK_1,BSTACK_0
bhs _mark_next_node
- add r3,r3,#1
- mov r8,#1
- cmp r3,r4
+ add BSTACK_1,BSTACK_1,#1
+ mov ASTACK_2,#1
+ cmp BSTACK_1,BSTACK_0
bhs _last_string_bits
.thumb_func
_mark_string_lp:
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r8
- str r12,[r10,r3,lsl #2]
- add r3,r3,#1
- cmp r3,r4
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_2
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ add BSTACK_1,BSTACK_1,#1
+ cmp BSTACK_1,BSTACK_0
blo _mark_string_lp
.thumb_func
_last_string_bits:
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r8
- str r12,[r10,r3,lsl #2]
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_2
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
b _mark_next_node
.thumb_func
__end_mark_using_reversal:
- ldr r7,[sp],#4
- tst r7,r7
+ ldr ASTACK_1,[sp],#4
+ tst ASTACK_1,ASTACK_1
beq _mark_next_node
- str r6,[r7]
+ str ASTACK_0,[ASTACK_1]
b _mark_next_node
.endif
@@ -1546,779 +1545,779 @@ __end_mark_using_reversal:
.thumb_func
__mark_using_reversal:
- str r6,[sp,#-4]!
- mov r9,#1
- ldr r6,[r6]
+ str ASTACK_0,[sp,#-4]!
+ mov ASTACK_PTR,#1
+ ldr ASTACK_0,[ASTACK_0]
b __mark_node
.thumb_func
__mark_arguments:
- ldr r4,[r6]
- tst r4,#2
+ ldr BSTACK_0,[ASTACK_0]
+ tst BSTACK_0,#2
beq __mark_lazy_node
- ldrh r8,[r4,#-2]
- tst r8,r8
+ ldrh ASTACK_2,[BSTACK_0,#-2]
+ tst ASTACK_2,ASTACK_2
beq __mark_hnf_0
- add r6,r6,#4
+ add ASTACK_0,ASTACK_0,#4
- cmp r8,#256
+ cmp ASTACK_2,#256
bhs __mark__record
- subs r8,r8,#2
+ subs ASTACK_2,ASTACK_2,#2
beq __mark_hnf_2
blo __mark_hnf_1
__mark_hnf_3:
- lsr r7,r7,#2
- mov r12,#1
- lsl r7,r12,r7
- add r2,r2,#3
+ lsr ASTACK_1,ASTACK_1,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_1,SCRATCH_REG,ASTACK_1
+ add BSTACK_2,BSTACK_2,#3
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r7
- str r12,[r10,r3,lsl #2]
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_1
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
- cmp r7,#0x20000000
+ cmp ASTACK_1,#0x20000000
bls fits__in__word__1
- add r12,r10,#4
- ldr r7,[r12,r3,lsl #2]
- orr r7,r7,#1
- str r7,[r12,r3,lsl #2]
+ add SCRATCH_REG,HEAP_PTR,#4
+ ldr ASTACK_1,[SCRATCH_REG,BSTACK_1,lsl #2]
+ orr ASTACK_1,ASTACK_1,#1
+ str ASTACK_1,[SCRATCH_REG,BSTACK_1,lsl #2]
fits__in__word__1:
- ldr r12,[r6,#4]
- sub r4,r12,r0
+ ldr SCRATCH_REG,[ASTACK_0,#4]
+ sub BSTACK_0,SCRATCH_REG,BSTACK_4
- lsr r3,r4,#7
- and r4,r4,#31*4
+ lsr BSTACK_1,BSTACK_0,#7
+ and BSTACK_0,BSTACK_0,#31*4
- lsr r7,r4,#2
- mov r12,#1
- lsl r7,r12,r7
+ lsr ASTACK_1,BSTACK_0,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_1,SCRATCH_REG,ASTACK_1
- ldr r12,[r10,r3,lsl #2]
- tst r7,r12
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ tst ASTACK_1,SCRATCH_REG
bne __shared_argument_part
.thumb_func
__no_shared_argument_part:
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r7
- str r12,[r10,r3,lsl #2]
- ldr r7,[r6,#4]
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_1
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ ldr ASTACK_1,[ASTACK_0,#4]
- add r8,r8,#1
- str r9,[r6,#4]
+ add ASTACK_2,ASTACK_2,#1
+ str ASTACK_PTR,[ASTACK_0,#4]
- add r2,r2,r8
- add r6,r6,#4
+ add BSTACK_2,BSTACK_2,ASTACK_2
+ add ASTACK_0,ASTACK_0,#4
- lsl r8,r8,#2
- ldr r12,[r7]
- orr r12,r12,#1
- str r12,[r7]
+ lsl ASTACK_2,ASTACK_2,#2
+ ldr SCRATCH_REG,[ASTACK_1]
+ orr SCRATCH_REG,SCRATCH_REG,#1
+ str SCRATCH_REG,[ASTACK_1]
- add r4,r4,r8
- add r7,r7,r8
+ add BSTACK_0,BSTACK_0,ASTACK_2
+ add ASTACK_1,ASTACK_1,ASTACK_2
- cmp r4,#32*4
+ cmp BSTACK_0,#32*4
bls fits__in__word__2
- add r12,r10,#4
- ldr r9,[r12,r3,lsl #2]
- orr r9,r9,#1
- str r9,[r12,r3,lsl #2]
+ add SCRATCH_REG,HEAP_PTR,#4
+ ldr ASTACK_PTR,[SCRATCH_REG,BSTACK_1,lsl #2]
+ orr ASTACK_PTR,ASTACK_PTR,#1
+ str ASTACK_PTR,[SCRATCH_REG,BSTACK_1,lsl #2]
fits__in__word__2:
- ldr r8,[r7,#-4]
- str r6,[r7,#-4]
- add r9,r7,#-4
- mov r6,r8
+ ldr ASTACK_2,[ASTACK_1,#-4]
+ str ASTACK_0,[ASTACK_1,#-4]
+ add ASTACK_PTR,ASTACK_1,#-4
+ mov ASTACK_0,ASTACK_2
b __mark_node
__mark_hnf_1:
- lsr r7,r7,#2
- mov r12,#1
- lsl r7,r12,r7
- add r2,r2,#2
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r7
- str r12,[r10,r3,lsl #2]
- cmp r7,#0x40000000
+ lsr ASTACK_1,ASTACK_1,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_1,SCRATCH_REG,ASTACK_1
+ add BSTACK_2,BSTACK_2,#2
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_1
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ cmp ASTACK_1,#0x40000000
bls __shared_argument_part
- add r12,r10,#4
- ldr r7,[r12,r3,lsl #2]
- orr r7,r7,#1
- str r7,[r12,r3,lsl #2]
+ add SCRATCH_REG,HEAP_PTR,#4
+ ldr ASTACK_1,[SCRATCH_REG,BSTACK_1,lsl #2]
+ orr ASTACK_1,ASTACK_1,#1
+ str ASTACK_1,[SCRATCH_REG,BSTACK_1,lsl #2]
.thumb_func
__shared_argument_part:
- ldr r8,[r6]
- str r9,[r6]
- add r9,r6,#2
- mov r6,r8
+ ldr ASTACK_2,[ASTACK_0]
+ str ASTACK_PTR,[ASTACK_0]
+ add ASTACK_PTR,ASTACK_0,#2
+ mov ASTACK_0,ASTACK_2
b __mark_node
__mark_no_selector_2:
- ldr r3,[sp],#4
+ ldr BSTACK_1,[sp],#4
__mark_no_selector_1:
- lsr r7,r7,#2
- mov r12,#1
- lsl r7,r12,r7
- add r2,r2,#3
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r7
- str r12,[r10,r3,lsl #2]
- cmp r7,#0x20000000
+ lsr ASTACK_1,ASTACK_1,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_1,SCRATCH_REG,ASTACK_1
+ add BSTACK_2,BSTACK_2,#3
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_1
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ cmp ASTACK_1,#0x20000000
bls __shared_argument_part
- add r12,r10,#4
- ldr r7,[r12,r3,lsl #2]
- orr r7,r7,#1
- str r7,[r12,r3,lsl #2]
+ add SCRATCH_REG,HEAP_PTR,#4
+ ldr ASTACK_1,[SCRATCH_REG,BSTACK_1,lsl #2]
+ orr ASTACK_1,ASTACK_1,#1
+ str ASTACK_1,[SCRATCH_REG,BSTACK_1,lsl #2]
b __shared_argument_part
__mark_lazy_node_1:
beq __mark_no_selector_1
__mark_selector_node_1:
- cmp r8,#-2
+ cmp ASTACK_2,#-2
beq __mark_indirection_node
- cmp r8,#-3
+ cmp ASTACK_2,#-3
- str r3,[sp,#-4]!
- ldr r8,[r6]
- str r4,[sp,#-4]!
+ str BSTACK_1,[sp,#-4]!
+ ldr ASTACK_2,[ASTACK_0]
+ str BSTACK_0,[sp,#-4]!
ble __mark_record_selector_node_1
- sub r4,r8,r0
- lsr r3,r4,#7
- and r4,r4,#31*4
- lsr r4,r4,#2
- mov r12,#1
- lsl r4,r12,r4
+ sub BSTACK_0,ASTACK_2,BSTACK_4
+ lsr BSTACK_1,BSTACK_0,#7
+ and BSTACK_0,BSTACK_0,#31*4
+ lsr BSTACK_0,BSTACK_0,#2
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
- ldr r12,[r10,r3,lsl #2]
- tst r4,r12
- ldr r4,[sp],#4
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ tst BSTACK_0,SCRATCH_REG
+ ldr BSTACK_0,[sp],#4
bne __mark_no_selector_2
- ldr r3,[r8]
- tst r3,#2
+ ldr BSTACK_1,[ASTACK_2]
+ tst BSTACK_1,#2
beq __mark_no_selector_2
- ldrh r12,[r3,#-2]
- cmp r12,#2
+ ldrh SCRATCH_REG,[BSTACK_1,#-2]
+ cmp SCRATCH_REG,#2
bls __small_tuple_or_record
__large_tuple_or_record:
- ldr r8,[r8,#8]
- sub r8,r8,r0
- lsr r3,r8,#7
- and r8,r8,#31*4
- lsr r8,r8,#2
- mov r12,#1
- lsl r8,r12,r8
-
- ldr r12,[r10,r3,lsl #2]
- tst r8,r12
+ ldr ASTACK_2,[ASTACK_2,#8]
+ sub ASTACK_2,ASTACK_2,BSTACK_4
+ lsr BSTACK_1,ASTACK_2,#7
+ and ASTACK_2,ASTACK_2,#31*4
+ lsr ASTACK_2,ASTACK_2,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_2,SCRATCH_REG,ASTACK_2
+
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ tst ASTACK_2,SCRATCH_REG
bne __mark_no_selector_2
.ifdef PIC
- ldr r12,[r4,#-8]
- add r4,r4,#-8+4
+ ldr SCRATCH_REG,[BSTACK_0,#-8]
+ add BSTACK_0,BSTACK_0,#-8+4
.else
- ldr r4,[r4,#-8]
+ ldr BSTACK_0,[BSTACK_0,#-8]
.endif
- lao r8,e__system__nind,14
- ldr r7,[r6]
- otoa r8,e__system__nind,14
- str r8,[r6,#-4]
- mov r8,r6
+ lao ASTACK_2,e__system__nind,14
+ ldr ASTACK_1,[ASTACK_0]
+ otoa ASTACK_2,e__system__nind,14
+ str ASTACK_2,[ASTACK_0,#-4]
+ mov ASTACK_2,ASTACK_0
- ldr r3,[sp],#4
+ ldr BSTACK_1,[sp],#4
.ifdef PIC
- ldrh r4,[r4,r12]
+ ldrh BSTACK_0,[BSTACK_0,SCRATCH_REG]
.else
- ldrh r4,[r4,#4]
+ ldrh BSTACK_0,[BSTACK_0,#4]
.endif
- cmp r4,#8
+ cmp BSTACK_0,#8
blt __mark_tuple_selector_node_1
- ldr r7,[r7,#8]
+ ldr ASTACK_1,[ASTACK_1,#8]
beq __mark_tuple_selector_node_2
- sub r4,r4,#12
- ldr r6,[r7,r4]
- str r6,[r8]
+ sub BSTACK_0,BSTACK_0,#12
+ ldr ASTACK_0,[ASTACK_1,BSTACK_0]
+ str ASTACK_0,[ASTACK_2]
b __mark_node
__mark_tuple_selector_node_2:
- ldr r6,[r7]
- str r6,[r8]
+ ldr ASTACK_0,[ASTACK_1]
+ str ASTACK_0,[ASTACK_2]
b __mark_node
.thumb_func
__small_tuple_or_record:
.ifdef PIC
- ldr r12,[r4,#-8]
- add r4,r4,#-8+4
+ ldr SCRATCH_REG,[BSTACK_0,#-8]
+ add BSTACK_0,BSTACK_0,#-8+4
.else
- ldr r4,[r4,#-8]
+ ldr BSTACK_0,[BSTACK_0,#-8]
.endif
- lao r8,e__system__nind,15
- ldr r7,[r6]
- otoa r8,e__system__nind,15
- str r8,[r6,#-4]
- mov r8,r6
+ lao ASTACK_2,e__system__nind,15
+ ldr ASTACK_1,[ASTACK_0]
+ otoa ASTACK_2,e__system__nind,15
+ str ASTACK_2,[ASTACK_0,#-4]
+ mov ASTACK_2,ASTACK_0
- ldr r3,[sp],#4
+ ldr BSTACK_1,[sp],#4
.ifdef PIC
- ldrh r4,[r4,r12]
+ ldrh BSTACK_0,[BSTACK_0,SCRATCH_REG]
.else
- ldrh r4,[r4,#4]
+ ldrh BSTACK_0,[BSTACK_0,#4]
.endif
__mark_tuple_selector_node_1:
- ldr r6,[r7,r4]
- str r6,[r8]
+ ldr ASTACK_0,[ASTACK_1,BSTACK_0]
+ str ASTACK_0,[ASTACK_2]
b __mark_node
__mark_record_selector_node_1:
beq __mark_strict_record_selector_node_1
- sub r4,r8,r0
- lsr r3,r4,#7
- and r4,r4,#31*4
- lsr r4,r4,#2
- mov r12,#1
- lsl r4,r12,r4
+ sub BSTACK_0,ASTACK_2,BSTACK_4
+ lsr BSTACK_1,BSTACK_0,#7
+ and BSTACK_0,BSTACK_0,#31*4
+ lsr BSTACK_0,BSTACK_0,#2
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
- ldr r12,[r10,r3,lsl #2]
- tst r4,r12
- ldr r4,[sp],#4
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ tst BSTACK_0,SCRATCH_REG
+ ldr BSTACK_0,[sp],#4
bne __mark_no_selector_2
- ldr r3,[r8]
- tst r3,#2
+ ldr BSTACK_1,[ASTACK_2]
+ tst BSTACK_1,#2
beq __mark_no_selector_2
- ldrh r12,[r3,#-2]
- mov r3,#258/2
- cmp r12,r3,lsl #1
+ ldrh SCRATCH_REG,[BSTACK_1,#-2]
+ mov BSTACK_1,#258/2
+ cmp SCRATCH_REG,BSTACK_1,lsl #1
bls __small_record
- ldr r8,[r8,#8]
- sub r8,r8,r0
- lsr r3,r8,#7
- and r8,r8,#31*4
- lsr r8,r8,#2
- mov r12,#1
- lsl r8,r12,r8
+ ldr ASTACK_2,[ASTACK_2,#8]
+ sub ASTACK_2,ASTACK_2,BSTACK_4
+ lsr BSTACK_1,ASTACK_2,#7
+ and ASTACK_2,ASTACK_2,#31*4
+ lsr ASTACK_2,ASTACK_2,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_2,SCRATCH_REG,ASTACK_2
- ldr r12,[r10,r3,lsl #2]
- tst r8,r12
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ tst ASTACK_2,SCRATCH_REG
bne __mark_no_selector_2
.thumb_func
__small_record:
.ifdef PIC
- ldr r12,[r4,#-8]
- add r4,r4,#-8+4
+ ldr SCRATCH_REG,[BSTACK_0,#-8]
+ add BSTACK_0,BSTACK_0,#-8+4
.else
- ldr r4,[r4,#-8]
+ ldr BSTACK_0,[BSTACK_0,#-8]
.endif
- lao r8,e__system__nind,16
- ldr r7,[r6]
- otoa r8,e__system__nind,16
- str r8,[r6,#-4]
- mov r8,r6
+ lao ASTACK_2,e__system__nind,16
+ ldr ASTACK_1,[ASTACK_0]
+ otoa ASTACK_2,e__system__nind,16
+ str ASTACK_2,[ASTACK_0,#-4]
+ mov ASTACK_2,ASTACK_0
- ldr r3,[sp],#4
+ ldr BSTACK_1,[sp],#4
.ifdef PIC
- ldrh r4,[r4,r12]
+ ldrh BSTACK_0,[BSTACK_0,SCRATCH_REG]
.else
- ldrh r4,[r4,#4]
+ ldrh BSTACK_0,[BSTACK_0,#4]
.endif
- cmp r4,#8
+ cmp BSTACK_0,#8
ble __mark_record_selector_node_2
- ldr r7,[r7,#8]
- sub r4,r4,#12
+ ldr ASTACK_1,[ASTACK_1,#8]
+ sub BSTACK_0,BSTACK_0,#12
__mark_record_selector_node_2:
- ldr r6,[r7,r4]
+ ldr ASTACK_0,[ASTACK_1,BSTACK_0]
- str r6,[r8]
+ str ASTACK_0,[ASTACK_2]
b __mark_node
__mark_strict_record_selector_node_1:
- sub r4,r8,r0
- lsr r3,r4,#7
- and r4,r4,#31*4
- lsr r4,r4,#2
- mov r12,#1
- lsl r4,r12,r4
-
- ldr r12,[r10,r3,lsl #2]
- tst r4,r12
- ldr r4,[sp],#4
+ sub BSTACK_0,ASTACK_2,BSTACK_4
+ lsr BSTACK_1,BSTACK_0,#7
+ and BSTACK_0,BSTACK_0,#31*4
+ lsr BSTACK_0,BSTACK_0,#2
+ mov SCRATCH_REG,#1
+ lsl BSTACK_0,SCRATCH_REG,BSTACK_0
+
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ tst BSTACK_0,SCRATCH_REG
+ ldr BSTACK_0,[sp],#4
bne __mark_no_selector_2
- ldr r3,[r8]
- tst r3,#2
+ ldr BSTACK_1,[ASTACK_2]
+ tst BSTACK_1,#2
beq __mark_no_selector_2
- ldrh r12,[r3,#-2]
- mov r3,#258/2
- cmp r12,r3,lsl #1
+ ldrh SCRATCH_REG,[BSTACK_1,#-2]
+ mov BSTACK_1,#258/2
+ cmp SCRATCH_REG,BSTACK_1,lsl #1
ble __select_from_small_record
- ldr r8,[r8,#8]
- sub r8,r8,r0
- lsr r3,r8,#7
- and r8,r8,#31*4
- lsr r8,r8,#2
- mov r12,#1
- lsl r8,r12,r8
+ ldr ASTACK_2,[ASTACK_2,#8]
+ sub ASTACK_2,ASTACK_2,BSTACK_4
+ lsr BSTACK_1,ASTACK_2,#7
+ and ASTACK_2,ASTACK_2,#31*4
+ lsr ASTACK_2,ASTACK_2,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_2,SCRATCH_REG,ASTACK_2
- ldr r12,[r10,r3,lsl #2]
- tst r8,r12
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ tst ASTACK_2,SCRATCH_REG
bne __mark_no_selector_2
.thumb_func
__select_from_small_record:
.ifdef PIC
- ldr r4,[r4,#-8]
- add r12,r4,#-8+4
+ ldr BSTACK_0,[BSTACK_0,#-8]
+ add SCRATCH_REG,BSTACK_0,#-8+4
.else
- ldr r4,[r4,#-8]
+ ldr BSTACK_0,[BSTACK_0,#-8]
.endif
- ldr r7,[r6]
- ldr r3,[sp],#4
- sub r6,r6,#4
+ ldr ASTACK_1,[ASTACK_0]
+ ldr BSTACK_1,[sp],#4
+ sub ASTACK_0,ASTACK_0,#4
.ifdef PIC
- ldrh r3,[r4,r12]!
+ ldrh BSTACK_1,[BSTACK_0,SCRATCH_REG]!
.else
- ldrh r3,[r4,#4]
+ ldrh BSTACK_1,[BSTACK_0,#4]
.endif
- cmp r3,#8
+ cmp BSTACK_1,#8
ble __mark_strict_record_selector_node_2
- ldr r12,[r7,#8]
- add r3,r3,r12
- ldr r3,[r3,#-12]
+ ldr SCRATCH_REG,[ASTACK_1,#8]
+ add BSTACK_1,BSTACK_1,SCRATCH_REG
+ ldr BSTACK_1,[BSTACK_1,#-12]
b __mark_strict_record_selector_node_3
__mark_strict_record_selector_node_2:
- ldr r3,[r7,r3]
+ ldr BSTACK_1,[ASTACK_1,BSTACK_1]
__mark_strict_record_selector_node_3:
- str r3,[r6,#4]
+ str BSTACK_1,[ASTACK_0,#4]
.ifdef PIC
- ldrh r3,[r4,#6-4]
+ ldrh BSTACK_1,[BSTACK_0,#6-4]
.else
- ldrh r3,[r4,#6]
+ ldrh BSTACK_1,[BSTACK_0,#6]
.endif
- tst r3,r3
+ tst BSTACK_1,BSTACK_1
beq __mark_strict_record_selector_node_5
- cmp r3,#8
+ cmp BSTACK_1,#8
ble __mark_strict_record_selector_node_4
- ldr r7,[r7,#8]
- sub r3,r3,#12
+ ldr ASTACK_1,[ASTACK_1,#8]
+ sub BSTACK_1,BSTACK_1,#12
__mark_strict_record_selector_node_4:
- ldr r3,[r7,r3]
- str r3,[r6,#8]
+ ldr BSTACK_1,[ASTACK_1,BSTACK_1]
+ str BSTACK_1,[ASTACK_0,#8]
__mark_strict_record_selector_node_5:
.ifdef PIC
- ldr r4,[r4,#-4-4]
+ ldr BSTACK_0,[BSTACK_0,#-4-4]
.else
- ldr r4,[r4,#-4]
+ ldr BSTACK_0,[BSTACK_0,#-4]
.endif
- str r4,[r6]
+ str BSTACK_0,[ASTACK_0]
b __mark_node
.thumb_func
__mark_indirection_node:
- ldr r6,[r6]
+ ldr ASTACK_0,[ASTACK_0]
b __mark_node
__mark_hnf_2:
- lsr r7,r7,#2
- mov r12,#1
- lsl r7,r12,r7
- add r2,r2,#3
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r7
- str r12,[r10,r3,lsl #2]
- cmp r7,#0x20000000
+ lsr ASTACK_1,ASTACK_1,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_1,SCRATCH_REG,ASTACK_1
+ add BSTACK_2,BSTACK_2,#3
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_1
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ cmp ASTACK_1,#0x20000000
bls fits__in__word__6
- add r12,r10,#4
- ldr r7,[r12,r3,lsl #2]
- orr r7,r7,#1
- str r7,[r12,r3,lsl #2]
+ add SCRATCH_REG,HEAP_PTR,#4
+ ldr ASTACK_1,[SCRATCH_REG,BSTACK_1,lsl #2]
+ orr ASTACK_1,ASTACK_1,#1
+ str ASTACK_1,[SCRATCH_REG,BSTACK_1,lsl #2]
fits__in__word__6:
__mark_record_2_c:
- ldr r4,[r6]
- ldr r8,[r6,#4]
- orr r4,r4,#2
- str r9,[r6,#4]
- str r4,[r6]
- add r9,r6,#4
- mov r6,r8
+ ldr BSTACK_0,[ASTACK_0]
+ ldr ASTACK_2,[ASTACK_0,#4]
+ orr BSTACK_0,BSTACK_0,#2
+ str ASTACK_PTR,[ASTACK_0,#4]
+ str BSTACK_0,[ASTACK_0]
+ add ASTACK_PTR,ASTACK_0,#4
+ mov ASTACK_0,ASTACK_2
.thumb_func
__mark_node:
- sub r7,r6,r0
- cmp r7,r1
+ sub ASTACK_1,ASTACK_0,BSTACK_4
+ cmp ASTACK_1,BSTACK_3
bhs __mark_next_node
- lsr r3,r7,#7
- and r7,r7,#31*4
- lsr r8,r7,#2
- mov r12,#1
- lsl r8,r12,r8
+ lsr BSTACK_1,ASTACK_1,#7
+ and ASTACK_1,ASTACK_1,#31*4
+ lsr ASTACK_2,ASTACK_1,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_2,SCRATCH_REG,ASTACK_2
- ldr r12,[r10,r3,lsl #2]
- tst r8,r12
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ tst ASTACK_2,SCRATCH_REG
beq __mark_arguments
.thumb_func
__mark_next_node:
- tst r9,#3
+ tst ASTACK_PTR,#3
bne __mark_parent
- ldr r8,[r9,#-4]
- ldr r7,[r9]
- str r6,[r9]
- str r7,[r9,#-4]
- sub r9,r9,#4
+ ldr ASTACK_2,[ASTACK_PTR,#-4]
+ ldr ASTACK_1,[ASTACK_PTR]
+ str ASTACK_0,[ASTACK_PTR]
+ str ASTACK_1,[ASTACK_PTR,#-4]
+ sub ASTACK_PTR,ASTACK_PTR,#4
- mov r6,r8
- and r8,r8,#3
- and r6,r6,#-4
- orr r9,r9,r8
+ mov ASTACK_0,ASTACK_2
+ and ASTACK_2,ASTACK_2,#3
+ and ASTACK_0,ASTACK_0,#-4
+ orr ASTACK_PTR,ASTACK_PTR,ASTACK_2
b __mark_node
.thumb_func
__mark_parent:
- mov r3,r9
- bics r9,r9,#3
+ mov BSTACK_1,ASTACK_PTR
+ bics ASTACK_PTR,ASTACK_PTR,#3
beq __end_mark_using_reversal
- and r3,r3,#3
- ldr r8,[r9]
- str r6,[r9]
+ and BSTACK_1,BSTACK_1,#3
+ ldr ASTACK_2,[ASTACK_PTR]
+ str ASTACK_0,[ASTACK_PTR]
- subs r3,r3,#1
+ subs BSTACK_1,BSTACK_1,#1
beq __argument_part_parent
- add r6,r9,#-4
- mov r9,r8
+ add ASTACK_0,ASTACK_PTR,#-4
+ mov ASTACK_PTR,ASTACK_2
b __mark_next_node
.thumb_func
__argument_part_parent:
- and r8,r8,#-4
- mov r7,r9
- ldr r6,[r8,#-4]
- ldr r3,[r8]
- str r3,[r8,#-4]
- str r7,[r8]
- add r9,r8,#2-4
+ and ASTACK_2,ASTACK_2,#-4
+ mov ASTACK_1,ASTACK_PTR
+ ldr ASTACK_0,[ASTACK_2,#-4]
+ ldr BSTACK_1,[ASTACK_2]
+ str BSTACK_1,[ASTACK_2,#-4]
+ str ASTACK_1,[ASTACK_2]
+ add ASTACK_PTR,ASTACK_2,#2-4
b __mark_node
.thumb_func
__mark_lazy_node:
- ldr r8,[r4,#-4]
- tst r8,r8
+ ldr ASTACK_2,[BSTACK_0,#-4]
+ tst ASTACK_2,ASTACK_2
beq __mark_real_or_file
- add r6,r6,#4
- cmp r8,#1
+ add ASTACK_0,ASTACK_0,#4
+ cmp ASTACK_2,#1
ble __mark_lazy_node_1
- cmp r8,#256
+ cmp ASTACK_2,#256
bge __mark_closure_with_unboxed_arguments
- add r8,r8,#1
- mov r4,r7
- lsr r7,r7,#2
- mov r12,#1
- lsl r7,r12,r7
- add r2,r2,r8
+ add ASTACK_2,ASTACK_2,#1
+ mov BSTACK_0,ASTACK_1
+ lsr ASTACK_1,ASTACK_1,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_1,SCRATCH_REG,ASTACK_1
+ add BSTACK_2,BSTACK_2,ASTACK_2
- add r4,r4,r8,lsl #2
- sub r8,r8,#2
+ add BSTACK_0,BSTACK_0,ASTACK_2,lsl #2
+ sub ASTACK_2,ASTACK_2,#2
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r7
- str r12,[r10,r3,lsl #2]
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_1
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
- cmp r4,#32*4
+ cmp BSTACK_0,#32*4
bls fits__in__word__7
- add r12,r10,#4
- ldr r7,[r12,r3,lsl #2]
- orr r7,r7,#1
- str r7,[r12,r3,lsl #2]
+ add SCRATCH_REG,HEAP_PTR,#4
+ ldr ASTACK_1,[SCRATCH_REG,BSTACK_1,lsl #2]
+ orr ASTACK_1,ASTACK_1,#1
+ str ASTACK_1,[SCRATCH_REG,BSTACK_1,lsl #2]
fits__in__word__7:
__mark_closure_with_unboxed_arguments__2:
- add r7,r6,r8,lsl #2
- ldr r4,[r6]
- orr r4,r4,#2
- str r4,[r6]
- ldr r6,[r7]
- str r9,[r7]
- mov r9,r7
+ add ASTACK_1,ASTACK_0,ASTACK_2,lsl #2
+ ldr BSTACK_0,[ASTACK_0]
+ orr BSTACK_0,BSTACK_0,#2
+ str BSTACK_0,[ASTACK_0]
+ ldr ASTACK_0,[ASTACK_1]
+ str ASTACK_PTR,[ASTACK_1]
+ mov ASTACK_PTR,ASTACK_1
b __mark_node
.thumb_func
__mark_closure_with_unboxed_arguments:
- mov r4,r8
- and r8,r8,#255
+ mov BSTACK_0,ASTACK_2
+ and ASTACK_2,ASTACK_2,#255
- subs r8,r8,#1
+ subs ASTACK_2,ASTACK_2,#1
beq __mark_closure_1_with_unboxed_argument
- add r8,r8,#2
+ add ASTACK_2,ASTACK_2,#2
- lsr r4,r4,#8
- add r2,r2,r8
+ lsr BSTACK_0,BSTACK_0,#8
+ add BSTACK_2,BSTACK_2,ASTACK_2
- str r6,[sp,#-4]!
- add r6,r7,r8,lsl #2
+ str ASTACK_0,[sp,#-4]!
+ add ASTACK_0,ASTACK_1,ASTACK_2,lsl #2
- lsr r7,r7,#2
- mov r12,#1
- lsl r7,r12,r7
- sub r8,r8,r4
+ lsr ASTACK_1,ASTACK_1,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_1,SCRATCH_REG,ASTACK_1
+ sub ASTACK_2,ASTACK_2,BSTACK_0
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r7
- str r12,[r10,r3,lsl #2]
- cmp r6,#32*4
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_1
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ cmp ASTACK_0,#32*4
bls fits__in_word_7_
- add r12,r10,#4
- ldr r7,[r12,r3,lsl #2]
- orr r7,r7,#1
- str r7,[r12,r3,lsl #2]
+ add SCRATCH_REG,HEAP_PTR,#4
+ ldr ASTACK_1,[SCRATCH_REG,BSTACK_1,lsl #2]
+ orr ASTACK_1,ASTACK_1,#1
+ str ASTACK_1,[SCRATCH_REG,BSTACK_1,lsl #2]
fits__in_word_7_:
- ldr r6,[sp],#4
- subs r8,r8,#2
+ ldr ASTACK_0,[sp],#4
+ subs ASTACK_2,ASTACK_2,#2
bgt __mark_closure_with_unboxed_arguments__2
beq __shared_argument_part
- sub r6,r6,#4
+ sub ASTACK_0,ASTACK_0,#4
b __mark_next_node
__mark_closure_1_with_unboxed_argument:
- sub r6,r6,#4
+ sub ASTACK_0,ASTACK_0,#4
b __mark_real_or_file
__mark_hnf_0:
- laol r12,INT+2,INT_o_2,9
- otoa r12,INT_o_2,9
- cmp r4,r12
+ laol SCRATCH_REG,INT+2,INT_o_2,9
+ otoa SCRATCH_REG,INT_o_2,9
+ cmp BSTACK_0,SCRATCH_REG
bne __no_int_3
- ldr r8,[r6,#4]
- cmp r8,#33
+ ldr ASTACK_2,[ASTACK_0,#4]
+ cmp ASTACK_2,#33
blo ____small_int
.thumb_func
__mark_bool_or_small_string:
- lsr r7,r7,#2
- mov r12,#1
- lsl r7,r12,r7
- add r2,r2,#2
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r7
- str r12,[r10,r3,lsl #2]
- cmp r7,#0x40000000
+ lsr ASTACK_1,ASTACK_1,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_1,SCRATCH_REG,ASTACK_1
+ add BSTACK_2,BSTACK_2,#2
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_1
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ cmp ASTACK_1,#0x40000000
bls __mark_next_node
- add r12,r10,#4
- ldr r7,[r12,r3,lsl #2]
- orr r7,r7,#1
- str r7,[r12,r3,lsl #2]
+ add SCRATCH_REG,HEAP_PTR,#4
+ ldr ASTACK_1,[SCRATCH_REG,BSTACK_1,lsl #2]
+ orr ASTACK_1,ASTACK_1,#1
+ str ASTACK_1,[SCRATCH_REG,BSTACK_1,lsl #2]
b __mark_next_node
.thumb_func
____small_int:
- lao r6,small_integers,2
- otoa r6,small_integers,2
- add r6,r6,r8,lsl #3
+ lao ASTACK_0,small_integers,2
+ otoa ASTACK_0,small_integers,2
+ add ASTACK_0,ASTACK_0,ASTACK_2,lsl #3
b __mark_next_node
__no_int_3:
blo __mark_real_file_or_string
- laol r12,CHAR+2,CHAR_o_2,4
- otoa r12,CHAR_o_2,4
- cmp r4,r12
+ laol SCRATCH_REG,CHAR+2,CHAR_o_2,4
+ otoa SCRATCH_REG,CHAR_o_2,4
+ cmp BSTACK_0,SCRATCH_REG
bne __no_char_3
- ldrb r8,[r6,#4]
- lao r6,static_characters,2
- otoa r6,static_characters,2
- add r6,r6,r8,lsl #3
+ ldrb ASTACK_2,[ASTACK_0,#4]
+ lao ASTACK_0,static_characters,2
+ otoa ASTACK_0,static_characters,2
+ add ASTACK_0,ASTACK_0,ASTACK_2,lsl #3
b __mark_next_node
__no_char_3:
blo __mark_bool_or_small_string
- add r6,r4,#ZERO_ARITY_DESCRIPTOR_OFFSET-2
+ add ASTACK_0,BSTACK_0,#ZERO_ARITY_DESCRIPTOR_OFFSET-2
b __mark_next_node
.thumb_func
__mark_real_file_or_string:
- laol r12,__STRING__+2,__STRING___o_2,9
- otoa r12,__STRING___o_2,9
- cmp r4,r12
+ laol SCRATCH_REG,__STRING__+2,__STRING___o_2,9
+ otoa SCRATCH_REG,__STRING___o_2,9
+ cmp BSTACK_0,SCRATCH_REG
bls __mark_string_or_array
.thumb_func
__mark_real_or_file:
- lsr r7,r7,#2
- mov r12,#1
- lsl r7,r12,r7
- add r2,r2,#3
+ lsr ASTACK_1,ASTACK_1,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_1,SCRATCH_REG,ASTACK_1
+ add BSTACK_2,BSTACK_2,#3
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r7
- str r12,[r10,r3,lsl #2]
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_1
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
- cmp r7,#0x20000000
+ cmp ASTACK_1,#0x20000000
bls __mark_next_node
- add r12,r10,#4
- ldr r7,[r12,r3,lsl #2]
- orr r7,r7,#1
- str r7,[r12,r3,lsl #2]
+ add SCRATCH_REG,HEAP_PTR,#4
+ ldr ASTACK_1,[SCRATCH_REG,BSTACK_1,lsl #2]
+ orr ASTACK_1,ASTACK_1,#1
+ str ASTACK_1,[SCRATCH_REG,BSTACK_1,lsl #2]
b __mark_next_node
.thumb_func
__mark__record:
- mov r12,#258/2
- subs r8,r8,r12,lsl #1
+ mov SCRATCH_REG,#258/2
+ subs ASTACK_2,ASTACK_2,SCRATCH_REG,lsl #1
beq __mark_record_2
blt __mark_record_1
__mark_record_3:
- lsr r7,r7,#2
- mov r12,#1
- lsl r7,r12,r7
- add r2,r2,#3
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r7
- str r12,[r10,r3,lsl #2]
- cmp r7,#0x20000000
+ lsr ASTACK_1,ASTACK_1,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_1,SCRATCH_REG,ASTACK_1
+ add BSTACK_2,BSTACK_2,#3
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_1
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ cmp ASTACK_1,#0x20000000
bls fits__in__word__13
- add r12,r10,#4
- ldr r7,[r12,r3,lsl #2]
- orr r7,r7,#1
- str r7,[r12,r3,lsl #2]
+ add SCRATCH_REG,HEAP_PTR,#4
+ ldr ASTACK_1,[SCRATCH_REG,BSTACK_1,lsl #2]
+ orr ASTACK_1,ASTACK_1,#1
+ str ASTACK_1,[SCRATCH_REG,BSTACK_1,lsl #2]
fits__in__word__13:
- ldrh r3,[r4,#-2+2]
+ ldrh BSTACK_1,[BSTACK_0,#-2+2]
- ldr r7,[r6,#4]
- sub r7,r7,r0
- mov r4,r7
- and r7,r7,#31*4
- lsr r4,r4,#7
+ ldr ASTACK_1,[ASTACK_0,#4]
+ sub ASTACK_1,ASTACK_1,BSTACK_4
+ mov BSTACK_0,ASTACK_1
+ and ASTACK_1,ASTACK_1,#31*4
+ lsr BSTACK_0,BSTACK_0,#7
- str r9,[sp,#-4]!
+ str ASTACK_PTR,[sp,#-4]!
- lsr r9,r7,#2
- mov r12,#1
- lsl r9,r12,r9
+ lsr ASTACK_PTR,ASTACK_1,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_PTR,SCRATCH_REG,ASTACK_PTR
- ldr r12,[r10,r4,lsl #2]
- tst r9,r12
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_0,lsl #2]
+ tst ASTACK_PTR,SCRATCH_REG
bne __shared_record_argument_part
- add r8,r8,#1
- ldr r12,[r10,r4,lsl #2]
- orr r12,r12,r9
- str r12,[r10,r4,lsl #2]
+ add ASTACK_2,ASTACK_2,#1
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_0,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_PTR
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_0,lsl #2]
- add r7,r7,r8,lsl #2
- add r2,r2,r8
+ add ASTACK_1,ASTACK_1,ASTACK_2,lsl #2
+ add BSTACK_2,BSTACK_2,ASTACK_2
- ldr r9,[sp],#4
+ ldr ASTACK_PTR,[sp],#4
- cmp r7,#32*4
+ cmp ASTACK_1,#32*4
bls fits__in__word__14
- add r12,r10,#4
- ldr r7,[r12,r4,lsl #2]
- orr r7,r7,#1
- str r7,[r12,r4,lsl #2]
+ add SCRATCH_REG,HEAP_PTR,#4
+ ldr ASTACK_1,[SCRATCH_REG,BSTACK_0,lsl #2]
+ orr ASTACK_1,ASTACK_1,#1
+ str ASTACK_1,[SCRATCH_REG,BSTACK_0,lsl #2]
fits__in__word__14:
- subs r3,r3,#1
- ldr r7,[r6,#4]
+ subs BSTACK_1,BSTACK_1,#1
+ ldr ASTACK_1,[ASTACK_0,#4]
blt __mark_record_3_bb
beq __shared_argument_part
- str r9,[r6,#4]
- add r6,r6,#4
+ str ASTACK_PTR,[ASTACK_0,#4]
+ add ASTACK_0,ASTACK_0,#4
- subs r3,r3,#1
+ subs BSTACK_1,BSTACK_1,#1
beq __mark_record_3_aab
- add r9,r7,r3,lsl #2
- ldr r4,[r7]
- orr r4,r4,#1
- ldr r8,[r9]
- str r4,[r7]
- str r6,[r9]
- mov r6,r8
+ add ASTACK_PTR,ASTACK_1,BSTACK_1,lsl #2
+ ldr BSTACK_0,[ASTACK_1]
+ orr BSTACK_0,BSTACK_0,#1
+ ldr ASTACK_2,[ASTACK_PTR]
+ str BSTACK_0,[ASTACK_1]
+ str ASTACK_0,[ASTACK_PTR]
+ mov ASTACK_0,ASTACK_2
b __mark_node
__mark_record_3_bb:
- sub r6,r6,#4
+ sub ASTACK_0,ASTACK_0,#4
b __mark_next_node
__mark_record_3_aab:
- ldr r8,[r7]
- str r6,[r7]
- add r9,r7,#1
- mov r6,r8
+ ldr ASTACK_2,[ASTACK_1]
+ str ASTACK_0,[ASTACK_1]
+ add ASTACK_PTR,ASTACK_1,#1
+ mov ASTACK_0,ASTACK_2
b __mark_node
.thumb_func
__shared_record_argument_part:
- ldr r7,[r6,#4]
+ ldr ASTACK_1,[ASTACK_0,#4]
- ldr r9,[sp],#4
+ ldr ASTACK_PTR,[sp],#4
- tst r3,r3
+ tst BSTACK_1,BSTACK_1
bne __shared_argument_part
- sub r6,r6,#4
+ sub ASTACK_0,ASTACK_0,#4
b __mark_next_node
__mark_record_2:
- lsr r7,r7,#2
- mov r12,#1
- lsl r7,r12,r7
- add r2,r2,#3
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r7
- str r12,[r10,r3,lsl #2]
- cmp r7,#0x20000000
+ lsr ASTACK_1,ASTACK_1,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_1,SCRATCH_REG,ASTACK_1
+ add BSTACK_2,BSTACK_2,#3
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_1
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ cmp ASTACK_1,#0x20000000
bls fits__in__word_12
- add r12,r10,#4
- ldr r7,[r12,r3,lsl #2]
- orr r7,r7,#1
- str r7,[r12,r3,lsl #2]
+ add SCRATCH_REG,HEAP_PTR,#4
+ ldr ASTACK_1,[SCRATCH_REG,BSTACK_1,lsl #2]
+ orr ASTACK_1,ASTACK_1,#1
+ str ASTACK_1,[SCRATCH_REG,BSTACK_1,lsl #2]
fits__in__word_12:
- ldrh r12,[r4,#-2+2]
- cmp r12,#1
+ ldrh SCRATCH_REG,[BSTACK_0,#-2+2]
+ cmp SCRATCH_REG,#1
bhi __mark_record_2_c
beq __shared_argument_part
- sub r6,r6,#4
+ sub ASTACK_0,ASTACK_0,#4
b __mark_next_node
__mark_record_1:
- ldrh r12,[r4,#-2+2]
- cmp r12,#0
+ ldrh SCRATCH_REG,[BSTACK_0,#-2+2]
+ cmp SCRATCH_REG,#0
bne __mark_hnf_1
- sub r6,r6,#4
+ sub ASTACK_0,ASTACK_0,#4
b __mark_bool_or_small_string
.thumb_func
@@ -2327,242 +2326,242 @@ __mark_string_or_array:
.thumb_func
__mark_array:
- ldr r8,[r6,#8]
- cmp r8,#0
+ ldr ASTACK_2,[ASTACK_0,#8]
+ cmp ASTACK_2,#0
beq __mark_lazy_array
- ldrh r4,[r8,#-2]
- cmp r4,#0
+ ldrh BSTACK_0,[ASTACK_2,#-2]
+ cmp BSTACK_0,#0
beq __mark_strict_basic_array
- ldrh r8,[r8,#-2+2]
- tst r8,r8
+ ldrh ASTACK_2,[ASTACK_2,#-2+2]
+ tst ASTACK_2,ASTACK_2
beq __mark_b_record_array
- sub r4,r4,#256
- cmp r4,r8
+ sub BSTACK_0,BSTACK_0,#256
+ cmp BSTACK_0,ASTACK_2
beq __mark_a_record_array
.thumb_func
__mark__ab__record__array:
- str r7,[sp,#-4]!
- str r3,[sp,#-4]!
- mov r3,r8
+ str ASTACK_1,[sp,#-4]!
+ str BSTACK_1,[sp,#-4]!
+ mov BSTACK_1,ASTACK_2
- ldr r8,[r6,#4]
- add r6,r6,#8
- str r6,[sp,#-4]!
+ ldr ASTACK_2,[ASTACK_0,#4]
+ add ASTACK_0,ASTACK_0,#8
+ str ASTACK_0,[sp,#-4]!
- lsl r8,r8,#2
- mov r7,r4
- mul r7,r8,r7
+ lsl ASTACK_2,ASTACK_2,#2
+ mov ASTACK_1,BSTACK_0
+ mul ASTACK_1,ASTACK_2,ASTACK_1
- sub r4,r4,r3
- add r6,r6,#4
- add r7,r7,r6
+ sub BSTACK_0,BSTACK_0,BSTACK_1
+ add ASTACK_0,ASTACK_0,#4
+ add ASTACK_1,ASTACK_1,ASTACK_0
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl reorder
- ldr r6,[sp],#4
+ ldr ASTACK_0,[sp],#4
- mov r12,r4
- mov r4,r3
- mov r3,r12
- ldr r8,[r6,#-4]
- mul r4,r8,r4
- mul r3,r8,r3
- add r2,r2,r3
- add r3,r3,r4
+ mov SCRATCH_REG,BSTACK_0
+ mov BSTACK_0,BSTACK_1
+ mov BSTACK_1,SCRATCH_REG
+ ldr ASTACK_2,[ASTACK_0,#-4]
+ mul BSTACK_0,ASTACK_2,BSTACK_0
+ mul BSTACK_1,ASTACK_2,BSTACK_1
+ add BSTACK_2,BSTACK_2,BSTACK_1
+ add BSTACK_1,BSTACK_1,BSTACK_0
- lsl r3,r3,#2
- sub r8,r6,r0
- add r8,r8,r3
+ lsl BSTACK_1,BSTACK_1,#2
+ sub ASTACK_2,ASTACK_0,BSTACK_4
+ add ASTACK_2,ASTACK_2,BSTACK_1
- ldr r3,[sp],#4
- ldr r7,[sp],#4
+ ldr BSTACK_1,[sp],#4
+ ldr ASTACK_1,[sp],#4
- lsr r7,r7,#2
- mov r12,#1
- lsl r7,r12,r7
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r7
- str r12,[r10,r3,lsl #2]
+ lsr ASTACK_1,ASTACK_1,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_1,SCRATCH_REG,ASTACK_1
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_1
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
- add r7,r6,r4,lsl #2
+ add ASTACK_1,ASTACK_0,BSTACK_0,lsl #2
b __mark_r_array
.thumb_func
__mark_a_record_array:
- ldr r12,[r6,#4]
- mul r4,r12,r4
- add r6,r6,#8
+ ldr SCRATCH_REG,[ASTACK_0,#4]
+ mul BSTACK_0,SCRATCH_REG,BSTACK_0
+ add ASTACK_0,ASTACK_0,#8
b __mark_lr_array
.thumb_func
__mark_lazy_array:
- ldr r4,[r6,#4]
- add r6,r6,#8
+ ldr BSTACK_0,[ASTACK_0,#4]
+ add ASTACK_0,ASTACK_0,#8
.thumb_func
__mark_lr_array:
- lsr r7,r7,#2
- mov r12,#1
- lsl r7,r12,r7
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r7
- str r12,[r10,r3,lsl #2]
- add r7,r6,r4,lsl #2
- sub r8,r7,r0
+ lsr ASTACK_1,ASTACK_1,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_1,SCRATCH_REG,ASTACK_1
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_1
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ add ASTACK_1,ASTACK_0,BSTACK_0,lsl #2
+ sub ASTACK_2,ASTACK_1,BSTACK_4
.thumb_func
__mark_r_array:
- lsr r8,r8,#7
+ lsr ASTACK_2,ASTACK_2,#7
- cmp r3,r8
+ cmp BSTACK_1,ASTACK_2
bhs __skip_mark_lazy_array_bits
- add r3,r3,#1
+ add BSTACK_1,BSTACK_1,#1
.thumb_func
__mark_lazy_array_bits:
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,#1
- str r12,[r10,r3,lsl #2]
- add r3,r3,#1
- cmp r3,r8
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,#1
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ add BSTACK_1,BSTACK_1,#1
+ cmp BSTACK_1,ASTACK_2
bls __mark_lazy_array_bits
.thumb_func
__skip_mark_lazy_array_bits:
- add r2,r2,#3
- add r2,r2,r4
+ add BSTACK_2,BSTACK_2,#3
+ add BSTACK_2,BSTACK_2,BSTACK_0
- cmp r4,#1
+ cmp BSTACK_0,#1
bls __mark_array_length_0_1
- ldr r8,[r7]
- ldr r3,[r6]
- str r3,[r7]
- str r8,[r6]
-
- ldr r8,[r7,#-4]
- sub r7,r7,#4
- lao r12,lazy_array_list,2
- ldo r3,r12,lazy_array_list,2
- add r8,r8,#2
- str r3,[r7]
- str r8,[r6,#-4]
- str r4,[r6,#-8]
- sub r6,r6,#8
- lao r12,lazy_array_list,3
- sto r6,r12,lazy_array_list,3
-
- ldr r6,[r7,#-4]
- str r9,[r7,#-4]
- add r9,r7,#-4
+ ldr ASTACK_2,[ASTACK_1]
+ ldr BSTACK_1,[ASTACK_0]
+ str BSTACK_1,[ASTACK_1]
+ str ASTACK_2,[ASTACK_0]
+
+ ldr ASTACK_2,[ASTACK_1,#-4]
+ sub ASTACK_1,ASTACK_1,#4
+ lao SCRATCH_REG,lazy_array_list,2
+ ldo BSTACK_1,SCRATCH_REG,lazy_array_list,2
+ add ASTACK_2,ASTACK_2,#2
+ str BSTACK_1,[ASTACK_1]
+ str ASTACK_2,[ASTACK_0,#-4]
+ str BSTACK_0,[ASTACK_0,#-8]
+ sub ASTACK_0,ASTACK_0,#8
+ lao SCRATCH_REG,lazy_array_list,3
+ sto ASTACK_0,SCRATCH_REG,lazy_array_list,3
+
+ ldr ASTACK_0,[ASTACK_1,#-4]
+ str ASTACK_PTR,[ASTACK_1,#-4]
+ add ASTACK_PTR,ASTACK_1,#-4
b __mark_node
__mark_array_length_0_1:
- add r6,r6,#-8
+ add ASTACK_0,ASTACK_0,#-8
blo __mark_next_node
- ldr r3,[r6,#12]
- ldr r8,[r6,#8]
- lao r12,lazy_array_list,4
- ldo r7,r12,lazy_array_list,4
- str r8,[r6,#12]
- str r7,[r6,#8]
- str r4,[r6]
- lao r12,lazy_array_list,5
- sto r6,r12,lazy_array_list,5
- str r3,[r6,#4]
- add r6,r6,#4
-
- ldr r8,[r6]
- str r9,[r6]
- add r9,r6,#2
- mov r6,r8
+ ldr BSTACK_1,[ASTACK_0,#12]
+ ldr ASTACK_2,[ASTACK_0,#8]
+ lao SCRATCH_REG,lazy_array_list,4
+ ldo ASTACK_1,SCRATCH_REG,lazy_array_list,4
+ str ASTACK_2,[ASTACK_0,#12]
+ str ASTACK_1,[ASTACK_0,#8]
+ str BSTACK_0,[ASTACK_0]
+ lao SCRATCH_REG,lazy_array_list,5
+ sto ASTACK_0,SCRATCH_REG,lazy_array_list,5
+ str BSTACK_1,[ASTACK_0,#4]
+ add ASTACK_0,ASTACK_0,#4
+
+ ldr ASTACK_2,[ASTACK_0]
+ str ASTACK_PTR,[ASTACK_0]
+ add ASTACK_PTR,ASTACK_0,#2
+ mov ASTACK_0,ASTACK_2
b __mark_node
.thumb_func
__mark_b_record_array:
- ldr r8,[r6,#4]
- sub r4,r4,#256
- mul r4,r8,r4
- add r4,r4,#3
+ ldr ASTACK_2,[ASTACK_0,#4]
+ sub BSTACK_0,BSTACK_0,#256
+ mul BSTACK_0,ASTACK_2,BSTACK_0
+ add BSTACK_0,BSTACK_0,#3
b __mark_basic_array
.thumb_func
__mark_strict_basic_array:
- ldr r4,[r6,#4]
- laol r12,INT+2,INT_o_2,10
- otoa r12,INT_o_2,10
- cmp r8,r12
+ ldr BSTACK_0,[ASTACK_0,#4]
+ laol SCRATCH_REG,INT+2,INT_o_2,10
+ otoa SCRATCH_REG,INT_o_2,10
+ cmp ASTACK_2,SCRATCH_REG
beq __mark__strict__int__array
- laol r12,BOOL+2,BOOL_o_2,6
- otoa r12,BOOL_o_2,6
- cmp r8,r12
+ laol SCRATCH_REG,BOOL+2,BOOL_o_2,6
+ otoa SCRATCH_REG,BOOL_o_2,6
+ cmp ASTACK_2,SCRATCH_REG
beq __mark__strict__bool__array
.thumb_func
__mark__strict__real__array:
- add r4,r4,r4
+ add BSTACK_0,BSTACK_0,BSTACK_0
.thumb_func
__mark__strict__int__array:
- add r4,r4,#3
+ add BSTACK_0,BSTACK_0,#3
b __mark_basic_array
.thumb_func
__mark__strict__bool__array:
- add r4,r4,#12+3
- lsr r4,r4,#2
+ add BSTACK_0,BSTACK_0,#12+3
+ lsr BSTACK_0,BSTACK_0,#2
b __mark_basic_array
.thumb_func
__mark_string_:
- ldr r4,[r6,#4]
- add r4,r4,#8+3
- lsr r4,r4,#2
+ ldr BSTACK_0,[ASTACK_0,#4]
+ add BSTACK_0,BSTACK_0,#8+3
+ lsr BSTACK_0,BSTACK_0,#2
.thumb_func
__mark_basic_array:
- lsr r7,r7,#2
- mov r12,#1
- lsl r7,r12,r7
- add r2,r2,r4
+ lsr ASTACK_1,ASTACK_1,#2
+ mov SCRATCH_REG,#1
+ lsl ASTACK_1,SCRATCH_REG,ASTACK_1
+ add BSTACK_2,BSTACK_2,BSTACK_0
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r7
- str r12,[r10,r3,lsl #2]
- add r12,r6,#-4
- add r4,r12,r4,lsl #2
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_1
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ add SCRATCH_REG,ASTACK_0,#-4
+ add BSTACK_0,SCRATCH_REG,BSTACK_0,lsl #2
- sub r4,r4,r0
- lsr r4,r4,#7
+ sub BSTACK_0,BSTACK_0,BSTACK_4
+ lsr BSTACK_0,BSTACK_0,#7
- cmp r3,r4
+ cmp BSTACK_1,BSTACK_0
bhs __mark_next_node
- add r3,r3,#1
- mov r8,#1
+ add BSTACK_1,BSTACK_1,#1
+ mov ASTACK_2,#1
- cmp r3,r4
+ cmp BSTACK_1,BSTACK_0
bhs __last__string__bits
.thumb_func
__mark_string_lp:
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r8
- str r12,[r10,r3,lsl #2]
- add r3,r3,#1
- cmp r3,r4
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_2
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ add BSTACK_1,BSTACK_1,#1
+ cmp BSTACK_1,BSTACK_0
blo __mark_string_lp
.thumb_func
__last__string__bits:
- ldr r12,[r10,r3,lsl #2]
- orr r12,r12,r8
- str r12,[r10,r3,lsl #2]
+ ldr SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
+ orr SCRATCH_REG,SCRATCH_REG,ASTACK_2
+ str SCRATCH_REG,[HEAP_PTR,BSTACK_1,lsl #2]
b __mark_next_node
.ifdef PIC
diff --git a/thumb2regs.s b/thumb2regs.s
new file mode 100644
index 0000000..c7494b2
--- /dev/null
+++ b/thumb2regs.s
@@ -0,0 +1,27 @@
+@ B stack registers: r4 r3 r2 r1 r0
+@ A stack registers: r6 r7 r8 r11 (fp)
+@ n free heap words: r5
+@ A stack pointer: r9 (sb)
+@ heap pointer: r10 (sl)
+@ scratch register: r12 (ip)
+@ B stack pointer: r13 (sp)
+@ link/scratch register: r14 (lr)
+
+BSTACK_0 .req r4
+BSTACK_1 .req r3
+BSTACK_2 .req r2
+BSTACK_3 .req r1
+BSTACK_4 .req r0
+BSTACK_PTR .req r13
+
+ASTACK_0 .req r6
+ASTACK_1 .req r7
+ASTACK_2 .req r8
+ASTACK_3 .req r11
+ASTACK_PTR .req r9
+
+HEAP_FREE .req r5
+HEAP_PTR .req r10
+
+SCRATCH_REG .req r12
+LINK_REG .req r14
diff --git a/thumb2startup.s b/thumb2startup.s
index 7ef4a08..f33e04e 100644
--- a/thumb2startup.s
+++ b/thumb2startup.s
@@ -3,14 +3,7 @@
@ Author: John van Groningen, adapted for Thumb-2 by Camil Staps
@ Machine: ARM
-@ B stack registers: r4 r3 r2 r1 r0
-@ A stack registers: r6 r7 r8 r11 (fp)
-@ n free heap words: r5
-@ A stack pointer: r9 (sb)
-@ heap pointer: r10 (sl)
-@ scratch register: r12 (ip)
-@ B stack pointer: r13 (sp)
-@ link/scratch register: r14 (lr)
+ .include "thumb2regs.s"
.fpu vfp3
.thumb
@@ -491,18 +484,18 @@ start_address:
abc_main:
str lr,[sp,#-4]!
- stmdb sp!,{r4-r11}
+ stmdb sp!,{BSTACK_0-ASTACK_3}
.ifdef DLL
- ldr r4,[sp,#28]
- lao r12,start_address,0
- sto r4,r12,start_address,0
+ ldr BSTACK_0,[sp,#28]
+ lao SCRATCH_REG,start_address,0
+ sto BSTACK_0,SCRATCH_REG,start_address,0
.endif
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl init_clean
- tst r4,r4
+ tst BSTACK_0,BSTACK_0
bne init_error
.align
@@ -510,8 +503,8 @@ abc_main:
str lr,[sp,#-4]!
bl init_timer
- lao r12,halt_sp,0
- sto sp,r12,halt_sp,0
+ lao SCRATCH_REG,halt_sp,0
+ sto sp,SCRATCH_REG,halt_sp,0
.ifdef PROFILE
.align
@@ -521,12 +514,12 @@ abc_main:
.endif
.ifdef DLL
- lao r12,start_address,1
- ldo r4,r12,start_address,1
+ lao SCRATCH_REG,start_address,1
+ ldo BSTACK_0,SCRATCH_REG,start_address,1
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r4
+ blx BSTACK_0
.else
.align
add lr,pc,#9
@@ -543,22 +536,22 @@ exit:
.thumb_func
init_error:
- ldmia sp!,{r4-r11,pc}
+ ldmia sp!,{BSTACK_0-ASTACK_3,pc}
.globl clean_init
.thumb_func
clean_init:
- stmdb sp!,{r4-r11,lr}
+ stmdb sp!,{BSTACK_0-ASTACK_3,lr}
- lao r12,dll_initisialised,0
- mov r0,#1
- sto r0,r12,dll_initisialised,0
+ lao SCRATCH_REG,dll_initisialised,0
+ mov BSTACK_4,#1
+ sto BSTACK_4,SCRATCH_REG,dll_initisialised,0
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl init_clean
- tst r4,r4
+ tst BSTACK_0,BSTACK_0
bne init_dll_error
.align
@@ -566,8 +559,8 @@ clean_init:
str lr,[sp,#-4]!
bl init_timer
- lao r12,halt_sp,1
- sto sp,r12,halt_sp,1
+ lao SCRATCH_REG,halt_sp,1
+ sto sp,SCRATCH_REG,halt_sp,1
.ifdef PROFILE
.align
@@ -576,32 +569,32 @@ clean_init:
bl init_profiler
.endif
- lao r12,saved_heap_p,0
- otoa r12,saved_heap_p,0
- str r10,[r12]
- str r5,[r12,#4]
- lao r12,saved_a_stack_p,0
- sto r9,r12,saved_a_stack_p,0
+ lao SCRATCH_REG,saved_heap_p,0
+ otoa SCRATCH_REG,saved_heap_p,0
+ str HEAP_PTR,[SCRATCH_REG]
+ str HEAP_FREE,[SCRATCH_REG,#4]
+ lao SCRATCH_REG,saved_a_stack_p,0
+ sto ASTACK_PTR,SCRATCH_REG,saved_a_stack_p,0
- mov r4,#1
+ mov BSTACK_0,#1
b exit_dll_init
.thumb_func
init_dll_error:
- mov r4,#0
+ mov BSTACK_0,#0
b exit_dll_init
.globl clean_fini
.thumb_func
clean_fini:
- stmdb sp!,{r4-r11,lr}
+ stmdb sp!,{BSTACK_0-ASTACK_3,lr}
- lao r12,saved_heap_p,1
- otoa r12,saved_heap_p,1
- ldr r10,[r12]
- ldr r5,[r12,#4]
- lao r12,saved_a_stack_p,1
- ldo r9,r12,saved_a_stack_p,1
+ lao SCRATCH_REG,saved_heap_p,1
+ otoa SCRATCH_REG,saved_heap_p,1
+ ldr HEAP_PTR,[SCRATCH_REG]
+ ldr HEAP_FREE,[SCRATCH_REG,#4]
+ lao SCRATCH_REG,saved_a_stack_p,1
+ ldo ASTACK_PTR,SCRATCH_REG,saved_a_stack_p,1
.align
add lr,pc,#9
@@ -610,212 +603,212 @@ clean_fini:
.thumb_func
exit_dll_init:
- ldmia sp!,{r4-r11,pc}
+ ldmia sp!,{BSTACK_0-ASTACK_3,pc}
.thumb_func
init_clean:
- add r4,sp,#128
- lao r12,ab_stack_size,0
- ldo r12,r12,ab_stack_size,0
- sub r4,r4,r12
- lao r12,end_b_stack,0
- sto r4,r12,end_b_stack,0
-
- lao r12,flags,0
- ldo r4,r12,flags,0
- and r4,r4,#1
- lao r12,basic_only,0
- sto r4,r12,basic_only,0
-
- lao r12,heap_size,0
- ldo r4,r12,heap_size,0
+ add BSTACK_0,sp,#128
+ lao SCRATCH_REG,ab_stack_size,0
+ ldo SCRATCH_REG,SCRATCH_REG,ab_stack_size,0
+ sub BSTACK_0,BSTACK_0,SCRATCH_REG
+ lao SCRATCH_REG,end_b_stack,0
+ sto BSTACK_0,SCRATCH_REG,end_b_stack,0
+
+ lao SCRATCH_REG,flags,0
+ ldo BSTACK_0,SCRATCH_REG,flags,0
+ and BSTACK_0,BSTACK_0,#1
+ lao SCRATCH_REG,basic_only,0
+ sto BSTACK_0,SCRATCH_REG,basic_only,0
+
+ lao SCRATCH_REG,heap_size,0
+ ldo BSTACK_0,SCRATCH_REG,heap_size,0
.if PREFETCH2
- subs r4,r4,#63
+ subs BSTACK_0,BSTACK_0,#63
.else
- subs r4,r4,#3
+ subs BSTACK_0,BSTACK_0,#3
.endif
@ divide by 33
- ldr r12,=1041204193
- umull r11,r4,r12,r4
- lsr r4,r4,#3
- lao r12,heap_size_33,0
- sto r4,r12,heap_size_33,0
-
- lao r12,heap_size,1
- ldo r4,r12,heap_size,1
- subs r4,r4,#3
+ ldr SCRATCH_REG,=1041204193
+ umull ASTACK_3,BSTACK_0,SCRATCH_REG,BSTACK_0
+ lsr BSTACK_0,BSTACK_0,#3
+ lao SCRATCH_REG,heap_size_33,0
+ sto BSTACK_0,SCRATCH_REG,heap_size_33,0
+
+ lao SCRATCH_REG,heap_size,1
+ ldo BSTACK_0,SCRATCH_REG,heap_size,1
+ subs BSTACK_0,BSTACK_0,#3
@ divide by 129
- ldr r12,=266354561
- umull r11,r4,r12,r4
- lsr r4,r4,#3
- lao r12,heap_size_129,0
- sto r4,r12,heap_size_129,0
- add r4,r4,#3
- and r4,r4,#-4
- lao r12,heap_copied_vector_size,0
- sto r4,r12,heap_copied_vector_size,0
- lao r12,heap_end_after_copy_gc,0
- mov r11,#0
- sto r11,r12,heap_end_after_copy_gc,0
-
- lao r12,heap_size,2
- ldo r4,r12,heap_size,2
- add r4,r4,#7
- and r4,r4,#-8
+ ldr SCRATCH_REG,=266354561
+ umull ASTACK_3,BSTACK_0,SCRATCH_REG,BSTACK_0
+ lsr BSTACK_0,BSTACK_0,#3
+ lao SCRATCH_REG,heap_size_129,0
+ sto BSTACK_0,SCRATCH_REG,heap_size_129,0
+ add BSTACK_0,BSTACK_0,#3
+ and BSTACK_0,BSTACK_0,#-4
+ lao SCRATCH_REG,heap_copied_vector_size,0
+ sto BSTACK_0,SCRATCH_REG,heap_copied_vector_size,0
+ lao SCRATCH_REG,heap_end_after_copy_gc,0
+ mov ASTACK_3,#0
+ sto ASTACK_3,SCRATCH_REG,heap_end_after_copy_gc,0
+
+ lao SCRATCH_REG,heap_size,2
+ ldo BSTACK_0,SCRATCH_REG,heap_size,2
+ add BSTACK_0,BSTACK_0,#7
+ and BSTACK_0,BSTACK_0,#-8
.ifdef PIC
- lao r12,heap_size,3
+ lao SCRATCH_REG,heap_size,3
.endif
- sto r4,r12,heap_size,3
- add r4,r4,#7
+ sto BSTACK_0,SCRATCH_REG,heap_size,3
+ add BSTACK_0,BSTACK_0,#7
- mov r0,r4
+ mov BSTACK_4,BSTACK_0
bl malloc
- movs r4,r0
+ movs BSTACK_0,BSTACK_4
beq no_memory_2
- lao r12,heap_mbp,0
- sto r4,r12,heap_mbp,0
- add r10,r4,#3
- and r10,r10,#-4
- lao r12,heap_p,0
- sto r10,r12,heap_p,0
+ lao SCRATCH_REG,heap_mbp,0
+ sto BSTACK_0,SCRATCH_REG,heap_mbp,0
+ add HEAP_PTR,BSTACK_0,#3
+ and HEAP_PTR,HEAP_PTR,#-4
+ lao SCRATCH_REG,heap_p,0
+ sto HEAP_PTR,SCRATCH_REG,heap_p,0
- lao r8,ab_stack_size,1
- ldo r8,r8,ab_stack_size,1
- add r8,r8,#3
+ lao ASTACK_2,ab_stack_size,1
+ ldo ASTACK_2,ASTACK_2,ab_stack_size,1
+ add ASTACK_2,ASTACK_2,#3
- mov r0,r8
+ mov BSTACK_4,ASTACK_2
.if STACK_OVERFLOW_EXCEPTION_HANDLER
bl allocate_memory_with_guard_page_at_end
.else
bl malloc
.endif
- movs r4,r0
+ movs BSTACK_0,BSTACK_4
beq no_memory_3
- lao r12,stack_mbp,0
- sto r4,r12,stack_mbp,0
+ lao SCRATCH_REG,stack_mbp,0
+ sto BSTACK_0,SCRATCH_REG,stack_mbp,0
.if STACK_OVERFLOW_EXCEPTION_HANDLER
- lao r12,ab_stack_size,2
- ldo r12,r12,ab_stack_size,2
- add r4,r4,r12
- lao r12,a_stack_guard_page,0
- add r4,r4,#4096
- add r4,r4,#(3+4095)-4096
- bic r4,r4,#255
- bic r4,r4,#4095-255
- sto r4,r12,a_stack_guard_page,0
- lao r12,ab_stack_size,3
- ldo r12,r12,ab_stack_size,3
- sub r4,r4,r12
-.endif
- add r4,r4,#3
- and r4,r4,#-4
-
- mov r9,r4
- lao r12,stack_p,0
- sto r4,r12,stack_p,0
-
- lao r12,ab_stack_size,4
- ldo r12,r12,ab_stack_size,4
- add r4,r4,r12
- subs r4,r4,#64
- lao r12,end_a_stack,0
- sto r4,r12,end_a_stack,0
+ lao SCRATCH_REG,ab_stack_size,2
+ ldo SCRATCH_REG,SCRATCH_REG,ab_stack_size,2
+ add BSTACK_0,BSTACK_0,SCRATCH_REG
+ lao SCRATCH_REG,a_stack_guard_page,0
+ add BSTACK_0,BSTACK_0,#4096
+ add BSTACK_0,BSTACK_0,#(3+4095)-4096
+ bic BSTACK_0,BSTACK_0,#255
+ bic BSTACK_0,BSTACK_0,#4095-255
+ sto BSTACK_0,SCRATCH_REG,a_stack_guard_page,0
+ lao SCRATCH_REG,ab_stack_size,3
+ ldo SCRATCH_REG,SCRATCH_REG,ab_stack_size,3
+ sub BSTACK_0,BSTACK_0,SCRATCH_REG
+.endif
+ add BSTACK_0,BSTACK_0,#3
+ and BSTACK_0,BSTACK_0,#-4
+
+ mov ASTACK_PTR,BSTACK_0
+ lao SCRATCH_REG,stack_p,0
+ sto BSTACK_0,SCRATCH_REG,stack_p,0
+
+ lao SCRATCH_REG,ab_stack_size,4
+ ldo SCRATCH_REG,SCRATCH_REG,ab_stack_size,4
+ add BSTACK_0,BSTACK_0,SCRATCH_REG
+ subs BSTACK_0,BSTACK_0,#64
+ lao SCRATCH_REG,end_a_stack,0
+ sto BSTACK_0,SCRATCH_REG,end_a_stack,0
.if SHARE_CHAR_INT
- lao r6,small_integers,0
- otoa r6,small_integers,0
- mov r4,#0
- laol r3,INT+2,INT_o_2,0
- otoa r3,INT_o_2,0
+ lao ASTACK_0,small_integers,0
+ otoa ASTACK_0,small_integers,0
+ mov BSTACK_0,#0
+ laol BSTACK_1,INT+2,INT_o_2,0
+ otoa BSTACK_1,INT_o_2,0
.thumb_func
make_small_integers_lp:
- str r3,[r6]
- str r4,[r6,#4]
- add r4,r4,#1
- add r6,r6,#8
- cmp r4,#33
+ str BSTACK_1,[ASTACK_0]
+ str BSTACK_0,[ASTACK_0,#4]
+ add BSTACK_0,BSTACK_0,#1
+ add ASTACK_0,ASTACK_0,#8
+ cmp BSTACK_0,#33
bne make_small_integers_lp
- lao r6,static_characters,0
- otoa r6,static_characters,0
- mov r4,#0
- laol r3,CHAR+2,CHAR_O_2,0
- otoa r3,CHAR_O_2,0
+ lao ASTACK_0,static_characters,0
+ otoa ASTACK_0,static_characters,0
+ mov BSTACK_0,#0
+ laol BSTACK_1,CHAR+2,CHAR_O_2,0
+ otoa BSTACK_1,CHAR_O_2,0
.thumb_func
make_static_characters_lp:
- str r3,[r6]
- str r4,[r6,#4]
- add r4,r4,#1
- add r6,r6,#8
- cmp r4,#256
+ str BSTACK_1,[ASTACK_0]
+ str BSTACK_0,[ASTACK_0,#4]
+ add BSTACK_0,BSTACK_0,#1
+ add ASTACK_0,ASTACK_0,#8
+ cmp BSTACK_0,#256
bne make_static_characters_lp
.endif
- laol r6,caf_list+4,caf_list_o_4,0
- otoa r6,caf_list_o_4,0
- lao r12,caf_listp,0
- sto r6,r12,caf_listp,0
+ laol ASTACK_0,caf_list+4,caf_list_o_4,0
+ otoa ASTACK_0,caf_list_o_4,0
+ lao SCRATCH_REG,caf_listp,0
+ sto ASTACK_0,SCRATCH_REG,caf_listp,0
.if FINALIZERS
- lao r12,finalizer_list,0
- laol r11,__Nil-4,__Nil_o_m4,0
- otoa r11,__Nil_o_m4,0
- sto r11,r12,finalizer_list,0
- lao r12,free_finalizer_list,0
- sto r11,r12,free_finalizer_list,0
-.endif
-
- lao r12,heap_p1,0
- sto r10,r12,heap_p1,0
-
- lao r12,heap_size_129,1
- ldo r8,r12,heap_size_129,1
- lsl r8,r8,#4
- add r4,r10,r8,lsl #2
- lao r12,heap_copied_vector,0
- sto r4,r12,heap_copied_vector,0
- lao r12,heap_copied_vector_size,1
- ldo r12,r12,heap_copied_vector_size,1
- add r4,r12
- lao r12,heap_p2,0
- sto r4,r12,heap_p2,0
-
- lao r12,garbage_collect_flag,0
- mov r11,#0
- stob r11,r12,garbage_collect_flag,0
+ lao SCRATCH_REG,finalizer_list,0
+ laol ASTACK_3,__Nil-4,__Nil_o_m4,0
+ otoa ASTACK_3,__Nil_o_m4,0
+ sto ASTACK_3,SCRATCH_REG,finalizer_list,0
+ lao SCRATCH_REG,free_finalizer_list,0
+ sto ASTACK_3,SCRATCH_REG,free_finalizer_list,0
+.endif
+
+ lao SCRATCH_REG,heap_p1,0
+ sto HEAP_PTR,SCRATCH_REG,heap_p1,0
+
+ lao SCRATCH_REG,heap_size_129,1
+ ldo ASTACK_2,SCRATCH_REG,heap_size_129,1
+ lsl ASTACK_2,ASTACK_2,#4
+ add BSTACK_0,HEAP_PTR,ASTACK_2,lsl #2
+ lao SCRATCH_REG,heap_copied_vector,0
+ sto BSTACK_0,SCRATCH_REG,heap_copied_vector,0
+ lao SCRATCH_REG,heap_copied_vector_size,1
+ ldo SCRATCH_REG,SCRATCH_REG,heap_copied_vector_size,1
+ add BSTACK_0,SCRATCH_REG
+ lao SCRATCH_REG,heap_p2,0
+ sto BSTACK_0,SCRATCH_REG,heap_p2,0
+
+ lao SCRATCH_REG,garbage_collect_flag,0
+ mov ASTACK_3,#0
+ stob ASTACK_3,SCRATCH_REG,garbage_collect_flag,0
.if MARK_AND_COPY_GC
- lao r12,flags,1
- ldo r12,r12,flags,1
- tst r12,#64
+ lao SCRATCH_REG,flags,1
+ ldo SCRATCH_REG,SCRATCH_REG,flags,1
+ tst SCRATCH_REG,#64
beq no_mark1
.endif
.if MARK_GC || COMPACT_GC_ONLY
- lao r12,heap_size_33,1
- ldo r4,r12,heap_size_33,1
- lao r12,heap_vector,0
- sto r10,r12,heap_vector,0
- add r10,r10,r4
+ lao SCRATCH_REG,heap_size_33,1
+ ldo BSTACK_0,SCRATCH_REG,heap_size_33,1
+ lao SCRATCH_REG,heap_vector,0
+ sto HEAP_PTR,SCRATCH_REG,heap_vector,0
+ add HEAP_PTR,HEAP_PTR,BSTACK_0
.if PREFETCH2
- add r10,r10,#63
- and r10,r10,#-64
+ add HEAP_PTR,HEAP_PTR,#63
+ and HEAP_PTR,HEAP_PTR,#-64
.else
- add r10,r10,#3
- and r10,r10,#-4
+ add HEAP_PTR,HEAP_PTR,#3
+ and HEAP_PTR,HEAP_PTR,#-4
.endif
- lao r12,heap_p3,0
- sto r10,r12,heap_p3,0
- lsl r8,r4,#3
- lao r12,garbage_collect_flag,1
- mov r11,#-1
- stob r11,r12,garbage_collect_flag,1
+ lao SCRATCH_REG,heap_p3,0
+ sto HEAP_PTR,SCRATCH_REG,heap_p3,0
+ lsl ASTACK_2,BSTACK_0,#3
+ lao SCRATCH_REG,garbage_collect_flag,1
+ mov ASTACK_3,#-1
+ stob ASTACK_3,SCRATCH_REG,garbage_collect_flag,1
.endif
.if MARK_AND_COPY_GC
@@ -823,82 +816,82 @@ no_mark1:
.endif
.if ADJUST_HEAP_SIZE
- lao r4,initial_heap_size,0
- ldo r4,r4,initial_heap_size,0
+ lao BSTACK_0,initial_heap_size,0
+ ldo BSTACK_0,BSTACK_0,initial_heap_size,0
.if MARK_AND_COPY_GC
- mov r3,#MINIMUM_HEAP_SIZE_2
- lao r12,flags,2
- ldo r12,r12,flags,2
- tst r12,#64
+ mov BSTACK_1,#MINIMUM_HEAP_SIZE_2
+ lao SCRATCH_REG,flags,2
+ ldo SCRATCH_REG,SCRATCH_REG,flags,2
+ tst SCRATCH_REG,#64
bne no_mark9
- add r3,r3,r3
+ add BSTACK_1,BSTACK_1,BSTACK_1
no_mark9:
.else
.if MARK_GC || COMPACT_GC_ONLY
- mov r3,#MINIMUM_HEAP_SIZE
+ mov BSTACK_1,#MINIMUM_HEAP_SIZE
.else
- mov r3,#MINIMUM_HEAP_SIZE_2
+ mov BSTACK_1,#MINIMUM_HEAP_SIZE_2
.endif
.endif
- cmp r4,r3
+ cmp BSTACK_0,BSTACK_1
ble too_large_or_too_small
- lsr r4,r4,#2
- cmp r4,r8
+ lsr BSTACK_0,BSTACK_0,#2
+ cmp BSTACK_0,ASTACK_2
bge too_large_or_too_small
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.thumb_func
too_large_or_too_small:
.endif
- add r4,r10,r8,lsl #2
- lao r12,heap_end_after_gc,0
- sto r4,r12,heap_end_after_gc,0
+ add BSTACK_0,HEAP_PTR,ASTACK_2,lsl #2
+ lao SCRATCH_REG,heap_end_after_gc,0
+ sto BSTACK_0,SCRATCH_REG,heap_end_after_gc,0
- mov r5,r8
+ mov HEAP_FREE,ASTACK_2
.if MARK_AND_COPY_GC
- lao r12,flags,3
- ldo r12,r12,flags,3
- tst r12,#64
+ lao SCRATCH_REG,flags,3
+ ldo SCRATCH_REG,SCRATCH_REG,flags,3
+ tst SCRATCH_REG,#64
beq no_mark2
.endif
.if MARK_GC && ADJUST_HEAP_SIZE
- lao r12,bit_vector_size,0
- sto r8,r12,bit_vector_size,0
+ lao SCRATCH_REG,bit_vector_size,0
+ sto ASTACK_2,SCRATCH_REG,bit_vector_size,0
.endif
.if MARK_AND_COPY_GC
no_mark2:
.endif
- mov r4,#0
+ mov BSTACK_0,#0
ldr pc,[sp],#4
no_memory_2:
- lao r0,out_of_memory_string_1,0
- otoa r0,out_of_memory_string_1,0
+ lao BSTACK_4,out_of_memory_string_1,0
+ otoa BSTACK_4,out_of_memory_string_1,0
bl ew_print_string
.ifdef _WINDOWS_
? movl $1,@execution_aborted
.endif
- mov r0,#1
+ mov BSTACK_4,#1
ldr pc,[sp],#4
no_memory_3:
- lao r0,out_of_memory_string_1,1
- otoa r0,out_of_memory_string_1,1
+ lao BSTACK_4,out_of_memory_string_1,1
+ otoa BSTACK_4,out_of_memory_string_1,1
bl ew_print_string
.ifdef _WINDOWS_
? movl $1,@execution_aborted
.endif
- lao r0,heap_mbp,1
- ldo r0,r0,heap_mbp,1
+ lao BSTACK_4,heap_mbp,1
+ ldo BSTACK_4,BSTACK_4,heap_mbp,1
bl free
- mov r0,#1
+ mov BSTACK_4,#1
ldr pc,[sp],#4
.thumb_func
@@ -908,64 +901,64 @@ exit_clean:
str lr,[sp,#-4]!
bl add_execute_time
- lao r4,flags,4
- ldo r4,r4,flags,4
- tst r4,#8
+ lao BSTACK_0,flags,4
+ ldo BSTACK_0,BSTACK_0,flags,4
+ tst BSTACK_0,#8
beq no_print_execution_time
- lao r0,time_string_1,0
- otoa r0,time_string_1,0
+ lao BSTACK_4,time_string_1,0
+ otoa BSTACK_4,time_string_1,0
bl ew_print_string
- lao r12,execute_time,0
- ldo r4,r12,execute_time,0
+ lao SCRATCH_REG,execute_time,0
+ ldo BSTACK_0,SCRATCH_REG,execute_time,0
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl print_time
- lao r0,time_string_2,0
- otoa r0,time_string_2,0
+ lao BSTACK_4,time_string_2,0
+ otoa BSTACK_4,time_string_2,0
bl ew_print_string
- lao r12,garbage_collect_time,0
- ldo r4,r12,garbage_collect_time,0
+ lao SCRATCH_REG,garbage_collect_time,0
+ ldo BSTACK_0,SCRATCH_REG,garbage_collect_time,0
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl print_time
- lao r0,time_string_4,0
- otoa r0,time_string_4,0
+ lao BSTACK_4,time_string_4,0
+ otoa BSTACK_4,time_string_4,0
bl ew_print_string
- lao r12,execute_time,1
- ldo r4,r12,execute_time,1
- lao r12,garbage_collect_time,1
- ldo r12,r12,garbage_collect_time,1
- add r4,r12
- lao r12,IO_time,0
- ldo r12,r12,IO_time,0
- add r4,r12
+ lao SCRATCH_REG,execute_time,1
+ ldo BSTACK_0,SCRATCH_REG,execute_time,1
+ lao SCRATCH_REG,garbage_collect_time,1
+ ldo SCRATCH_REG,SCRATCH_REG,garbage_collect_time,1
+ add BSTACK_0,SCRATCH_REG
+ lao SCRATCH_REG,IO_time,0
+ ldo SCRATCH_REG,SCRATCH_REG,IO_time,0
+ add BSTACK_0,SCRATCH_REG
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl print_time
- mov r0,#10
+ mov BSTACK_4,#10
bl ew_print_char
.thumb_func
no_print_execution_time:
- lao r0,stack_mbp,1
- ldo r0,r0,stack_mbp,1
+ lao BSTACK_4,stack_mbp,1
+ ldo BSTACK_4,BSTACK_4,stack_mbp,1
bl free
- lao r0,heap_mbp,2
- ldo r0,r0,heap_mbp,2
+ lao BSTACK_4,heap_mbp,2
+ ldo BSTACK_4,BSTACK_4,heap_mbp,2
bl free
.ifdef PROFILE
@@ -979,9 +972,9 @@ no_print_execution_time:
.thumb_func
__driver:
- lao r8,flags,5
- ldo r8,r8,flags,5
- tst r8,#16
+ lao ASTACK_2,flags,5
+ ldo ASTACK_2,ASTACK_2,flags,5
+ tst ASTACK_2,#16
beq __print__graph
b __eval__to__nf
@@ -1083,73 +1076,73 @@ __driver:
.thumb_func
print_time:
@ divide by 1000
- ldr r12,=274877907
- umull r11,r6,r12,r4
- lsr r6,r6,#6
+ ldr SCRATCH_REG,=274877907
+ umull ASTACK_3,ASTACK_0,SCRATCH_REG,BSTACK_0
+ lsr ASTACK_0,ASTACK_0,#6
- mov r11,#-1025
- add r11,r11,#-1000-(-1025)
- mla r4,r6,r11,r4
+ mov ASTACK_3,#-1025
+ add ASTACK_3,ASTACK_3,#-1000-(-1025)
+ mla BSTACK_0,ASTACK_0,ASTACK_3,BSTACK_0
@ divide by 10
- ldr r12,=-858993459
- umull r11,r4,r12,r4
- lsr r4,r4,#3
+ ldr SCRATCH_REG,=-858993459
+ umull ASTACK_3,BSTACK_0,SCRATCH_REG,BSTACK_0
+ lsr BSTACK_0,BSTACK_0,#3
.if USE_CLIB
- mov r3,r4
- mov r2,r6
- lao r1,sprintf_time_string,0
- lao r0,sprintf_time_buffer,0
- otoa r1,sprintf_time_string,0
- otoa r0,sprintf_time_buffer,0
+ mov BSTACK_1,BSTACK_0
+ mov BSTACK_2,ASTACK_0
+ lao BSTACK_3,sprintf_time_string,0
+ lao BSTACK_4,sprintf_time_buffer,0
+ otoa BSTACK_3,sprintf_time_string,0
+ otoa BSTACK_4,sprintf_time_buffer,0
bl sprintf
- lao r0,sprintf_time_buffer,1
- otoa r0,sprintf_time_buffer,1
+ lao BSTACK_4,sprintf_time_buffer,1
+ otoa BSTACK_4,sprintf_time_buffer,1
bl ew_print_string
.else
- mov r0,r6
+ mov BSTACK_4,ASTACK_0
bl ew_print_int
- lao r6,sprintf_time_buffer,0
- otoa r6,sprintf_time_buffer,0
+ lao ASTACK_0,sprintf_time_buffer,0
+ otoa ASTACK_0,sprintf_time_buffer,0
- eor r7,r7,r7
- mov r3,#10
+ eor ASTACK_1,ASTACK_1,ASTACK_1
+ mov BSTACK_1,#10
- mov r12,#46
- strb r12,[r6]
+ mov SCRATCH_REG,#46
+ strb SCRATCH_REG,[ASTACK_0]
@ divide by 10
- ldr r12,=-858993459
- umull r11,r0,r12,r4
- lsr r0,r0,#3
+ ldr SCRATCH_REG,=-858993459
+ umull ASTACK_3,BSTACK_4,SCRATCH_REG,BSTACK_0
+ lsr BSTACK_4,BSTACK_4,#3
- sub r4,r4,r0,lsl #1
- sub r4,r4,r0,lsl #3
+ sub BSTACK_0,BSTACK_0,BSTACK_4,lsl #1
+ sub BSTACK_0,BSTACK_0,BSTACK_4,lsl #3
- add r4,r4,#48
- add r7,r7,#48
- strb r0,[r6,#1]
- strb r4,[r6,#2]
+ add BSTACK_0,BSTACK_0,#48
+ add ASTACK_1,ASTACK_1,#48
+ strb BSTACK_4,[ASTACK_0,#1]
+ strb BSTACK_0,[ASTACK_0,#2]
- mov r1,#3
- mov r0,r6
+ mov BSTACK_3,#3
+ mov BSTACK_4,ASTACK_0
bl ew_print_text
.endif
ldr pc,[sp],#4
.thumb_func
print_sc:
- lao r12,basic_only,1
- ldo r8,r12,basic_only,1
- cmp r8,#0
+ lao SCRATCH_REG,basic_only,1
+ ldo ASTACK_2,SCRATCH_REG,basic_only,1
+ cmp ASTACK_2,#0
bne end_print
.thumb_func
print:
- mov r0,r4
+ mov BSTACK_4,BSTACK_0
bl w_print_string
.thumb_func
@@ -1164,93 +1157,93 @@ dump:
bl print
b halt
-printD: tst r4,#2
+printD: tst BSTACK_0,#2
bne printD_
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
b print_string_a2
DtoAC_record:
- ldr r8,[r4,#-6]
+ ldr ASTACK_2,[BSTACK_0,#-6]
@.ifdef PIC
.if 0
- add r12,r4,#-6
- add r8,r8,r12
+ add SCRATCH_REG,BSTACK_0,#-6
+ add ASTACK_2,ASTACK_2,SCRATCH_REG
.endif
b DtoAC_string_a2
-DtoAC: tst r4,#2
+DtoAC: tst BSTACK_0,#2
bne DtoAC_
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
b DtoAC_string_a2
DtoAC_:
- ldrh r12,[r4,#-2]
- cmp r12,#256
+ ldrh SCRATCH_REG,[BSTACK_0,#-2]
+ cmp SCRATCH_REG,#256
bhs DtoAC_record
- ldrh r3,[r4]
- add r12,r4,#10
- add r8,r12,r3
+ ldrh BSTACK_1,[BSTACK_0]
+ add SCRATCH_REG,BSTACK_0,#10
+ add ASTACK_2,SCRATCH_REG,BSTACK_1
DtoAC_string_a2:
- ldr r4,[r8]
- add r6,r8,#4
+ ldr BSTACK_0,[ASTACK_2]
+ add ASTACK_0,ASTACK_2,#4
b build_string
.thumb_func
print_symbol:
- mov r3,#0
+ mov BSTACK_1,#0
b print_symbol_2
.thumb_func
print_symbol_sc:
- lao r12,basic_only,2
- ldo r3,r12,basic_only,2
+ lao SCRATCH_REG,basic_only,2
+ ldo BSTACK_1,SCRATCH_REG,basic_only,2
print_symbol_2:
- ldr r4,[r6]
+ ldr BSTACK_0,[ASTACK_0]
- laol r12,INT+2,INT_o_2,1
- otoa r12,INT_o_2,1
- cmp r4,r12
+ laol SCRATCH_REG,INT+2,INT_o_2,1
+ otoa SCRATCH_REG,INT_o_2,1
+ cmp BSTACK_0,SCRATCH_REG
beq print_int_node
- laol r12,CHAR+2,CHAR_o_2,0
- otoa r12,CHAR_o_2,0
- cmp r4,r12
+ laol SCRATCH_REG,CHAR+2,CHAR_o_2,0
+ otoa SCRATCH_REG,CHAR_o_2,0
+ cmp BSTACK_0,SCRATCH_REG
beq print_char_denotation
- laol r12,BOOL+2,BOOL_o_2,0
- otoa r12,BOOL_o_2,0
- cmp r4,r12
+ laol SCRATCH_REG,BOOL+2,BOOL_o_2,0
+ otoa SCRATCH_REG,BOOL_o_2,0
+ cmp BSTACK_0,SCRATCH_REG
beq print_bool
- laol r12,REAL+2,REAL_o_2,0
- otoa r12,REAL_o_2,0
- cmp r4,r12
+ laol SCRATCH_REG,REAL+2,REAL_o_2,0
+ otoa SCRATCH_REG,REAL_o_2,0
+ cmp BSTACK_0,SCRATCH_REG
beq print_real_node
- cmp r3,#0
+ cmp BSTACK_1,#0
bne end_print_symbol
printD_:
- ldrh r12,[r4,#-2]
- cmp r12,#256
+ ldrh SCRATCH_REG,[BSTACK_0,#-2]
+ cmp SCRATCH_REG,#256
bhs print_record
- ldrh r3,[r4]
- add r12,r4,#10
- add r8,r12,r3
+ ldrh BSTACK_1,[BSTACK_0]
+ add SCRATCH_REG,BSTACK_0,#10
+ add ASTACK_2,SCRATCH_REG,BSTACK_1
b print_string_a2
.thumb_func
print_record:
- ldr r8,[r4,#-6]
+ ldr ASTACK_2,[BSTACK_0,#-6]
@.ifdef PIC
.if 0
- add r12,r4,#-6
- add r8,r8,r12
+ add SCRATCH_REG,BSTACK_0,#-6
+ add ASTACK_2,ASTACK_2,SCRATCH_REG
.endif
b print_string_a2
@@ -1260,108 +1253,108 @@ end_print_symbol:
.thumb_func
print_int_node:
- ldr r0,[r6,#4]
+ ldr BSTACK_4,[ASTACK_0,#4]
bl w_print_int
ldr pc,[sp],#4
.thumb_func
print_int:
- mov r0,r4
+ mov BSTACK_4,BSTACK_0
bl w_print_int
ldr pc,[sp],#4
.thumb_func
print_char_denotation:
- tst r3,r3
+ tst BSTACK_1,BSTACK_1
bne print_char_node
- ldr r12,[r6,#4]
- str r12,[sp,#-4]!
+ ldr SCRATCH_REG,[ASTACK_0,#4]
+ str SCRATCH_REG,[sp,#-4]!
- mov r0,#0x27
+ mov BSTACK_4,#0x27
bl w_print_char
- ldr r0,[sp],#4
+ ldr BSTACK_4,[sp],#4
bl w_print_char
- mov r0,#0x27
+ mov BSTACK_4,#0x27
bl w_print_char
ldr pc,[sp],#4
.thumb_func
print_char_node:
- ldr r0,[r6,#4]
+ ldr BSTACK_4,[ASTACK_0,#4]
bl w_print_char
ldr pc,[sp],#4
.thumb_func
print_char:
- str r4,[sp,#-4]!
+ str BSTACK_0,[sp,#-4]!
bl w_print_char
add sp,sp,#4
ldr pc,[sp],#4
.thumb_func
print_bool:
- ldsb r6,[r6,#4]
- tst r6,r6
+ ldsb ASTACK_0,[ASTACK_0,#4]
+ tst ASTACK_0,ASTACK_0
beq print_false
.thumb_func
print_true:
- lao r0,true_c_string,0
- otoa r0,true_c_string,0
+ lao BSTACK_4,true_c_string,0
+ otoa BSTACK_4,true_c_string,0
bl w_print_string
ldr pc,[sp],#4
.thumb_func
print_false:
- lao r0,false_c_string,0
- otoa r0,false_c_string,0
+ lao BSTACK_4,false_c_string,0
+ otoa BSTACK_4,false_c_string,0
bl w_print_string
ldr pc,[sp],#4
.thumb_func
print_real:
.ifdef SOFT_FP_CC
- vmov r0,r1,d0
+ vmov BSTACK_4,BSTACK_3,d0
.endif
b print_real_
.thumb_func
print_real_node:
.ifdef SOFT_FP_CC
- ldrd r0,r1,[r6,#4]
+ ldrd BSTACK_4,BSTACK_3,[ASTACK_0,#4]
.else
- vldr.f64 d0,[r6,#4]
+ vldr.f64 d0,[ASTACK_0,#4]
.endif
.thumb_func
print_real_:
- mov r11,sp
+ mov ASTACK_3,sp
mov lr,sp
bic lr,lr,#7
mov sp,lr
bl w_print_real
- mov sp,r11
+ mov sp,ASTACK_3
ldr pc,[sp],#4
print_string_a2:
- ldr r1,[r8]
- add r0,r8,#4
+ ldr BSTACK_3,[ASTACK_2]
+ add BSTACK_4,ASTACK_2,#4
bl w_print_text
ldr pc,[sp],#4
.thumb_func
print__chars__sc:
- lao r12,basic_only,3
- ldo r8,r12,basic_only,3
- cmp r8,#0
+ lao SCRATCH_REG,basic_only,3
+ ldo ASTACK_2,SCRATCH_REG,basic_only,3
+ cmp ASTACK_2,#0
bne no_print_chars
.thumb_func
print__string__:
- ldr r1,[r6,#4]
- add r0,r6,#8
+ ldr BSTACK_3,[ASTACK_0,#4]
+ add BSTACK_4,ASTACK_0,#8
bl w_print_text
.thumb_func
no_print_chars:
@@ -1369,350 +1362,350 @@ no_print_chars:
.thumb_func
push_a_r_args:
- str r10,[sp,#-4]!
+ str HEAP_PTR,[sp,#-4]!
- ldr r7,[r6,#8]
- subs r7,r7,#2
- ldrh r10,[r7]
- subs r10,r10,#256
- ldrh r3,[r7,#2]
- add r7,r7,#4
- str r7,[sp,#-4]!
+ ldr ASTACK_1,[ASTACK_0,#8]
+ subs ASTACK_1,ASTACK_1,#2
+ ldrh HEAP_PTR,[ASTACK_1]
+ subs HEAP_PTR,HEAP_PTR,#256
+ ldrh BSTACK_1,[ASTACK_1,#2]
+ add ASTACK_1,ASTACK_1,#4
+ str ASTACK_1,[sp,#-4]!
- mov r7,r10
- subs r7,r7,r3
+ mov ASTACK_1,HEAP_PTR
+ subs ASTACK_1,ASTACK_1,BSTACK_1
- lsl r4,r4,#2
- add r12,r6,#12
- add r6,r12,r3,lsl #2
- subs r10,r10,#1
+ lsl BSTACK_0,BSTACK_0,#2
+ add SCRATCH_REG,ASTACK_0,#12
+ add ASTACK_0,SCRATCH_REG,BSTACK_1,lsl #2
+ subs HEAP_PTR,HEAP_PTR,#1
.thumb_func
mul_array_size_lp:
- add r6,r6,r4
- subs r10,r10,#1
+ add ASTACK_0,ASTACK_0,BSTACK_0
+ subs HEAP_PTR,HEAP_PTR,#1
bcs mul_array_size_lp
- add r10,r6,r7,lsl #2
+ add HEAP_PTR,ASTACK_0,ASTACK_1,lsl #2
b push_a_elements
.thumb_func
push_a_elements_lp:
- ldr r4,[r6,#-4]!
- str r4,[r9],#4
+ ldr BSTACK_0,[ASTACK_0,#-4]!
+ str BSTACK_0,[ASTACK_PTR],#4
.thumb_func
push_a_elements:
- subs r3,r3,#1
+ subs BSTACK_1,BSTACK_1,#1
bcs push_a_elements_lp
- mov r6,r10
- ldr r4,[sp],#4
- ldr r10,[sp],#4
+ mov ASTACK_0,HEAP_PTR
+ ldr BSTACK_0,[sp],#4
+ ldr HEAP_PTR,[sp],#4
- ldr r8,[sp],#4
+ ldr ASTACK_2,[sp],#4
b push_b_elements
.thumb_func
push_b_elements_lp:
- ldr r12,[r6,#-4]!
- str r12,[sp,#-4]!
+ ldr SCRATCH_REG,[ASTACK_0,#-4]!
+ str SCRATCH_REG,[sp,#-4]!
.thumb_func
push_b_elements:
- subs r7,r7,#1
+ subs ASTACK_1,ASTACK_1,#1
bcs push_b_elements_lp
- mov pc,r8
+ mov pc,ASTACK_2
.thumb_func
push_t_r_args:
- ldr r8,[sp],#4
+ ldr ASTACK_2,[sp],#4
- ldr r7,[r6]
- add r6,r6,#4
- subs r7,r7,#2
- ldrh r4,[r7]
- subs r4,r4,#256
- ldrh r3,[r7,#2]
- add r7,r7,#4
+ ldr ASTACK_1,[ASTACK_0]
+ add ASTACK_0,ASTACK_0,#4
+ subs ASTACK_1,ASTACK_1,#2
+ ldrh BSTACK_0,[ASTACK_1]
+ subs BSTACK_0,BSTACK_0,#256
+ ldrh BSTACK_1,[ASTACK_1,#2]
+ add ASTACK_1,ASTACK_1,#4
- str r7,[r9]
- str r3,[r9,#4]
+ str ASTACK_1,[ASTACK_PTR]
+ str BSTACK_1,[ASTACK_PTR,#4]
- sub r3,r4,r3
+ sub BSTACK_1,BSTACK_0,BSTACK_1
- add r7,r6,r4,lsl #2
- cmp r4,#2
+ add ASTACK_1,ASTACK_0,BSTACK_0,lsl #2
+ cmp BSTACK_0,#2
bls small_record
- ldr r7,[r6,#4]
- add r12,r7,#-4
- add r7,r12,r4,lsl #2
+ ldr ASTACK_1,[ASTACK_0,#4]
+ add SCRATCH_REG,ASTACK_1,#-4
+ add ASTACK_1,SCRATCH_REG,BSTACK_0,lsl #2
.thumb_func
small_record:
b push_r_b_elements
.thumb_func
push_r_b_elements_lp:
- subs r4,r4,#1
+ subs BSTACK_0,BSTACK_0,#1
bne not_first_arg_b
- ldr r12,[r6]
- str r12,[sp,#-4]!
+ ldr SCRATCH_REG,[ASTACK_0]
+ str SCRATCH_REG,[sp,#-4]!
b push_r_b_elements
.thumb_func
not_first_arg_b:
- ldr r12,[r7,#-4]!
- str r12,[sp,#-4]!
+ ldr SCRATCH_REG,[ASTACK_1,#-4]!
+ str SCRATCH_REG,[sp,#-4]!
.thumb_func
push_r_b_elements:
- subs r3,r3,#1
+ subs BSTACK_1,BSTACK_1,#1
bcs push_r_b_elements_lp
- ldr r3,[r9,#4]
- str r8,[sp,#-4]!
- ldr r12,[r9]
- str r12,[sp,#-4]!
+ ldr BSTACK_1,[ASTACK_PTR,#4]
+ str ASTACK_2,[sp,#-4]!
+ ldr SCRATCH_REG,[ASTACK_PTR]
+ str SCRATCH_REG,[sp,#-4]!
b push_r_a_elements
.thumb_func
push_r_a_elements_lp:
- subs r4,r4,#1
+ subs BSTACK_0,BSTACK_0,#1
bne not_first_arg_a
- ldr r8,[r6]
- str r8,[r9],#4
+ ldr ASTACK_2,[ASTACK_0]
+ str ASTACK_2,[ASTACK_PTR],#4
b push_r_a_elements
.thumb_func
not_first_arg_a:
- ldr r8,[r7,#-4]!
- str r8,[r9],#4
+ ldr ASTACK_2,[ASTACK_1,#-4]!
+ str ASTACK_2,[ASTACK_PTR],#4
.thumb_func
push_r_a_elements:
- subs r3,r3,#1
+ subs BSTACK_1,BSTACK_1,#1
bcs push_r_a_elements_lp
- ldr r4,[sp],#4
+ ldr BSTACK_0,[sp],#4
ldr pc,[sp],#4
BtoAC:
- tst r4,r4
+ tst BSTACK_0,BSTACK_0
beq BtoAC_false
BtoAC_true:
- lao r6,true_string,0
- otoa r6,true_string,0
+ lao ASTACK_0,true_string,0
+ otoa ASTACK_0,true_string,0
ldr pc,[sp],#4
BtoAC_false:
- lao r6,false_string,0
- otoa r6,false_string,0
+ lao ASTACK_0,false_string,0
+ otoa ASTACK_0,false_string,0
ldr pc,[sp],#4
RtoAC:
.if USE_CLIB
- vmov r2,r3,d0
- lao r1,printf_real_string,0
- lao r0,sprintf_buffer,0
- otoa r1,printf_real_string,0
- otoa r0,sprintf_buffer,0
- mov r4,sp
+ vmov BSTACK_2,BSTACK_1,d0
+ lao BSTACK_3,printf_real_string,0
+ lao BSTACK_4,sprintf_buffer,0
+ otoa BSTACK_3,printf_real_string,0
+ otoa BSTACK_4,sprintf_buffer,0
+ mov BSTACK_0,sp
mov lr,sp
and lr,lr,#-8
mov sp,lr
bl sprintf
- mov sp,r4
+ mov sp,BSTACK_0
.else
- lao r0,sprintf_buffer,1
- otoa r0,sprintf_buffer,1
+ lao BSTACK_4,sprintf_buffer,1
+ otoa BSTACK_4,sprintf_buffer,1
bl convert_real_to_string
.endif
b return_sprintf_buffer
ItoAC:
.if MY_ITOS
- lao r6,sprintf_buffer,2
- otoa r6,sprintf_buffer,2
+ lao ASTACK_0,sprintf_buffer,2
+ otoa ASTACK_0,sprintf_buffer,2
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl int_to_string
- lao r12,sprintf_buffer,3
- otoa r12,sprintf_buffer,3
- sub r4,r6,r12
+ lao SCRATCH_REG,sprintf_buffer,3
+ otoa SCRATCH_REG,sprintf_buffer,3
+ sub BSTACK_0,ASTACK_0,SCRATCH_REG
b sprintf_buffer_to_string
.thumb_func
int_to_string:
- tst r4,r4
+ tst BSTACK_0,BSTACK_0
bpl no_minus
- mov r12,#45
- strb r12,[r6],#1
- neg r4,r4
+ mov SCRATCH_REG,#45
+ strb SCRATCH_REG,[ASTACK_0],#1
+ neg BSTACK_0,BSTACK_0
.thumb_func
no_minus:
- add r8,r6,#12
+ add ASTACK_2,ASTACK_0,#12
beq zero_digit
- ldr r2,=0xcccccccd
+ ldr BSTACK_2,=0xcccccccd
.thumb_func
calculate_digits:
- cmp r4,#10
+ cmp BSTACK_0,#10
blo last_digit
- umull r12,r7,r2,r4
- add r3,r4,#48
+ umull SCRATCH_REG,ASTACK_1,BSTACK_2,BSTACK_0
+ add BSTACK_1,BSTACK_0,#48
- lsr r4,r7,#3
+ lsr BSTACK_0,ASTACK_1,#3
- and r7,r7,#-8
- sub r3,r3,r7
- sub r3,r3,r7,lsr #2
- strb r3,[r8],#1
+ and ASTACK_1,ASTACK_1,#-8
+ sub BSTACK_1,BSTACK_1,ASTACK_1
+ sub BSTACK_1,BSTACK_1,ASTACK_1,lsr #2
+ strb BSTACK_1,[ASTACK_2],#1
b calculate_digits
.thumb_func
last_digit:
- tst r4,r4
+ tst BSTACK_0,BSTACK_0
beq no_zero
.thumb_func
zero_digit:
- add r4,r4,#48
- strb r4,[r8],#1
+ add BSTACK_0,BSTACK_0,#48
+ strb BSTACK_0,[ASTACK_2],#1
.thumb_func
no_zero:
- add r7,r6,#12
+ add ASTACK_1,ASTACK_0,#12
.thumb_func
reverse_digits:
- ldrb r3,[r8,#-1]!
- strb r3,[r6],#1
- cmp r7,r8
+ ldrb BSTACK_1,[ASTACK_2,#-1]!
+ strb BSTACK_1,[ASTACK_0],#1
+ cmp ASTACK_1,ASTACK_2
bne reverse_digits
- mov r12,#0
- strb r12,[r6]
+ mov SCRATCH_REG,#0
+ strb SCRATCH_REG,[ASTACK_0]
ldr pc,[sp],#4
.else
- mov r2,r4
- lao r1,printf_int_string,0
- lao r0,sprintf_buffer,4
- otoa r1,printf_int_string,0
- otoa r0,sprintf_buffer,4
+ mov BSTACK_2,BSTACK_0
+ lao BSTACK_3,printf_int_string,0
+ lao BSTACK_4,sprintf_buffer,4
+ otoa BSTACK_3,printf_int_string,0
+ otoa BSTACK_4,sprintf_buffer,4
bl sprintf
.endif
.thumb_func
return_sprintf_buffer:
.if USE_CLIB
- lao r0,sprintf_buffer,5
- otoa r0,sprintf_buffer,5
+ lao BSTACK_4,sprintf_buffer,5
+ otoa BSTACK_4,sprintf_buffer,5
bl strlen
- mov r4,r0
+ mov BSTACK_0,BSTACK_4
.else
- laol r4,sprintf_buffer-1,sprintf_buffer_o_m1,0
- otoa r4,sprintf_buffer_o_m1,0
+ laol BSTACK_0,sprintf_buffer-1,sprintf_buffer_o_m1,0
+ otoa BSTACK_0,sprintf_buffer_o_m1,0
.thumb_func
skip_characters:
- ldrb r12,[r4,#1]!
- tst r12,r12
+ ldrb SCRATCH_REG,[BSTACK_0,#1]!
+ tst SCRATCH_REG,SCRATCH_REG
bne skip_characters
- lao r12,sprintf_buffer,6
- otoa r12,sprintf_buffer,6
- sub r4,r4,r12
+ lao SCRATCH_REG,sprintf_buffer,6
+ otoa SCRATCH_REG,sprintf_buffer,6
+ sub BSTACK_0,BSTACK_0,SCRATCH_REG
.endif
.if MY_ITOS
.thumb_func
sprintf_buffer_to_string:
- lao r6,sprintf_buffer,7
- otoa r6,sprintf_buffer,7
+ lao ASTACK_0,sprintf_buffer,7
+ otoa ASTACK_0,sprintf_buffer,7
.thumb_func
build_string:
.endif
- add r3,r4,#3
- lsr r3,r3,#2
- add r3,r3,#2
+ add BSTACK_1,BSTACK_0,#3
+ lsr BSTACK_1,BSTACK_1,#2
+ add BSTACK_1,BSTACK_1,#2
- subs r5,r5,r3
+ subs HEAP_FREE,HEAP_FREE,BSTACK_1
bhs D_to_S_no_gc
- str r6,[sp,#-4]!
+ str ASTACK_0,[sp,#-4]!
bl collect_0
- ldr r6,[sp],#4
+ ldr ASTACK_0,[sp],#4
D_to_S_no_gc:
- subs r3,r3,#2
- mov r8,r10
- laol r12,__STRING__+2,__STRING___o_2,0
- otoa r12,__STRING___o_2,0
- str r4,[r10,#4]
- str r12,[r10],#8
+ subs BSTACK_1,BSTACK_1,#2
+ mov ASTACK_2,HEAP_PTR
+ laol SCRATCH_REG,__STRING__+2,__STRING___o_2,0
+ otoa SCRATCH_REG,__STRING___o_2,0
+ str BSTACK_0,[HEAP_PTR,#4]
+ str SCRATCH_REG,[HEAP_PTR],#8
b D_to_S_cp_str_2
D_to_S_cp_str_1:
- ldr r4,[r6],#4
- str r4,[r10],#4
+ ldr BSTACK_0,[ASTACK_0],#4
+ str BSTACK_0,[HEAP_PTR],#4
D_to_S_cp_str_2:
- subs r3,r3,#1
+ subs BSTACK_1,BSTACK_1,#1
bcs D_to_S_cp_str_1
- mov r6,r8
+ mov ASTACK_0,ASTACK_2
ldr pc,[sp],#4
-eqD: ldr r4,[r6]
- ldr r12,[r7]
- cmp r4,r12
+eqD: ldr BSTACK_0,[ASTACK_0]
+ ldr SCRATCH_REG,[ASTACK_1]
+ cmp BSTACK_0,SCRATCH_REG
bne eqD_false
- laol r12,INT+2,INT_o_2,2
- otoa r12,INT_o_2,2
- cmp r4,r12
+ laol SCRATCH_REG,INT+2,INT_o_2,2
+ otoa SCRATCH_REG,INT_o_2,2
+ cmp BSTACK_0,SCRATCH_REG
beq eqD_INT
- laol r12,CHAR+2,CHAR_o_2,1
- otoa r12,CHAR_o_2,1
- cmp r4,r12
+ laol SCRATCH_REG,CHAR+2,CHAR_o_2,1
+ otoa SCRATCH_REG,CHAR_o_2,1
+ cmp BSTACK_0,SCRATCH_REG
beq eqD_CHAR
- laol r12,BOOL+2,BOOL_o_2,1
- otoa r12,BOOL_o_2,1
- cmp r4,r12
+ laol SCRATCH_REG,BOOL+2,BOOL_o_2,1
+ otoa SCRATCH_REG,BOOL_o_2,1
+ cmp BSTACK_0,SCRATCH_REG
beq eqD_BOOL
- laol r12,REAL+2,REAL_o_2,1
- otoa r12,REAL_o_2,1
- cmp r4,r12
+ laol SCRATCH_REG,REAL+2,REAL_o_2,1
+ otoa SCRATCH_REG,REAL_o_2,1
+ cmp BSTACK_0,SCRATCH_REG
beq eqD_REAL
- mov r4,#1
+ mov BSTACK_0,#1
ldr pc,[sp],#4
eqD_CHAR:
eqD_INT:
- ldr r3,[r6,#4]
- mov r4,#0
- ldr r12,[r7,#4]
- cmp r3,r12
+ ldr BSTACK_1,[ASTACK_0,#4]
+ mov BSTACK_0,#0
+ ldr SCRATCH_REG,[ASTACK_1,#4]
+ cmp BSTACK_1,SCRATCH_REG
it eq
- moveq r4,#1
+ moveq BSTACK_0,#1
ldr pc,[sp],#4
eqD_BOOL:
- ldrb r3,[r6,#4]
- mov r4,#0
- ldrb r12,[r7,#4]
- cmp r3,r12
+ ldrb BSTACK_1,[ASTACK_0,#4]
+ mov BSTACK_0,#0
+ ldrb SCRATCH_REG,[ASTACK_1,#4]
+ cmp BSTACK_1,SCRATCH_REG
it eq
- moveq r4,#1
+ moveq BSTACK_0,#1
ldr pc,[sp],#4
eqD_REAL:
- vldr.f64 d0,[r6,#4]
- vldr.f64 d1,[r7,#4]
- mov r4,#0
+ vldr.f64 d0,[ASTACK_0,#4]
+ vldr.f64 d1,[ASTACK_1,#4]
+ mov BSTACK_0,#0
vcmp.f64 d1,d0
vmrs APSR_nzcv,fpscr
it eq
- moveq r4,#1
+ moveq BSTACK_0,#1
ldr pc,[sp],#4
eqD_false:
- mov r4,#0
+ mov BSTACK_0,#0
ldr pc,[sp],#4
@
@ the timer
@@ -1721,40 +1714,40 @@ eqD_false:
.thumb_func
init_timer:
sub sp,sp,#20
- mov r0,sp
+ mov BSTACK_4,sp
bl times
- ldr r4,[sp]
- add r4,r4,r4
- add r4,r4,r4,lsl #2
+ ldr BSTACK_0,[sp]
+ add BSTACK_0,BSTACK_0,BSTACK_0
+ add BSTACK_0,BSTACK_0,BSTACK_0,lsl #2
add sp,sp,#20
- lao r12,last_time,0
- sto r4,r12,last_time,0
- eor r4,r4,r4
- lao r12,execute_time,2
- sto r4,r12,execute_time,2
- lao r12,garbage_collect_time,2
- sto r4,r12,garbage_collect_time,2
- lao r12,IO_time,1
- sto r4,r12,IO_time,1
+ lao SCRATCH_REG,last_time,0
+ sto BSTACK_0,SCRATCH_REG,last_time,0
+ eor BSTACK_0,BSTACK_0,BSTACK_0
+ lao SCRATCH_REG,execute_time,2
+ sto BSTACK_0,SCRATCH_REG,execute_time,2
+ lao SCRATCH_REG,garbage_collect_time,2
+ sto BSTACK_0,SCRATCH_REG,garbage_collect_time,2
+ lao SCRATCH_REG,IO_time,1
+ sto BSTACK_0,SCRATCH_REG,IO_time,1
ldr pc,[sp],#4
.thumb_func
get_time_diff:
sub sp,sp,#20
- mov r0,sp
+ mov BSTACK_4,sp
bl times
- ldr r4,[sp]
- add r4,r4,r4
- add r4,r4,r4,lsl #2
+ ldr BSTACK_0,[sp]
+ add BSTACK_0,BSTACK_0,BSTACK_0
+ add BSTACK_0,BSTACK_0,BSTACK_0,lsl #2
add sp,sp,#20
- lao r6,last_time,1
- otoa r6,last_time,1
- ldr r7,[r6]
- str r4,[r6]
- subs r4,r4,r7
+ lao ASTACK_0,last_time,1
+ otoa ASTACK_0,last_time,1
+ ldr ASTACK_1,[ASTACK_0]
+ str BSTACK_0,[ASTACK_0]
+ subs BSTACK_0,BSTACK_0,ASTACK_1
ldr pc,[sp],#4
.thumb_func
@@ -1763,14 +1756,14 @@ add_execute_time:
add lr,pc,#9
str lr,[sp,#-4]!
bl get_time_diff
- lao r6,execute_time,3
- otoa r6,execute_time,3
+ lao ASTACK_0,execute_time,3
+ otoa ASTACK_0,execute_time,3
.thumb_func
add_time:
- ldr r12,[r6]
- add r4,r4,r12
- str r4,[r6]
+ ldr SCRATCH_REG,[ASTACK_0]
+ add BSTACK_0,BSTACK_0,SCRATCH_REG
+ str BSTACK_0,[ASTACK_0]
ldr pc,[sp],#4
.thumb_func
@@ -1779,8 +1772,8 @@ add_garbage_collect_time:
add lr,pc,#9
str lr,[sp,#-4]!
bl get_time_diff
- lao r6,garbage_collect_time,3
- otoa r6,garbage_collect_time,3
+ lao ASTACK_0,garbage_collect_time,3
+ otoa ASTACK_0,garbage_collect_time,3
b add_time
add_IO_time:
@@ -1788,8 +1781,8 @@ add_IO_time:
add lr,pc,#9
str lr,[sp,#-4]!
bl get_time_diff
- lao r6,IO_time,2
- otoa r6,IO_time,2
+ lao ASTACK_0,IO_time,2
+ otoa ASTACK_0,IO_time,2
b add_time
.ifdef PIC
@@ -1894,21 +1887,21 @@ add_IO_time:
collect_3:
str lr,[sp,#-4]!
.ifdef PROFILE
- lao r8,garbage_collector_name,0
- otoa r8,garbage_collector_name,0
+ lao ASTACK_2,garbage_collector_name,0
+ otoa ASTACK_2,garbage_collector_name,0
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_s
.endif
- str r6,[r9]
- str r7,[r9,#4]
- str r8,[r9,#8]
- add r9,r9,#12
+ str ASTACK_0,[ASTACK_PTR]
+ str ASTACK_1,[ASTACK_PTR,#4]
+ str ASTACK_2,[ASTACK_PTR,#8]
+ add ASTACK_PTR,ASTACK_PTR,#12
bl collect_0_
- ldr r8,[r9,#-4]
- ldr r7,[r9,#-8]
- ldr r6,[r9,#-12]!
+ ldr ASTACK_2,[ASTACK_PTR,#-4]
+ ldr ASTACK_1,[ASTACK_PTR,#-8]
+ ldr ASTACK_0,[ASTACK_PTR,#-12]!
.ifdef PROFILE
b profile_r
.else
@@ -1918,19 +1911,19 @@ collect_3:
collect_2:
str lr,[sp,#-4]!
.ifdef PROFILE
- lao r8,garbage_collector_name,1
- otoa r8,garbage_collector_name,1
+ lao ASTACK_2,garbage_collector_name,1
+ otoa ASTACK_2,garbage_collector_name,1
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_s
.endif
- str r6,[r9]
- str r7,[r9,#4]
- add r9,r9,#8
+ str ASTACK_0,[ASTACK_PTR]
+ str ASTACK_1,[ASTACK_PTR,#4]
+ add ASTACK_PTR,ASTACK_PTR,#8
bl collect_0_
- ldr r7,[r9,#-4]
- ldr r6,[r9,#-8]!
+ ldr ASTACK_1,[ASTACK_PTR,#-4]
+ ldr ASTACK_0,[ASTACK_PTR,#-8]!
.ifdef PROFILE
b profile_r
.else
@@ -1940,16 +1933,16 @@ collect_2:
collect_1:
str lr,[sp,#-4]!
.ifdef PROFILE
- lao r8,garbage_collector_name,2
- otoa r8,garbage_collector_name,2
+ lao ASTACK_2,garbage_collector_name,2
+ otoa ASTACK_2,garbage_collector_name,2
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_s
.endif
- str r6,[r9],#4
+ str ASTACK_0,[ASTACK_PTR],#4
bl collect_0_
- ldr r6,[r9,#-4]!
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
.ifdef PROFILE
b profile_r
.else
@@ -1960,8 +1953,8 @@ collect_1:
.ifdef PROFILE
collect_0:
str lr,[sp,#-4]!
- lao r8,garbage_collector_name,3
- otoa r8,garbage_collector_name,3
+ lao ASTACK_2,garbage_collector_name,3
+ otoa ASTACK_2,garbage_collector_name,3
.align
add lr,pc,#9
str lr,[sp,#-4]!
@@ -1974,164 +1967,164 @@ collect_0:
collect_0:
.endif
collect_0_:
- stmdb sp!,{r0-r4,lr}
+ stmdb sp!,{BSTACK_4-BSTACK_0,lr}
- lao r12,heap_end_after_gc,1
- ldo r12,r12,heap_end_after_gc,1
- sub r8,r12,r10
- lsr r8,r8,#2
- sub r8,r8,r5
- lao r12,n_allocated_words,0
- sto r8,r12,n_allocated_words,0
+ lao SCRATCH_REG,heap_end_after_gc,1
+ ldo SCRATCH_REG,SCRATCH_REG,heap_end_after_gc,1
+ sub ASTACK_2,SCRATCH_REG,HEAP_PTR
+ lsr ASTACK_2,ASTACK_2,#2
+ sub ASTACK_2,ASTACK_2,HEAP_FREE
+ lao SCRATCH_REG,n_allocated_words,0
+ sto ASTACK_2,SCRATCH_REG,n_allocated_words,0
.if MARK_AND_COPY_GC
- lao r12,flags,6
- ldo r12,r12,flags,6
- tst r12,#64
+ lao SCRATCH_REG,flags,6
+ ldo SCRATCH_REG,SCRATCH_REG,flags,6
+ tst SCRATCH_REG,#64
beq no_mark3
.endif
.if MARK_GC
- lao r12,bit_counter,0
- ldo r8,r12,bit_counter,0
- cmp r8,#0
+ lao SCRATCH_REG,bit_counter,0
+ ldo ASTACK_2,SCRATCH_REG,bit_counter,0
+ cmp ASTACK_2,#0
beq no_scan
- mov r3,#0
- str r9,[sp,#-4]!
+ mov BSTACK_1,#0
+ str ASTACK_PTR,[sp,#-4]!
- lao r12,n_allocated_words,1
- ldo r9,r12,n_allocated_words,1
- lao r12,bit_vector_p,0
- ldo r6,r12,bit_vector_p,0
- lao r12,n_free_words_after_mark,0
- ldo r2,r12,n_free_words_after_mark,0
+ lao SCRATCH_REG,n_allocated_words,1
+ ldo ASTACK_PTR,SCRATCH_REG,n_allocated_words,1
+ lao SCRATCH_REG,bit_vector_p,0
+ ldo ASTACK_0,SCRATCH_REG,bit_vector_p,0
+ lao SCRATCH_REG,n_free_words_after_mark,0
+ ldo BSTACK_2,SCRATCH_REG,n_free_words_after_mark,0
.thumb_func
scan_bits:
- ldr r12,[r6]
- cmp r3,r12
+ ldr SCRATCH_REG,[ASTACK_0]
+ cmp BSTACK_1,SCRATCH_REG
beq zero_bits
- str r3,[r6],#4
- subs r8,r8,#1
+ str BSTACK_1,[ASTACK_0],#4
+ subs ASTACK_2,ASTACK_2,#1
bne scan_bits
b end_scan
.thumb_func
zero_bits:
- add r7,r6,#4
- add r6,r6,#4
- subs r8,r8,#1
+ add ASTACK_1,ASTACK_0,#4
+ add ASTACK_0,ASTACK_0,#4
+ subs ASTACK_2,ASTACK_2,#1
bne skip_zero_bits_lp1
b end_bits
.thumb_func
skip_zero_bits_lp:
- cmp r4,#0
+ cmp BSTACK_0,#0
bne end_zero_bits
skip_zero_bits_lp1:
- ldr r4,[r6],#4
- subs r8,r8,#1
+ ldr BSTACK_0,[ASTACK_0],#4
+ subs ASTACK_2,ASTACK_2,#1
bne skip_zero_bits_lp
- cmp r4,#0
+ cmp BSTACK_0,#0
beq end_bits
- str r3,[r6,#-4]
- subs r4,r6,r7
+ str BSTACK_1,[ASTACK_0,#-4]
+ subs BSTACK_0,ASTACK_0,ASTACK_1
b end_bits2
.thumb_func
end_zero_bits:
- sub r4,r6,r7
- lsl r4,r4,#3
- str r3,[r6,#-4]
- add r2,r2,r4
+ sub BSTACK_0,ASTACK_0,ASTACK_1
+ lsl BSTACK_0,BSTACK_0,#3
+ str BSTACK_1,[ASTACK_0,#-4]
+ add BSTACK_2,BSTACK_2,BSTACK_0
- cmp r4,r9
+ cmp BSTACK_0,ASTACK_PTR
blo scan_bits
.thumb_func
found_free_memory:
- lao r12,bit_counter,1
- sto r8,r12,bit_counter,1
- lao r12,bit_vector_p,1
- sto r6,r12,bit_vector_p,1
- lao r12,n_free_words_after_mark,1
- sto r2,r12,n_free_words_after_mark,1
+ lao SCRATCH_REG,bit_counter,1
+ sto ASTACK_2,SCRATCH_REG,bit_counter,1
+ lao SCRATCH_REG,bit_vector_p,1
+ sto ASTACK_0,SCRATCH_REG,bit_vector_p,1
+ lao SCRATCH_REG,n_free_words_after_mark,1
+ sto BSTACK_2,SCRATCH_REG,n_free_words_after_mark,1
- sub r5,r4,r9
+ sub HEAP_FREE,BSTACK_0,ASTACK_PTR
- add r8,r7,#-4
- lao r12,heap_vector,1
- ldo r12,r12,heap_vector,1
- subs r8,r8,r12
- lsl r8,r8,#5
- lao r12,heap_p3,1
- ldo r10,r12,heap_p3,1
- add r10,r10,r8
+ add ASTACK_2,ASTACK_1,#-4
+ lao SCRATCH_REG,heap_vector,1
+ ldo SCRATCH_REG,SCRATCH_REG,heap_vector,1
+ subs ASTACK_2,ASTACK_2,SCRATCH_REG
+ lsl ASTACK_2,ASTACK_2,#5
+ lao SCRATCH_REG,heap_p3,1
+ ldo HEAP_PTR,SCRATCH_REG,heap_p3,1
+ add HEAP_PTR,HEAP_PTR,ASTACK_2
- add r8,r10,r4,lsl #2
- lao r12,heap_end_after_gc,2
- sto r8,r12,heap_end_after_gc,2
+ add ASTACK_2,HEAP_PTR,BSTACK_0,lsl #2
+ lao SCRATCH_REG,heap_end_after_gc,2
+ sto ASTACK_2,SCRATCH_REG,heap_end_after_gc,2
- ldr r9,[sp],#4
+ ldr ASTACK_PTR,[sp],#4
- ldmia sp!,{r0-r4,pc}
+ ldmia sp!,{BSTACK_4-BSTACK_0,pc}
.thumb_func
end_bits:
- sub r4,r6,r7
- add r4,r4,#4
+ sub BSTACK_0,ASTACK_0,ASTACK_1
+ add BSTACK_0,BSTACK_0,#4
end_bits2:
- lsl r4,r4,#3
- add r2,r2,r4
- cmp r4,r9
+ lsl BSTACK_0,BSTACK_0,#3
+ add BSTACK_2,BSTACK_2,BSTACK_0
+ cmp BSTACK_0,ASTACK_PTR
bhs found_free_memory
.thumb_func
end_scan:
- ldr r9,[sp],#4
- lao r12,bit_counter,2
- sto r8,r12,bit_counter,2
- lao r12,n_free_words_after_mark,2
- sto r2,r12,n_free_words_after_mark,2
+ ldr ASTACK_PTR,[sp],#4
+ lao SCRATCH_REG,bit_counter,2
+ sto ASTACK_2,SCRATCH_REG,bit_counter,2
+ lao SCRATCH_REG,n_free_words_after_mark,2
+ sto BSTACK_2,SCRATCH_REG,n_free_words_after_mark,2
.thumb_func
no_scan:
.endif
-@ to do: check value in r8
+@ to do: check value in ASTACK_2
.if MARK_AND_COPY_GC
no_mark3:
.endif
- lao r12,garbage_collect_flag,2
- ldosb r4,r12,garbage_collect_flag,2
- cmp r4,#0
+ lao SCRATCH_REG,garbage_collect_flag,2
+ ldosb BSTACK_0,SCRATCH_REG,garbage_collect_flag,2
+ cmp BSTACK_0,#0
ble collect
.ifdef PIC
- lao r12,garbage_collect_flag,3
+ lao SCRATCH_REG,garbage_collect_flag,3
.endif
- sub r4,r4,#2
- stob r4,r12,garbage_collect_flag,3
+ sub BSTACK_0,BSTACK_0,#2
+ stob BSTACK_0,SCRATCH_REG,garbage_collect_flag,3
- lao r12,extra_heap_size,0
- ldo r3,r12,extra_heap_size,0
- cmp r8,r3
+ lao SCRATCH_REG,extra_heap_size,0
+ ldo BSTACK_1,SCRATCH_REG,extra_heap_size,0
+ cmp ASTACK_2,BSTACK_1
bhi collect
- sub r5,r3,r8
+ sub HEAP_FREE,BSTACK_1,ASTACK_2
- lao r12,extra_heap,0
- ldo r10,r12,extra_heap,0
- add r3,r10,r3,lsl #2
- lao r12,heap_end_after_gc,3
- sto r3,r12,heap_end_after_gc,3
+ lao SCRATCH_REG,extra_heap,0
+ ldo HEAP_PTR,SCRATCH_REG,extra_heap,0
+ add BSTACK_1,HEAP_PTR,BSTACK_1,lsl #2
+ lao SCRATCH_REG,heap_end_after_gc,3
+ sto BSTACK_1,SCRATCH_REG,heap_end_after_gc,3
- ldmia sp!,{r0-r4,pc}
+ ldmia sp!,{BSTACK_4-BSTACK_0,pc}
.thumb_func
.align
@@ -2140,49 +2133,49 @@ collect:
str lr,[sp,#-4]!
bl add_execute_time
- lao r12,flags,7
- ldo r12,r12,flags,7
- tst r12,#4
+ lao SCRATCH_REG,flags,7
+ ldo SCRATCH_REG,SCRATCH_REG,flags,7
+ tst SCRATCH_REG,#4
beq no_print_stack_sizes
- lao r0,garbage_collect_string_1,0
- otoa r0,garbage_collect_string_1,0
+ lao BSTACK_4,garbage_collect_string_1,0
+ otoa BSTACK_4,garbage_collect_string_1,0
bl ew_print_string
- mov r4,r9
- lao r12,stack_p,1
- ldo r12,r12,stack_p,1
- sub r0,r4,r12
+ mov BSTACK_0,ASTACK_PTR
+ lao SCRATCH_REG,stack_p,1
+ ldo SCRATCH_REG,SCRATCH_REG,stack_p,1
+ sub BSTACK_4,BSTACK_0,SCRATCH_REG
bl ew_print_int
- lao r0,garbage_collect_string_2,0
- otoa r0,garbage_collect_string_2,0
+ lao BSTACK_4,garbage_collect_string_2,0
+ otoa BSTACK_4,garbage_collect_string_2,0
bl ew_print_string
- lao r12,halt_sp,2
- ldo r4,r12,halt_sp,2
- add r0,sp,#0
- sub r0,r4,r0
+ lao SCRATCH_REG,halt_sp,2
+ ldo BSTACK_0,SCRATCH_REG,halt_sp,2
+ add BSTACK_4,sp,#0
+ sub BSTACK_4,BSTACK_0,BSTACK_4
bl ew_print_int
- lao r0,garbage_collect_string_3,0
- otoa r0,garbage_collect_string_3,0
+ lao BSTACK_4,garbage_collect_string_3,0
+ otoa BSTACK_4,garbage_collect_string_3,0
bl ew_print_string
.thumb_func
no_print_stack_sizes:
- lao r12,stack_p,2
- ldo r4,r12,stack_p,2
- lao r12,ab_stack_size,5
- ldo r12,r12,ab_stack_size,5
- add r4,r4,r12
- cmp r9,r4
+ lao SCRATCH_REG,stack_p,2
+ ldo BSTACK_0,SCRATCH_REG,stack_p,2
+ lao SCRATCH_REG,ab_stack_size,5
+ ldo SCRATCH_REG,SCRATCH_REG,ab_stack_size,5
+ add BSTACK_0,BSTACK_0,SCRATCH_REG
+ cmp ASTACK_PTR,BSTACK_0
bhi stack_overflow
.if MARK_AND_COPY_GC
- lao r12,flags,8
- ldo r12,r12,flags,8
- tst r12,#64
+ lao SCRATCH_REG,flags,8
+ ldo SCRATCH_REG,SCRATCH_REG,flags,8
+ tst SCRATCH_REG,#64
@bne compacting_collector
.else
.if MARK_GC
@@ -2191,49 +2184,49 @@ no_print_stack_sizes:
.endif
.if MARK_AND_COPY_GC || !MARK_GC
- lao r12,garbage_collect_flag,4
- ldosb r12,r12,garbage_collect_flag,4
- cmp r12,#0
+ lao SCRATCH_REG,garbage_collect_flag,4
+ ldosb SCRATCH_REG,SCRATCH_REG,garbage_collect_flag,4
+ cmp SCRATCH_REG,#0
@bne compacting_collector
- lao r12,heap_copied_vector,1
- ldo r8,r12,heap_copied_vector,1
+ lao SCRATCH_REG,heap_copied_vector,1
+ ldo ASTACK_2,SCRATCH_REG,heap_copied_vector,1
- lao r12,heap_end_after_copy_gc,1
- ldo r12,r12,heap_end_after_copy_gc,1
- cmp r12,#0
+ lao SCRATCH_REG,heap_end_after_copy_gc,1
+ ldo SCRATCH_REG,SCRATCH_REG,heap_end_after_copy_gc,1
+ cmp SCRATCH_REG,#0
beq zero_all
- mov r4,r10
- lao r12,heap_p1,1
- ldo r12,r12,heap_p1,1
- subs r4,r4,r12
- add r4,r4,#63*4
- lsr r4,r4,#8
+ mov BSTACK_0,HEAP_PTR
+ lao SCRATCH_REG,heap_p1,1
+ ldo SCRATCH_REG,SCRATCH_REG,heap_p1,1
+ subs BSTACK_0,BSTACK_0,SCRATCH_REG
+ add BSTACK_0,BSTACK_0,#63*4
+ lsr BSTACK_0,BSTACK_0,#8
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl zero_bit_vector
- lao r12,heap_end_after_copy_gc,2
- ldo r7,r12,heap_end_after_copy_gc,2
- lao r12,heap_p1,2
- ldo r12,r12,heap_p1,2
- subs r7,r7,r12
- lsr r7,r7,#6
- and r7,r7,#-4
-
- lao r12,heap_copied_vector,2
- ldo r8,r12,heap_copied_vector,2
- lao r12,heap_copied_vector_size,2
- ldo r4,r12,heap_copied_vector_size,2
- add r8,r8,r7
- subs r4,r4,r7
- lsr r4,r4,#2
-
- lao r12,heap_end_after_copy_gc,3
- mov r14,#0
- sto r14,r12,heap_end_after_copy_gc,3
+ lao SCRATCH_REG,heap_end_after_copy_gc,2
+ ldo ASTACK_1,SCRATCH_REG,heap_end_after_copy_gc,2
+ lao SCRATCH_REG,heap_p1,2
+ ldo SCRATCH_REG,SCRATCH_REG,heap_p1,2
+ subs ASTACK_1,ASTACK_1,SCRATCH_REG
+ lsr ASTACK_1,ASTACK_1,#6
+ and ASTACK_1,ASTACK_1,#-4
+
+ lao SCRATCH_REG,heap_copied_vector,2
+ ldo ASTACK_2,SCRATCH_REG,heap_copied_vector,2
+ lao SCRATCH_REG,heap_copied_vector_size,2
+ ldo BSTACK_0,SCRATCH_REG,heap_copied_vector_size,2
+ add ASTACK_2,ASTACK_2,ASTACK_1
+ subs BSTACK_0,BSTACK_0,ASTACK_1
+ lsr BSTACK_0,BSTACK_0,#2
+
+ lao SCRATCH_REG,heap_end_after_copy_gc,3
+ mov LINK_REG,#0
+ sto LINK_REG,SCRATCH_REG,heap_end_after_copy_gc,3
.align
add lr,pc,#9
@@ -2243,9 +2236,9 @@ no_print_stack_sizes:
.thumb_func
zero_all:
- lao r12,heap_copied_vector_size,3
- ldo r4,r12,heap_copied_vector_size,3
- lsr r4,r4,#2
+ lao SCRATCH_REG,heap_copied_vector_size,3
+ ldo BSTACK_0,SCRATCH_REG,heap_copied_vector_size,3
+ lsr BSTACK_0,BSTACK_0,#2
.align
add lr,pc,#9
str lr,[sp,#-4]!
@@ -2257,129 +2250,129 @@ end_zero_bit_vector:
.include "thumb2copy.s"
.if WRITE_HEAP
- lao r12,heap2_begin_and_end,0
- sto r9,r12,heap2_begin_and_end,0
+ lao SCRATCH_REG,heap2_begin_and_end,0
+ sto ASTACK_PTR,SCRATCH_REG,heap2_begin_and_end,0
.endif
- sub r8,r9,r10
- lsr r8,r8,#2
+ sub ASTACK_2,ASTACK_PTR,HEAP_PTR
+ lsr ASTACK_2,ASTACK_2,#2
- ldr r9,[sp],#4
+ ldr ASTACK_PTR,[sp],#4
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl add_garbage_collect_time
- lao r12,n_allocated_words,2
- ldo r12,r12,n_allocated_words,2
- subs r8,r8,r12
- mov r5,r8
+ lao SCRATCH_REG,n_allocated_words,2
+ ldo SCRATCH_REG,SCRATCH_REG,n_allocated_words,2
+ subs ASTACK_2,ASTACK_2,SCRATCH_REG
+ mov HEAP_FREE,ASTACK_2
bls switch_to_mark_scan
- add r4,r8,r8,lsl #2
- lsl r4,r4,#5
- lao r3,heap_size,4
- ldo r3,r3,heap_size,4
- mov r6,r3
- lsl r3,r3,#2
- add r3,r3,r6
- add r3,r3,r3
- add r3,r3,r6
- cmp r4,r3
+ add BSTACK_0,ASTACK_2,ASTACK_2,lsl #2
+ lsl BSTACK_0,BSTACK_0,#5
+ lao BSTACK_1,heap_size,4
+ ldo BSTACK_1,BSTACK_1,heap_size,4
+ mov ASTACK_0,BSTACK_1
+ lsl BSTACK_1,BSTACK_1,#2
+ add BSTACK_1,BSTACK_1,ASTACK_0
+ add BSTACK_1,BSTACK_1,BSTACK_1
+ add BSTACK_1,BSTACK_1,ASTACK_0
+ cmp BSTACK_0,BSTACK_1
bhs no_mark_scan
@ b no_mark_scan
.thumb_func
switch_to_mark_scan:
- lao r12,heap_size_33,2
- ldo r4,r12,heap_size_33,2
- lsl r4,r4,#5
- lao r12,heap_p,1
- ldo r3,r12,heap_p,1
-
- lao r12,heap_p1,3
- ldo r6,r12,heap_p1,3
- lao r12,heap_p2,1
- ldo r12,r12,heap_p2,1
- cmp r6,r12
+ lao SCRATCH_REG,heap_size_33,2
+ ldo BSTACK_0,SCRATCH_REG,heap_size_33,2
+ lsl BSTACK_0,BSTACK_0,#5
+ lao SCRATCH_REG,heap_p,1
+ ldo BSTACK_1,SCRATCH_REG,heap_p,1
+
+ lao SCRATCH_REG,heap_p1,3
+ ldo ASTACK_0,SCRATCH_REG,heap_p1,3
+ lao SCRATCH_REG,heap_p2,1
+ ldo SCRATCH_REG,SCRATCH_REG,heap_p2,1
+ cmp ASTACK_0,SCRATCH_REG
bcc vector_at_begin
.thumb_func
vector_at_end:
- lao r12,heap_p3,2
- sto r3,r12,heap_p3,2
- add r3,r3,r4
- lao r12,heap_vector,2
- sto r3,r12,heap_vector,2
-
- lao r12,heap_p1,4
- ldo r4,r12,heap_p1,4
- lao r12,extra_heap,1
- sto r4,r12,extra_heap,1
- subs r3,r3,r4
- lsr r3,r3,#2
- lao r12,extra_heap_size,1
- sto r3,r12,extra_heap_size,1
+ lao SCRATCH_REG,heap_p3,2
+ sto BSTACK_1,SCRATCH_REG,heap_p3,2
+ add BSTACK_1,BSTACK_1,BSTACK_0
+ lao SCRATCH_REG,heap_vector,2
+ sto BSTACK_1,SCRATCH_REG,heap_vector,2
+
+ lao SCRATCH_REG,heap_p1,4
+ ldo BSTACK_0,SCRATCH_REG,heap_p1,4
+ lao SCRATCH_REG,extra_heap,1
+ sto BSTACK_0,SCRATCH_REG,extra_heap,1
+ subs BSTACK_1,BSTACK_1,BSTACK_0
+ lsr BSTACK_1,BSTACK_1,#2
+ lao SCRATCH_REG,extra_heap_size,1
+ sto BSTACK_1,SCRATCH_REG,extra_heap_size,1
b switch_to_mark_scan_2
.thumb_func
vector_at_begin:
- lao r12,heap_vector,3
- sto r3,r12,heap_vector,3
- lao r12,heap_size,5
- ldo r12,r12,heap_size,5
- add r3,r3,r12
- subs r3,r3,r4
- lao r12,heap_p3,3
- sto r3,r12,heap_p3,3
-
- lao r12,extra_heap,2
- sto r3,r12,extra_heap,2
- lao r12,heap_p2,2
- ldo r6,r12,heap_p2,2
- subs r6,r6,r3
- lsr r6,r6,#2
- lao r12,extra_heap_size,2
- sto r6,r12,extra_heap_size,2
+ lao SCRATCH_REG,heap_vector,3
+ sto BSTACK_1,SCRATCH_REG,heap_vector,3
+ lao SCRATCH_REG,heap_size,5
+ ldo SCRATCH_REG,SCRATCH_REG,heap_size,5
+ add BSTACK_1,BSTACK_1,SCRATCH_REG
+ subs BSTACK_1,BSTACK_1,BSTACK_0
+ lao SCRATCH_REG,heap_p3,3
+ sto BSTACK_1,SCRATCH_REG,heap_p3,3
+
+ lao SCRATCH_REG,extra_heap,2
+ sto BSTACK_1,SCRATCH_REG,extra_heap,2
+ lao SCRATCH_REG,heap_p2,2
+ ldo ASTACK_0,SCRATCH_REG,heap_p2,2
+ subs ASTACK_0,ASTACK_0,BSTACK_1
+ lsr ASTACK_0,ASTACK_0,#2
+ lao SCRATCH_REG,extra_heap_size,2
+ sto ASTACK_0,SCRATCH_REG,extra_heap_size,2
switch_to_mark_scan_2:
- lao r4,heap_size,6
- ldo r4,r4,heap_size,6
- lsr r4,r4,#3
- sub r4,r4,r8
- lsl r4,r4,#2
+ lao BSTACK_0,heap_size,6
+ ldo BSTACK_0,BSTACK_0,heap_size,6
+ lsr BSTACK_0,BSTACK_0,#3
+ sub BSTACK_0,BSTACK_0,ASTACK_2
+ lsl BSTACK_0,BSTACK_0,#2
- lao r12,garbage_collect_flag,5
- mov r11,#1
- stob r11,r12,garbage_collect_flag,5
+ lao SCRATCH_REG,garbage_collect_flag,5
+ mov ASTACK_3,#1
+ stob ASTACK_3,SCRATCH_REG,garbage_collect_flag,5
- cmp r8,#0
+ cmp ASTACK_2,#0
bpl end_garbage_collect
- mov r11,#-1
- strb r11,[r12]
+ mov ASTACK_3,#-1
+ strb ASTACK_3,[SCRATCH_REG]
- lao r12,extra_heap_size,3
- ldo r3,r12,extra_heap_size,3
- mov r4,r3
- lao r12,n_allocated_words,3
- ldo r12,r12,n_allocated_words,3
- subs r4,r4,r12
+ lao SCRATCH_REG,extra_heap_size,3
+ ldo BSTACK_1,SCRATCH_REG,extra_heap_size,3
+ mov BSTACK_0,BSTACK_1
+ lao SCRATCH_REG,n_allocated_words,3
+ ldo SCRATCH_REG,SCRATCH_REG,n_allocated_words,3
+ subs BSTACK_0,BSTACK_0,SCRATCH_REG
bmi out_of_memory_4
- lao r12,extra_heap,3
- ldo r10,r12,extra_heap,3
- lsl r3,r3,#2
- add r3,r3,r10
- lao r12,heap_end_after_gc,4
- sto r3,r12,heap_end_after_gc,4
+ lao SCRATCH_REG,extra_heap,3
+ ldo HEAP_PTR,SCRATCH_REG,extra_heap,3
+ lsl BSTACK_1,BSTACK_1,#2
+ add BSTACK_1,BSTACK_1,HEAP_PTR
+ lao SCRATCH_REG,heap_end_after_gc,4
+ sto BSTACK_1,SCRATCH_REG,heap_end_after_gc,4
.if WRITE_HEAP
- lao r12,heap_end_write_heap,0
- sto r10,r12,heap_end_write_heap,0
- lao r12,d3_flag_write_heap,0
- mov r11,#1
- sto r11,r12,d3_flag_write_heap,0
+ lao SCRATCH_REG,heap_end_write_heap,0
+ sto HEAP_PTR,SCRATCH_REG,heap_end_write_heap,0
+ lao SCRATCH_REG,d3_flag_write_heap,0
+ mov ASTACK_3,#1
+ sto ASTACK_3,SCRATCH_REG,d3_flag_write_heap,0
b end_garbage_collect_
.else
b end_garbage_collect
@@ -2387,112 +2380,112 @@ switch_to_mark_scan_2:
.thumb_func
no_mark_scan:
@ exchange the semi_spaces
- lao r12,heap_p1,5
- ldo r4,r12,heap_p1,5
- lao r12,heap_p2,3
- ldo r3,r12,heap_p2,3
- lao r12,heap_p2,4
- sto r4,r12,heap_p2,4
- lao r12,heap_p1,6
- sto r3,r12,heap_p1,6
-
- lao r12,heap_size_129,2
- ldo r4,r12,heap_size_129,2
- lsl r4,r4,#6-2
+ lao SCRATCH_REG,heap_p1,5
+ ldo BSTACK_0,SCRATCH_REG,heap_p1,5
+ lao SCRATCH_REG,heap_p2,3
+ ldo BSTACK_1,SCRATCH_REG,heap_p2,3
+ lao SCRATCH_REG,heap_p2,4
+ sto BSTACK_0,SCRATCH_REG,heap_p2,4
+ lao SCRATCH_REG,heap_p1,6
+ sto BSTACK_1,SCRATCH_REG,heap_p1,6
+
+ lao SCRATCH_REG,heap_size_129,2
+ ldo BSTACK_0,SCRATCH_REG,heap_size_129,2
+ lsl BSTACK_0,BSTACK_0,#6-2
.ifdef MUNMAP
- lao r12,heap_p2,5
- ldo r3,r12,heap_p2,5
- add r6,r3,r4,lsl #2
- add r3,r3,#4095
- and r3,r3,#-4096
- and r6,r6,#-4096
- subs r6,r6,r3
+ lao SCRATCH_REG,heap_p2,5
+ ldo BSTACK_1,SCRATCH_REG,heap_p2,5
+ add ASTACK_0,BSTACK_1,BSTACK_0,lsl #2
+ add BSTACK_1,BSTACK_1,#4095
+ and BSTACK_1,BSTACK_1,#-4096
+ and ASTACK_0,ASTACK_0,#-4096
+ subs ASTACK_0,ASTACK_0,BSTACK_1
bls no_pages
- str r4,[sp,#-4]!
+ str BSTACK_0,[sp,#-4]!
- str r6,[sp,#-4]!
- str r3,[sp,#-4]!
+ str ASTACK_0,[sp,#-4]!
+ str BSTACK_1,[sp,#-4]!
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl _munmap
add sp,sp,#8
- ldr r4,[sp],#4
+ ldr BSTACK_0,[sp],#4
.thumb_func
no_pages:
.endif
.if ADJUST_HEAP_SIZE
- mov r3,r4
+ mov BSTACK_1,BSTACK_0
.endif
- subs r4,r4,r8
+ subs BSTACK_0,BSTACK_0,ASTACK_2
.if ADJUST_HEAP_SIZE
- mov r6,r4
- lao r12,heap_size_multiple,0
- ldo r12,r12,heap_size_multiple,0
- umull r4,r7,r12,r4
- lsr r4,r4,#9
- orr r4,r4,r7,lsl #32-9
- lsrs r7,r7,#9
+ mov ASTACK_0,BSTACK_0
+ lao SCRATCH_REG,heap_size_multiple,0
+ ldo SCRATCH_REG,SCRATCH_REG,heap_size_multiple,0
+ umull BSTACK_0,ASTACK_1,SCRATCH_REG,BSTACK_0
+ lsr BSTACK_0,BSTACK_0,#9
+ orr BSTACK_0,BSTACK_0,ASTACK_1,lsl #32-9
+ lsrs ASTACK_1,ASTACK_1,#9
bne no_small_heap1
- cmp r4,#MINIMUM_HEAP_SIZE_2
+ cmp BSTACK_0,#MINIMUM_HEAP_SIZE_2
bhs not_too_small1
- mov r4,#MINIMUM_HEAP_SIZE_2
+ mov BSTACK_0,#MINIMUM_HEAP_SIZE_2
not_too_small1:
- subs r3,r3,r4
+ subs BSTACK_1,BSTACK_1,BSTACK_0
blo no_small_heap1
- sub r5,r5,r3
- lsl r3,r3,#2
- lao r12,heap_end_after_gc,5
- ldo r8,r12,heap_end_after_gc,5
- lao r12,heap_end_after_copy_gc,4
- sto r8,r12,heap_end_after_copy_gc,4
- sub r8,r8,r3
- lao r12,heap_end_after_gc,6
- sto r8,r12,heap_end_after_gc,6
+ sub HEAP_FREE,HEAP_FREE,BSTACK_1
+ lsl BSTACK_1,BSTACK_1,#2
+ lao SCRATCH_REG,heap_end_after_gc,5
+ ldo ASTACK_2,SCRATCH_REG,heap_end_after_gc,5
+ lao SCRATCH_REG,heap_end_after_copy_gc,4
+ sto ASTACK_2,SCRATCH_REG,heap_end_after_copy_gc,4
+ sub ASTACK_2,ASTACK_2,BSTACK_1
+ lao SCRATCH_REG,heap_end_after_gc,6
+ sto ASTACK_2,SCRATCH_REG,heap_end_after_gc,6
no_small_heap1:
- mov r4,r6
+ mov BSTACK_0,ASTACK_0
.endif
- lsl r4,r4,#2
+ lsl BSTACK_0,BSTACK_0,#2
.endif
.thumb_func
end_garbage_collect:
.if WRITE_HEAP
- lao r12,heap_end_write_heap,1
- sto r10,r12,heap_end_write_heap,1
- lao r12,d3_flag_write_heap,1
- mov r11,#0
- sto r11,r12,d3_flag_write_heap,1
+ lao SCRATCH_REG,heap_end_write_heap,1
+ sto HEAP_PTR,SCRATCH_REG,heap_end_write_heap,1
+ lao SCRATCH_REG,d3_flag_write_heap,1
+ mov ASTACK_3,#0
+ sto ASTACK_3,SCRATCH_REG,d3_flag_write_heap,1
.thumb_func
end_garbage_collect_:
.endif
- str r4,[sp,#-4]!
+ str BSTACK_0,[sp,#-4]!
- lao r12,flags,9
- ldo r12,r12,flags,9
- tst r12,#2
+ lao SCRATCH_REG,flags,9
+ ldo SCRATCH_REG,SCRATCH_REG,flags,9
+ tst SCRATCH_REG,#2
beq no_heap_use_message
- str r4,[sp,#-4]!
+ str BSTACK_0,[sp,#-4]!
- lao r0,heap_use_after_gc_string_1,0
- otoa r0,heap_use_after_gc_string_1,0
+ lao BSTACK_4,heap_use_after_gc_string_1,0
+ otoa BSTACK_4,heap_use_after_gc_string_1,0
bl ew_print_string
- ldr r0,[sp],#4
+ ldr BSTACK_4,[sp],#4
bl ew_print_int
- lao r0,heap_use_after_gc_string_2,0
- otoa r0,heap_use_after_gc_string_2,0
+ lao BSTACK_4,heap_use_after_gc_string_2,0
+ otoa BSTACK_4,heap_use_after_gc_string_2,0
bl ew_print_string
.thumb_func
@@ -2505,72 +2498,72 @@ no_heap_use_message:
bl call_finalizers
.endif
- ldr r4,[sp],#4
+ ldr BSTACK_0,[sp],#4
.if WRITE_HEAP
@ Check whether memory profiling is on or off
- lao r12,flags,10
- ldo r12,r12,flags,10
- tst r12,#32
+ lao SCRATCH_REG,flags,10
+ ldo SCRATCH_REG,SCRATCH_REG,flags,10
+ tst SCRATCH_REG,#32
beq no_write_heap
- lao r12,min_write_heap_size,0
- ldo r12,r12,min_write_heap_size,0
- cmp r4,r12
+ lao SCRATCH_REG,min_write_heap_size,0
+ ldo SCRATCH_REG,SCRATCH_REG,min_write_heap_size,0
+ cmp BSTACK_0,SCRATCH_REG
blo no_write_heap
- str r6,[sp,#-4]!
- str r7,[sp,#-4]!
- str r8,[sp,#-4]!
- str r9,[sp,#-4]!
- str r10,[sp,#-4]!
+ str ASTACK_0,[sp,#-4]!
+ str ASTACK_1,[sp,#-4]!
+ str ASTACK_2,[sp,#-4]!
+ str ASTACK_PTR,[sp,#-4]!
+ str HEAP_PTR,[sp,#-4]!
subs sp,sp,#64
- lao r12,d3_flag_write_heap,2
- ldo r4,r12,d3_flag_write_heap,2
- tst r4,r4
+ lao SCRATCH_REG,d3_flag_write_heap,2
+ ldo BSTACK_0,SCRATCH_REG,d3_flag_write_heap,2
+ tst BSTACK_0,BSTACK_0
bne copy_to_compact_with_alloc_in_extra_heap
- lao r4,garbage_collect_flag,6
- ldosb r4,r4,garbage_collect_flag,6
+ lao BSTACK_0,garbage_collect_flag,6
+ ldosb BSTACK_0,BSTACK_0,garbage_collect_flag,6
- lao r12,heap2_begin_and_end,1
- ldo r6,r12,heap2_begin_and_end,1
- laol r12,heap2_begin_and_end+4,heap2_begin_and_end_o_4,0
- ldo r7,r12,heap2_begin_and_end_o_4,0
+ lao SCRATCH_REG,heap2_begin_and_end,1
+ ldo ASTACK_0,SCRATCH_REG,heap2_begin_and_end,1
+ laol SCRATCH_REG,heap2_begin_and_end+4,heap2_begin_and_end_o_4,0
+ ldo ASTACK_1,SCRATCH_REG,heap2_begin_and_end_o_4,0
- lao r3,heap_p1,7
- otoa r3,heap_p1,7
+ lao BSTACK_1,heap_p1,7
+ otoa BSTACK_1,heap_p1,7
- tst r4,r4
+ tst BSTACK_0,BSTACK_0
beq gc0
- lao r3,heap_p2,6
- otoa r3,heap_p2,6
+ lao BSTACK_1,heap_p2,6
+ otoa BSTACK_1,heap_p2,6
bgt gc1
- lao r3,heap_p3,4
- otoa r3,heap_p3,4
- mov r6,#0
- mov r7,#0
+ lao BSTACK_1,heap_p3,4
+ otoa BSTACK_1,heap_p3,4
+ mov ASTACK_0,#0
+ mov ASTACK_1,#0
gc0:
gc1:
- ldr r3,[r3]
+ ldr BSTACK_1,[BSTACK_1]
? /* fill record */
- mov r4,sp
+ mov BSTACK_0,sp
- str r3,[r4,#0]
+ str BSTACK_1,[BSTACK_0,#0]
? movl a4,4(d0) // klop dit?
? movl a0,8(d0) // heap2_begin
? movl a1,12(d0) // heap2_end
- lao r12,stack_p,3
- ldo r3,r12,stack_p,3
+ lao SCRATCH_REG,stack_p,3
+ ldo BSTACK_1,SCRATCH_REG,stack_p,3
? movl d1,16(d0) // stack_begin
? movl a3,20(d0) // stack_end
@@ -2587,22 +2580,22 @@ gc1:
? movl $__STRING__+2,56(d0) // STRING-descP
? movl $__ARRAY__+2,60(d0) // ARRAY-descP
- str r4,[sp,#-4]!
+ str BSTACK_0,[sp,#-4]!
bl write_heap
add sp,sp,#68
- ldr r10,[sp],#4
- ldr r9,[sp],#4
- ldr r8,[sp],#4
- ldr r7,[sp],#4
- ldr r6,[sp],#4
+ ldr HEAP_PTR,[sp],#4
+ ldr ASTACK_PTR,[sp],#4
+ ldr ASTACK_2,[sp],#4
+ ldr ASTACK_1,[sp],#4
+ ldr ASTACK_0,[sp],#4
.thumb_func
no_write_heap:
.endif
- ldmia sp!,{r0-r4,pc}
+ ldmia sp!,{BSTACK_4-BSTACK_0,pc}
.ifdef PIC
.if MARK_AND_COPY_GC
@@ -2723,43 +2716,43 @@ no_write_heap:
.if FINALIZERS
.thumb_func
call_finalizers:
- lao r12,free_finalizer_list,1
- ldo r4,r12,free_finalizer_list,1
+ lao SCRATCH_REG,free_finalizer_list,1
+ ldo BSTACK_0,SCRATCH_REG,free_finalizer_list,1
.thumb_func
call_finalizers_lp:
- laol r12,__Nil-4,__Nil_o_m4,1
- otoa r12,__Nil_o_m4,1
- cmp r4,r12
+ laol SCRATCH_REG,__Nil-4,__Nil_o_m4,1
+ otoa SCRATCH_REG,__Nil_o_m4,1
+ cmp BSTACK_0,SCRATCH_REG
beq end_call_finalizers
- ldr r12,[r4,#4]
- str r12,[sp,#-4]!
- ldr r3,[r4,#8]
- ldr r12,[r3,#4]
- str r12,[sp,#-4]!
- ldr r12,[r3]
- blx r12
+ ldr SCRATCH_REG,[BSTACK_0,#4]
+ str SCRATCH_REG,[sp,#-4]!
+ ldr BSTACK_1,[BSTACK_0,#8]
+ ldr SCRATCH_REG,[BSTACK_1,#4]
+ str SCRATCH_REG,[sp,#-4]!
+ ldr SCRATCH_REG,[BSTACK_1]
+ blx SCRATCH_REG
add sp,sp,#4
- ldr r4,[sp],#4
+ ldr BSTACK_0,[sp],#4
b call_finalizers_lp
.thumb_func
end_call_finalizers:
- lao r12,free_finalizer_list,2
- laol r11,__Nil-4,__Nil_o_m4,2
- otoa r11,__Nil_o_m4,2
- sto r11,r12,free_finalizer_list,2
+ lao SCRATCH_REG,free_finalizer_list,2
+ laol ASTACK_3,__Nil-4,__Nil_o_m4,2
+ otoa ASTACK_3,__Nil_o_m4,2
+ sto ASTACK_3,SCRATCH_REG,free_finalizer_list,2
ldr pc,[sp],#4
.endif
.if WRITE_HEAP
.thumb_func
copy_to_compact_with_alloc_in_extra_heap:
- lao r12,heap2_begin_and_end,2
- ldo r6,r12,heap2_begin_and_end,2
- laol r12,heap2_begin_and_end+4,heap2_begin_and_end_o_4,1
- ldo r7,r12,heap2_begin_and_end_o_4,1
- lao r3,heap_p2,7
- otoa r3,heap_p2,7
+ lao SCRATCH_REG,heap2_begin_and_end,2
+ ldo ASTACK_0,SCRATCH_REG,heap2_begin_and_end,2
+ laol SCRATCH_REG,heap2_begin_and_end+4,heap2_begin_and_end_o_4,1
+ ldo ASTACK_1,SCRATCH_REG,heap2_begin_and_end_o_4,1
+ lao BSTACK_1,heap_p2,7
+ otoa BSTACK_1,heap_p2,7
b gc1
.endif
@@ -2769,91 +2762,91 @@ out_of_memory_4:
str lr,[sp,#-4]!
bl add_garbage_collect_time
- lao r8,out_of_memory_string_4,0
- otoa r8,out_of_memory_string_4,0
+ lao ASTACK_2,out_of_memory_string_4,0
+ otoa ASTACK_2,out_of_memory_string_4,0
b print_error
.thumb_func
zero_bit_vector:
- eor r7,r7,r7
- tst r4,#1
+ eor ASTACK_1,ASTACK_1,ASTACK_1
+ tst BSTACK_0,#1
beq zero_bits1_1
- str r7,[r8]
- add r8,r8,#4
+ str ASTACK_1,[ASTACK_2]
+ add ASTACK_2,ASTACK_2,#4
zero_bits1_1:
- lsr r4,r4,#1
+ lsr BSTACK_0,BSTACK_0,#1
- mov r3,r4
- lsr r4,r4,#1
- tst r3,#1
+ mov BSTACK_1,BSTACK_0
+ lsr BSTACK_0,BSTACK_0,#1
+ tst BSTACK_1,#1
beq zero_bits1_5
- subs r8,r8,#8
+ subs ASTACK_2,ASTACK_2,#8
b zero_bits1_2
zero_bits1_4:
- str r7,[r8]
- str r7,[r8,#4]
+ str ASTACK_1,[ASTACK_2]
+ str ASTACK_1,[ASTACK_2,#4]
zero_bits1_2:
- str r7,[r8,#8]
- str r7,[r8,#12]
- add r8,r8,#16
+ str ASTACK_1,[ASTACK_2,#8]
+ str ASTACK_1,[ASTACK_2,#12]
+ add ASTACK_2,ASTACK_2,#16
zero_bits1_5:
- subs r4,r4,#1
+ subs BSTACK_0,BSTACK_0,#1
bhs zero_bits1_4
ldr pc,[sp],#4
.thumb_func
reorder:
- str r9,[sp,#-4]!
- str r8,[sp,#-4]!
-
- mov r8,r4
- lsl r8,r8,#2
- mov r9,r3
- lsl r9,r9,#2
- add r6,r6,r9
- subs r7,r7,r8
-
- str r9,[sp,#-4]!
- str r8,[sp,#-4]!
- str r3,[sp,#-4]!
- str r4,[sp,#-4]!
+ str ASTACK_PTR,[sp,#-4]!
+ str ASTACK_2,[sp,#-4]!
+
+ mov ASTACK_2,BSTACK_0
+ lsl ASTACK_2,ASTACK_2,#2
+ mov ASTACK_PTR,BSTACK_1
+ lsl ASTACK_PTR,ASTACK_PTR,#2
+ add ASTACK_0,ASTACK_0,ASTACK_PTR
+ subs ASTACK_1,ASTACK_1,ASTACK_2
+
+ str ASTACK_PTR,[sp,#-4]!
+ str ASTACK_2,[sp,#-4]!
+ str BSTACK_1,[sp,#-4]!
+ str BSTACK_0,[sp,#-4]!
b st_reorder_lp
.thumb_func
reorder_lp:
- ldr r8,[r6]
- ldr r9,[r7,#-4]
- str r8,[r7,#-4]
- subs r7,r7,#4
- str r9,[r6]
- add r6,r6,#4
-
- subs r4,r4,#1
+ ldr ASTACK_2,[ASTACK_0]
+ ldr ASTACK_PTR,[ASTACK_1,#-4]
+ str ASTACK_2,[ASTACK_1,#-4]
+ subs ASTACK_1,ASTACK_1,#4
+ str ASTACK_PTR,[ASTACK_0]
+ add ASTACK_0,ASTACK_0,#4
+
+ subs BSTACK_0,BSTACK_0,#1
bne next_b_in_element
- ldr r4,[sp]
- ldr r12,[sp,#12]
- add r6,r6,r12
+ ldr BSTACK_0,[sp]
+ ldr SCRATCH_REG,[sp,#12]
+ add ASTACK_0,ASTACK_0,SCRATCH_REG
.thumb_func
next_b_in_element:
- subs r3,r3,#1
+ subs BSTACK_1,BSTACK_1,#1
bne next_a_in_element
- ldr r3,[sp,#4]
- ldr r12,[sp,#8]
- subs r7,r7,r12
+ ldr BSTACK_1,[sp,#4]
+ ldr SCRATCH_REG,[sp,#8]
+ subs ASTACK_1,ASTACK_1,SCRATCH_REG
.thumb_func
next_a_in_element:
.thumb_func
st_reorder_lp:
- cmp r7,r6
+ cmp ASTACK_1,ASTACK_0
bhi reorder_lp
- ldr r4,[sp],#4
- ldr r3,[sp],#4
+ ldr BSTACK_0,[sp],#4
+ ldr BSTACK_1,[sp],#4
add sp,sp,#8
- ldr r8,[sp],#4
- ldr r9,[sp],#4
+ ldr ASTACK_2,[sp],#4
+ ldr ASTACK_PTR,[sp],#4
ldr pc,[sp],#4
@
@@ -2864,110 +2857,110 @@ st_reorder_lp:
compacting_collector:
@ zero all mark bits
- lao r12,stack_top,0
- sto r9,r12,stack_top,0
+ lao SCRATCH_REG,stack_top,0
+ sto ASTACK_PTR,SCRATCH_REG,stack_top,0
- lao r12,heap_vector,4
- ldo r10,r12,heap_vector,4
+ lao SCRATCH_REG,heap_vector,4
+ ldo HEAP_PTR,SCRATCH_REG,heap_vector,4
.if MARK_GC
.if MARK_AND_COPY_GC
- lao r12,flags,11
- ldo r12,r12,flags,11
- tst r12,#64
+ lao SCRATCH_REG,flags,11
+ ldo SCRATCH_REG,SCRATCH_REG,flags,11
+ tst SCRATCH_REG,#64
beq no_mark4
.endif
- lao r12,zero_bits_before_mark,0
- otoa r12,zero_bits_before_mark,0
- ldr r11,[r12]
- cmp r11,#0
+ lao SCRATCH_REG,zero_bits_before_mark,0
+ otoa SCRATCH_REG,zero_bits_before_mark,0
+ ldr ASTACK_3,[SCRATCH_REG]
+ cmp ASTACK_3,#0
beq no_zero_bits
- mov r11,#0
- str r11,[r12]
+ mov ASTACK_3,#0
+ str ASTACK_3,[SCRATCH_REG]
.if MARK_AND_COPY_GC
no_mark4:
.endif
.endif
- mov r8,r10
- lao r12,heap_size_33,3
- ldo r4,r12,heap_size_33,3
- add r4,r4,#3
- lsr r4,r4,#2
+ mov ASTACK_2,HEAP_PTR
+ lao SCRATCH_REG,heap_size_33,3
+ ldo BSTACK_0,SCRATCH_REG,heap_size_33,3
+ add BSTACK_0,BSTACK_0,#3
+ lsr BSTACK_0,BSTACK_0,#2
- mov r3,#0
+ mov BSTACK_1,#0
- tst r4,#1
+ tst BSTACK_0,#1
beq zero_bits_1
- str r3,[r8],#4
+ str BSTACK_1,[ASTACK_2],#4
zero_bits_1:
- mov r6,r4
- lsr r4,r4,#2
+ mov ASTACK_0,BSTACK_0
+ lsr BSTACK_0,BSTACK_0,#2
- tst r6,#2
+ tst ASTACK_0,#2
beq zero_bits_5
- subs r8,r8,#8
+ subs ASTACK_2,ASTACK_2,#8
b zero_bits_2
zero_bits_4:
- str r3,[r8]
- str r3,[r8,#4]
+ str BSTACK_1,[ASTACK_2]
+ str BSTACK_1,[ASTACK_2,#4]
zero_bits_2:
- str r3,[r8,#8]
- str r3,[r8,#12]
- add r8,r8,#16
+ str BSTACK_1,[ASTACK_2,#8]
+ str BSTACK_1,[ASTACK_2,#12]
+ add ASTACK_2,ASTACK_2,#16
zero_bits_5:
- subs r4,r4,#1
+ subs BSTACK_0,BSTACK_0,#1
bcs zero_bits_4
.if MARK_GC
.if MARK_AND_COPY_GC
- lao r12,flags,12
- ldo r12,r12,flags,12
- tst r12,#64
+ lao SCRATCH_REG,flags,12
+ ldo SCRATCH_REG,SCRATCH_REG,flags,12
+ tst SCRATCH_REG,#64
beq no_mark5
.endif
.thumb_func
no_zero_bits:
- lao r12,n_last_heap_free_bytes,0
- ldo r4,r12,n_last_heap_free_bytes,0
- lao r12,n_free_words_after_mark,3
- ldo r3,r12,n_free_words_after_mark,3
+ lao SCRATCH_REG,n_last_heap_free_bytes,0
+ ldo BSTACK_0,SCRATCH_REG,n_last_heap_free_bytes,0
+ lao SCRATCH_REG,n_free_words_after_mark,3
+ ldo BSTACK_1,SCRATCH_REG,n_free_words_after_mark,3
.if 1
- lsr r4,r4,#2
+ lsr BSTACK_0,BSTACK_0,#2
.else
- lsl r3,r3,#2
+ lsl BSTACK_1,BSTACK_1,#2
.endif
- add r8,r3,r3,lsl #3
- lsr r8,r8,#2
+ add ASTACK_2,BSTACK_1,BSTACK_1,lsl #3
+ lsr ASTACK_2,ASTACK_2,#2
- cmp r4,r8
+ cmp BSTACK_0,ASTACK_2
bgt compact_gc
.if ADJUST_HEAP_SIZE
- lao r12,bit_vector_size,1
- ldo r3,r12,bit_vector_size,1
- lsl r3,r3,#2
-
- sub r4,r3,r4
-
- lao r12,heap_size_multiple,1
- ldo r12,r12,heap_size_multiple,1
- umull r4,r7,r12,r4
- lsr r4,r4,#7
- orr r4,r4,r7,lsl #32-7
- lsrs r7,r7,#7
+ lao SCRATCH_REG,bit_vector_size,1
+ ldo BSTACK_1,SCRATCH_REG,bit_vector_size,1
+ lsl BSTACK_1,BSTACK_1,#2
+
+ sub BSTACK_0,BSTACK_1,BSTACK_0
+
+ lao SCRATCH_REG,heap_size_multiple,1
+ ldo SCRATCH_REG,SCRATCH_REG,heap_size_multiple,1
+ umull BSTACK_0,ASTACK_1,SCRATCH_REG,BSTACK_0
+ lsr BSTACK_0,BSTACK_0,#7
+ orr BSTACK_0,BSTACK_0,ASTACK_1,lsl #32-7
+ lsrs ASTACK_1,ASTACK_1,#7
bne no_smaller_heap
- cmp r4,r3
+ cmp BSTACK_0,BSTACK_1
bhs no_smaller_heap
- cmp r3,#MINIMUM_HEAP_SIZE
+ cmp BSTACK_1,#MINIMUM_HEAP_SIZE
bls no_smaller_heap
b compact_gc
@@ -2985,15 +2978,15 @@ no_smaller_heap:
.thumb_func
compact_gc:
- lao r12,zero_bits_before_mark,1
- mov r11,#1
- sto r11,r12,zero_bits_before_mark,1
- lao r12,n_last_heap_free_bytes,1
- mov r11,#0
- sto r11,r12,n_last_heap_free_bytes,1
- lao r12,n_free_words_after_mark,4
- mov r11,#1000
- sto r11,r12,n_free_words_after_mark,4
+ lao SCRATCH_REG,zero_bits_before_mark,1
+ mov ASTACK_3,#1
+ sto ASTACK_3,SCRATCH_REG,zero_bits_before_mark,1
+ lao SCRATCH_REG,n_last_heap_free_bytes,1
+ mov ASTACK_3,#0
+ sto ASTACK_3,SCRATCH_REG,n_last_heap_free_bytes,1
+ lao SCRATCH_REG,n_free_words_after_mark,4
+ mov ASTACK_3,#1000
+ sto ASTACK_3,SCRATCH_REG,n_free_words_after_mark,4
.if MARK_AND_COPY_GC
no_mark5:
.endif
@@ -3001,36 +2994,36 @@ no_mark5:
.include "thumb2compact.s"
- lao r12,stack_top,1
- ldo r9,r12,stack_top,1
+ lao SCRATCH_REG,stack_top,1
+ ldo ASTACK_PTR,SCRATCH_REG,stack_top,1
- lao r12,heap_size_33,4
- ldo r3,r12,heap_size_33,4
- lsl r3,r3,#5
- lao r12,heap_p3,5
- ldo r12,r12,heap_p3,5
- add r3,r3,r12
+ lao SCRATCH_REG,heap_size_33,4
+ ldo BSTACK_1,SCRATCH_REG,heap_size_33,4
+ lsl BSTACK_1,BSTACK_1,#5
+ lao SCRATCH_REG,heap_p3,5
+ ldo SCRATCH_REG,SCRATCH_REG,heap_p3,5
+ add BSTACK_1,BSTACK_1,SCRATCH_REG
- lao r12,heap_end_after_gc,7
- sto r3,r12,heap_end_after_gc,7
+ lao SCRATCH_REG,heap_end_after_gc,7
+ sto BSTACK_1,SCRATCH_REG,heap_end_after_gc,7
- subs r3,r3,r10
- lsr r3,r3,#2
+ subs BSTACK_1,BSTACK_1,HEAP_PTR
+ lsr BSTACK_1,BSTACK_1,#2
- lao r12,n_allocated_words,4
- ldo r12,r12,n_allocated_words,4
- subs r3,r3,r12
- mov r5,r3
+ lao SCRATCH_REG,n_allocated_words,4
+ ldo SCRATCH_REG,SCRATCH_REG,n_allocated_words,4
+ subs BSTACK_1,BSTACK_1,SCRATCH_REG
+ mov HEAP_FREE,BSTACK_1
bcc out_of_memory_4
- ldr r12,=107374182
- cmp r3,r12
+ ldr SCRATCH_REG,=107374182
+ cmp BSTACK_1,SCRATCH_REG
bhs not_out_of_memory
- add r4,r3,r3,lsl #2
- lsl r4,r4,#3
- lao r12,heap_size,7
- ldo r12,r12,heap_size,7
- cmp r4,r12
+ add BSTACK_0,BSTACK_1,BSTACK_1,lsl #2
+ lsl BSTACK_0,BSTACK_0,#3
+ lao SCRATCH_REG,heap_size,7
+ ldo SCRATCH_REG,SCRATCH_REG,heap_size,7
+ cmp BSTACK_0,SCRATCH_REG
bcc out_of_memory_4
.thumb_func
not_out_of_memory:
@@ -3038,55 +3031,55 @@ not_out_of_memory:
.if MARK_GC || COMPACT_GC_ONLY
.if MARK_GC && ADJUST_HEAP_SIZE
.if MARK_AND_COPY_GC
- lao r12,flags,13
- ldo r12,r12,flags,13
- tst r12,#64
+ lao SCRATCH_REG,flags,13
+ ldo SCRATCH_REG,SCRATCH_REG,flags,13
+ tst SCRATCH_REG,#64
beq no_mark_6
.endif
- lao r12,heap_p3,6
- ldo r4,r12,heap_p3,6
- sub r4,r10,r4
- lao r12,n_allocated_words,5
- ldo r3,r12,n_allocated_words,5
- add r4,r4,r3,lsl #2
-
- lao r12,heap_size_33,5
- ldo r3,r12,heap_size_33,5
- lsl r3,r3,#5
-
- lao r12,heap_size_multiple,2
- ldo r12,r12,heap_size_multiple,2
- umull r4,r7,r12,r4
- lsr r4,r4,#8
- orr r4,r4,r7,lsl #32-8
- lsrs r7,r7,#8
+ lao SCRATCH_REG,heap_p3,6
+ ldo BSTACK_0,SCRATCH_REG,heap_p3,6
+ sub BSTACK_0,HEAP_PTR,BSTACK_0
+ lao SCRATCH_REG,n_allocated_words,5
+ ldo BSTACK_1,SCRATCH_REG,n_allocated_words,5
+ add BSTACK_0,BSTACK_0,BSTACK_1,lsl #2
+
+ lao SCRATCH_REG,heap_size_33,5
+ ldo BSTACK_1,SCRATCH_REG,heap_size_33,5
+ lsl BSTACK_1,BSTACK_1,#5
+
+ lao SCRATCH_REG,heap_size_multiple,2
+ ldo SCRATCH_REG,SCRATCH_REG,heap_size_multiple,2
+ umull BSTACK_0,ASTACK_1,SCRATCH_REG,BSTACK_0
+ lsr BSTACK_0,BSTACK_0,#8
+ orr BSTACK_0,BSTACK_0,ASTACK_1,lsl #32-8
+ lsrs ASTACK_1,ASTACK_1,#8
bne no_small_heap2
- and r4,r4,#-4
+ and BSTACK_0,BSTACK_0,#-4
- cmp r4,#MINIMUM_HEAP_SIZE
+ cmp BSTACK_0,#MINIMUM_HEAP_SIZE
bhs not_too_small2
- mov r4,#MINIMUM_HEAP_SIZE
+ mov BSTACK_0,#MINIMUM_HEAP_SIZE
not_too_small2:
- mov r6,r3
- subs r6,r6,r4
+ mov ASTACK_0,BSTACK_1
+ subs ASTACK_0,ASTACK_0,BSTACK_0
blo no_small_heap2
- lao r12,heap_end_after_gc,8
- otoa r12,heap_end_after_gc,8
- ldr r11,[r12]
- sub r11,r11,r6
- str r11,[r12]
+ lao SCRATCH_REG,heap_end_after_gc,8
+ otoa SCRATCH_REG,heap_end_after_gc,8
+ ldr ASTACK_3,[SCRATCH_REG]
+ sub ASTACK_3,ASTACK_3,ASTACK_0
+ str ASTACK_3,[SCRATCH_REG]
- sub r5,r5,r6,lsr #2
+ sub HEAP_FREE,HEAP_FREE,ASTACK_0,lsr #2
- mov r3,r4
+ mov BSTACK_1,BSTACK_0
no_small_heap2:
- lsr r3,r3,#2
- lao r12,bit_vector_size,2
- sto r3,r12,bit_vector_size,2
+ lsr BSTACK_1,BSTACK_1,#2
+ lao SCRATCH_REG,bit_vector_size,2
+ sto BSTACK_1,SCRATCH_REG,bit_vector_size,2
.if MARK_AND_COPY_GC
no_mark_6:
@@ -3095,58 +3088,58 @@ no_mark_6:
b no_copy_garbage_collection
.else
@ to do prevent overflow
- lsl r4,r4,#2
- lao r12,heap_size,8
- ldo r12,r12,heap_size,8
- lsl r6,r12,#5
- sub r6,r6,r12
- cmp r4,r6
+ lsl BSTACK_0,BSTACK_0,#2
+ lao SCRATCH_REG,heap_size,8
+ ldo SCRATCH_REG,SCRATCH_REG,heap_size,8
+ lsl ASTACK_0,SCRATCH_REG,#5
+ sub ASTACK_0,ASTACK_0,SCRATCH_REG
+ cmp BSTACK_0,ASTACK_0
ble no_copy_garbage_collection
- lao r12,heap_p,2
- ldo r4,r12,heap_p,2
- lao r12,heap_p1,8
- sto r4,r12,heap_p1,8
-
- lao r12,heap_size_129,3
- lto r3,r12,heap_size_129,3
- lsl r3,r3,#6
- add r4,r4,r3
- lao r12,heap_copied_vector,3
- sto r4,r12,heap_copied_vector,3
- lao r12,heap_end_after_gc,9
- sto r4,r12,heap_end_after_gc,9
- lao r12,heap_copied_vector_size,4
- ldo r3,r12,heap_copied_vector_size,4
- add r3,r3,r4
- lao r12,heap_p2,8
- sto r3,r12,heap_p2,8
-
- lao r12,heap_p3,7
- ldo r4,r12,heap_p3,7
- lao r12,heap_vector,5
- ldo r12,r12,heap_vector,5
- cmp r4,r12
+ lao SCRATCH_REG,heap_p,2
+ ldo BSTACK_0,SCRATCH_REG,heap_p,2
+ lao SCRATCH_REG,heap_p1,8
+ sto BSTACK_0,SCRATCH_REG,heap_p1,8
+
+ lao SCRATCH_REG,heap_size_129,3
+ lto BSTACK_1,SCRATCH_REG,heap_size_129,3
+ lsl BSTACK_1,BSTACK_1,#6
+ add BSTACK_0,BSTACK_0,BSTACK_1
+ lao SCRATCH_REG,heap_copied_vector,3
+ sto BSTACK_0,SCRATCH_REG,heap_copied_vector,3
+ lao SCRATCH_REG,heap_end_after_gc,9
+ sto BSTACK_0,SCRATCH_REG,heap_end_after_gc,9
+ lao SCRATCH_REG,heap_copied_vector_size,4
+ ldo BSTACK_1,SCRATCH_REG,heap_copied_vector_size,4
+ add BSTACK_1,BSTACK_1,BSTACK_0
+ lao SCRATCH_REG,heap_p2,8
+ sto BSTACK_1,SCRATCH_REG,heap_p2,8
+
+ lao SCRATCH_REG,heap_p3,7
+ ldo BSTACK_0,SCRATCH_REG,heap_p3,7
+ lao SCRATCH_REG,heap_vector,5
+ ldo SCRATCH_REG,SCRATCH_REG,heap_vector,5
+ cmp BSTACK_0,SCRATCH_REG
ble vector_at_end_2
- lao r12,heap_vector,6
- ldo r3,r12,heap_vector,6
- lao r12,extra_heap,4
- sto r3,r12,extra_heap,4
- subs r4,r4,r3
- lsr r4,r4,#2
- lao r12,extra_heap_size,4
- sto r4,r12,extra_heap_size,4
-
- lao r12,garbage_collect_flag,7
- mov r11,#2
- stob r11,r12,garbage_collect_flag,7
+ lao SCRATCH_REG,heap_vector,6
+ ldo BSTACK_1,SCRATCH_REG,heap_vector,6
+ lao SCRATCH_REG,extra_heap,4
+ sto BSTACK_1,SCRATCH_REG,extra_heap,4
+ subs BSTACK_0,BSTACK_0,BSTACK_1
+ lsr BSTACK_0,BSTACK_0,#2
+ lao SCRATCH_REG,extra_heap_size,4
+ sto BSTACK_0,SCRATCH_REG,extra_heap_size,4
+
+ lao SCRATCH_REG,garbage_collect_flag,7
+ mov ASTACK_3,#2
+ stob ASTACK_3,SCRATCH_REG,garbage_collect_flag,7
b no_copy_garbage_collection
vector_at_end_2:
- lao r12,garbage_collect_flag,8
- mov r11,#0
- stob r11,r12,garbage_collect_flag,8
+ lao SCRATCH_REG,garbage_collect_flag,8
+ mov ASTACK_3,#0
+ stob ASTACK_3,SCRATCH_REG,garbage_collect_flag,8
.endif
.thumb_func
@@ -3156,13 +3149,13 @@ no_copy_garbage_collection:
str lr,[sp,#-4]!
bl add_garbage_collect_time
- mov r4,r10
- lao r12,heap_p3,8
- ldo r12,r12,heap_p3,8
- subs r4,r4,r12
- lao r12,n_allocated_words,6
- ldo r3,r12,n_allocated_words,6
- add r4,r4,r3,lsl #2
+ mov BSTACK_0,HEAP_PTR
+ lao SCRATCH_REG,heap_p3,8
+ ldo SCRATCH_REG,SCRATCH_REG,heap_p3,8
+ subs BSTACK_0,BSTACK_0,SCRATCH_REG
+ lao SCRATCH_REG,n_allocated_words,6
+ ldo BSTACK_1,SCRATCH_REG,n_allocated_words,6
+ add BSTACK_0,BSTACK_0,BSTACK_1,lsl #2
b end_garbage_collect
.thumb_func
@@ -3172,35 +3165,35 @@ stack_overflow:
str lr,[sp,#-4]!
bl add_execute_time
- lao r8,stack_overflow_string,0
- otoa r8,stack_overflow_string,0
+ lao ASTACK_2,stack_overflow_string,0
+ otoa ASTACK_2,stack_overflow_string,0
b print_error
IO_error:
- str r0,[sp]
+ str BSTACK_4,[sp]
- lao r0,IO_error_string,0
- otoa r0,IO_error_string,0
+ lao BSTACK_4,IO_error_string,0
+ otoa BSTACK_4,IO_error_string,0
bl ew_print_string
- ldr r0,[sp],#4
+ ldr BSTACK_4,[sp],#4
bl ew_print_string
- lao r0,new_line_string,0
- otoa r0,new_line_string,0
+ lao BSTACK_4,new_line_string,0
+ otoa BSTACK_4,new_line_string,0
bl ew_print_string
b halt
.thumb_func
print_error:
- mov r0,r8
+ mov BSTACK_4,ASTACK_2
bl ew_print_string
.thumb_func
halt:
- lao r12,halt_sp,3
- ldo sp,r12,halt_sp,3
+ lao SCRATCH_REG,halt_sp,3
+ ldo sp,SCRATCH_REG,halt_sp,3
.ifdef PROFILE
.align
@@ -3260,22 +3253,22 @@ halt:
e__system__eaind:
.thumb_func
eval_fill:
- str r6,[r9],#4
- mov r6,r7
- ldr r12,[r7]
+ str ASTACK_0,[ASTACK_PTR],#4
+ mov ASTACK_0,ASTACK_1
+ ldr SCRATCH_REG,[ASTACK_1]
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r12
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- ldr r8,[r7]
- str r8,[r6]
- ldr r8,[r7,#4]
- str r8,[r6,#4]
- ldr r8,[r7,#8]
- str r8,[r6,#8]
+ blx SCRATCH_REG
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ ldr ASTACK_2,[ASTACK_1]
+ str ASTACK_2,[ASTACK_0]
+ ldr ASTACK_2,[ASTACK_1,#4]
+ str ASTACK_2,[ASTACK_0,#4]
+ ldr ASTACK_2,[ASTACK_1,#8]
+ str ASTACK_2,[ASTACK_0,#8]
ldr pc,[sp],#4
.p2align 2
@@ -3292,49 +3285,49 @@ eval_fill:
e__system__nind:
.thumb_func
__indirection:
- ldr r7,[r6,#4]
- ldr r4,[r7]
- tst r4,#2
+ ldr ASTACK_1,[ASTACK_0,#4]
+ ldr BSTACK_0,[ASTACK_1]
+ tst BSTACK_0,#2
.if MARK_GC
beq eval_fill2
.else
beq __cycle__in__spine
.endif
- str r4,[r6]
- ldr r8,[r7,#4]
- str r8,[r6,#4]
- ldr r8,[r7,#8]
- str r8,[r6,#8]
+ str BSTACK_0,[ASTACK_0]
+ ldr ASTACK_2,[ASTACK_1,#4]
+ str ASTACK_2,[ASTACK_0,#4]
+ ldr ASTACK_2,[ASTACK_1,#8]
+ str ASTACK_2,[ASTACK_0,#8]
ldr pc,[sp],#4
.if MARK_GC
eval_fill2:
- lao r12,__cycle__in__spine,0
- otoa r12,__cycle__in__spine,0
- str r12,[r6]
- str r6,[r9]
+ lao SCRATCH_REG,__cycle__in__spine,0
+ otoa SCRATCH_REG,__cycle__in__spine,0
+ str SCRATCH_REG,[ASTACK_0]
+ str ASTACK_0,[ASTACK_PTR]
.if MARK_AND_COPY_GC
- lao r12,flags,14
- ldo r12,r12,flags,14
- tst r12,#64
+ lao SCRATCH_REG,flags,14
+ ldo SCRATCH_REG,SCRATCH_REG,flags,14
+ tst SCRATCH_REG,#64
beq __cycle__in__spine
.endif
- add r9,r9,#4
- mov r6,r7
+ add ASTACK_PTR,ASTACK_PTR,#4
+ mov ASTACK_0,ASTACK_1
.align
add lr,pc,#7
str lr,[sp,#-4]!
- blx r4
- mov r7,r6
- ldr r6,[r9,#-4]!
-
- ldr r8,[r7]
- str r8,[r6]
- ldr r8,[r7,#4]
- str r8,[r6,#4]
- ldr r8,[r7,#8]
- str r8,[r6,#8]
+ blx BSTACK_0
+ mov ASTACK_1,ASTACK_0
+ ldr ASTACK_0,[ASTACK_PTR,#-4]!
+
+ ldr ASTACK_2,[ASTACK_1]
+ str ASTACK_2,[ASTACK_0]
+ ldr ASTACK_2,[ASTACK_1,#4]
+ str ASTACK_2,[ASTACK_0,#4]
+ ldr ASTACK_2,[ASTACK_1,#8]
+ str ASTACK_2,[ASTACK_0,#8]
ldr pc,[sp],#4
.endif
@@ -3343,182 +3336,182 @@ eval_fill2:
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_0:
- lao r12,e__system__nind,0
- otoa r12,e__system__nind,0
- str r12,[r7]
- str r6,[r7,#4]
- mov pc,r11
+ lao SCRATCH_REG,e__system__nind,0
+ otoa SCRATCH_REG,e__system__nind,0
+ str SCRATCH_REG,[ASTACK_1]
+ str ASTACK_0,[ASTACK_1,#4]
+ mov pc,ASTACK_3
.ifdef PROFILE
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_1:
- lao r12,e__system__nind,1
- otoa r12,e__system__nind,1
- str r12,[r7]
- ldr r4,[r7,#4]
- str r6,[r7,#4]
- mov r7,r4
- mov pc,r11
+ lao SCRATCH_REG,e__system__nind,1
+ otoa SCRATCH_REG,e__system__nind,1
+ str SCRATCH_REG,[ASTACK_1]
+ ldr BSTACK_0,[ASTACK_1,#4]
+ str ASTACK_0,[ASTACK_1,#4]
+ mov ASTACK_1,BSTACK_0
+ mov pc,ASTACK_3
.ifdef PROFILE
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_2:
- lao r12,e__system__nind,2
- otoa r12,e__system__nind,2
- str r12,[r7]
- ldr r8,[r7,#4]
- str r6,[r7,#4]
- ldr r7,[r7,#8]
- mov pc,r11
+ lao SCRATCH_REG,e__system__nind,2
+ otoa SCRATCH_REG,e__system__nind,2
+ str SCRATCH_REG,[ASTACK_1]
+ ldr ASTACK_2,[ASTACK_1,#4]
+ str ASTACK_0,[ASTACK_1,#4]
+ ldr ASTACK_1,[ASTACK_1,#8]
+ mov pc,ASTACK_3
.ifdef PROFILE
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_3:
- lao r12,e__system__nind,3
- otoa r12,e__system__nind,3
- str r12,[r7]
- ldr r8,[r7,#4]
- str r6,[r7,#4]
- str r6,[r9],#4
- ldr r6,[r7,#12]
- ldr r7,[r7,#8]
- mov pc,r11
+ lao SCRATCH_REG,e__system__nind,3
+ otoa SCRATCH_REG,e__system__nind,3
+ str SCRATCH_REG,[ASTACK_1]
+ ldr ASTACK_2,[ASTACK_1,#4]
+ str ASTACK_0,[ASTACK_1,#4]
+ str ASTACK_0,[ASTACK_PTR],#4
+ ldr ASTACK_0,[ASTACK_1,#12]
+ ldr ASTACK_1,[ASTACK_1,#8]
+ mov pc,ASTACK_3
.ifdef PROFILE
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_4:
- lao r12,e__system__nind,4
- otoa r12,e__system__nind,4
- str r12,[r7]
- ldr r8,[r7,#4]
- str r6,[r7,#4]
- str r6,[r9]
- ldr r3,[r7,#16]
- str r3,[r9,#4]
- add r9,r9,#8
- ldr r6,[r7,#12]
- ldr r7,[r7,#8]
- mov pc,r11
+ lao SCRATCH_REG,e__system__nind,4
+ otoa SCRATCH_REG,e__system__nind,4
+ str SCRATCH_REG,[ASTACK_1]
+ ldr ASTACK_2,[ASTACK_1,#4]
+ str ASTACK_0,[ASTACK_1,#4]
+ str ASTACK_0,[ASTACK_PTR]
+ ldr BSTACK_1,[ASTACK_1,#16]
+ str BSTACK_1,[ASTACK_PTR,#4]
+ add ASTACK_PTR,ASTACK_PTR,#8
+ ldr ASTACK_0,[ASTACK_1,#12]
+ ldr ASTACK_1,[ASTACK_1,#8]
+ mov pc,ASTACK_3
.ifdef PROFILE
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_5:
- lao r12,e__system__nind,5
- otoa r12,e__system__nind,5
- str r12,[r7]
- ldr r8,[r7,#4]
- str r6,[r9]
- str r6,[r7,#4]
- ldr r3,[r7,#20]
- str r3,[r9,#4]
- ldr r3,[r7,#16]
- str r3,[r9,#8]
- add r9,r9,#12
- ldr r6,[r7,#12]
- ldr r7,[r7,#8]
- mov pc,r11
+ lao SCRATCH_REG,e__system__nind,5
+ otoa SCRATCH_REG,e__system__nind,5
+ str SCRATCH_REG,[ASTACK_1]
+ ldr ASTACK_2,[ASTACK_1,#4]
+ str ASTACK_0,[ASTACK_PTR]
+ str ASTACK_0,[ASTACK_1,#4]
+ ldr BSTACK_1,[ASTACK_1,#20]
+ str BSTACK_1,[ASTACK_PTR,#4]
+ ldr BSTACK_1,[ASTACK_1,#16]
+ str BSTACK_1,[ASTACK_PTR,#8]
+ add ASTACK_PTR,ASTACK_PTR,#12
+ ldr ASTACK_0,[ASTACK_1,#12]
+ ldr ASTACK_1,[ASTACK_1,#8]
+ mov pc,ASTACK_3
.ifdef PROFILE
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_6:
- lao r12,e__system__nind,6
- otoa r12,e__system__nind,6
- str r12,[r7]
- ldr r8,[r7,#4]
- str r6,[r9]
- str r6,[r7,#4]
- ldr r3,[r7,#24]
- str r3,[r9,#4]
- ldr r3,[r7,#20]
- str r3,[r9,#8]
- ldr r3,[r7,#16]
- str r3,[r9,#12]
- add r9,r9,#16
- ldr r6,[r7,#12]
- ldr r7,[r7,#8]
- mov pc,r11
+ lao SCRATCH_REG,e__system__nind,6
+ otoa SCRATCH_REG,e__system__nind,6
+ str SCRATCH_REG,[ASTACK_1]
+ ldr ASTACK_2,[ASTACK_1,#4]
+ str ASTACK_0,[ASTACK_PTR]
+ str ASTACK_0,[ASTACK_1,#4]
+ ldr BSTACK_1,[ASTACK_1,#24]
+ str BSTACK_1,[ASTACK_PTR,#4]
+ ldr BSTACK_1,[ASTACK_1,#20]
+ str BSTACK_1,[ASTACK_PTR,#8]
+ ldr BSTACK_1,[ASTACK_1,#16]
+ str BSTACK_1,[ASTACK_PTR,#12]
+ add ASTACK_PTR,ASTACK_PTR,#16
+ ldr ASTACK_0,[ASTACK_1,#12]
+ ldr ASTACK_1,[ASTACK_1,#8]
+ mov pc,ASTACK_3
.ifdef PROFILE
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_7:
- mov r4,#0
- mov r3,#20
+ mov BSTACK_0,#0
+ mov BSTACK_1,#20
.thumb_func
eval_upd_n:
- lao r12,e__system__nind,7
- otoa r12,e__system__nind,7
- add r2,r7,r3
- str r12,[r7]
- ldr r8,[r7,#4]
- str r6,[r9]
- str r6,[r7,#4]
- ldr r3,[r2,#8]
- str r3,[r9,#4]
- ldr r3,[r2,#4]
- str r3,[r9,#8]
- ldr r3,[r2]
- str r3,[r9,#12]
- add r9,r9,#16
+ lao SCRATCH_REG,e__system__nind,7
+ otoa SCRATCH_REG,e__system__nind,7
+ add BSTACK_2,ASTACK_1,BSTACK_1
+ str SCRATCH_REG,[ASTACK_1]
+ ldr ASTACK_2,[ASTACK_1,#4]
+ str ASTACK_0,[ASTACK_PTR]
+ str ASTACK_0,[ASTACK_1,#4]
+ ldr BSTACK_1,[BSTACK_2,#8]
+ str BSTACK_1,[ASTACK_PTR,#4]
+ ldr BSTACK_1,[BSTACK_2,#4]
+ str BSTACK_1,[ASTACK_PTR,#8]
+ ldr BSTACK_1,[BSTACK_2]
+ str BSTACK_1,[ASTACK_PTR,#12]
+ add ASTACK_PTR,ASTACK_PTR,#16
.thumb_func
eval_upd_n_lp:
- ldr r3,[r2,#-4]!
- str r3,[r9],#4
- subs r4,r4,#1
+ ldr BSTACK_1,[BSTACK_2,#-4]!
+ str BSTACK_1,[ASTACK_PTR],#4
+ subs BSTACK_0,BSTACK_0,#1
bcs eval_upd_n_lp
- ldr r6,[r7,#12]
- ldr r7,[r7,#8]
- mov pc,r11
+ ldr ASTACK_0,[ASTACK_1,#12]
+ ldr ASTACK_1,[ASTACK_1,#8]
+ mov pc,ASTACK_3
.ifdef PROFILE
.align
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_8:
- mov r4,#1
- mov r3,#24
+ mov BSTACK_0,#1
+ mov BSTACK_1,#24
b eval_upd_n
.ifdef PROFILE
@@ -3526,11 +3519,11 @@ eval_upd_8:
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_9:
- mov r4,#2
- mov r3,#28
+ mov BSTACK_0,#2
+ mov BSTACK_1,#28
b eval_upd_n
.ifdef PROFILE
@@ -3538,11 +3531,11 @@ eval_upd_9:
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_10:
- mov r4,#3
- mov r3,#32
+ mov BSTACK_0,#3
+ mov BSTACK_1,#32
b eval_upd_n
.ifdef PROFILE
@@ -3550,11 +3543,11 @@ eval_upd_10:
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_11:
- mov r4,#4
- mov r3,#36
+ mov BSTACK_0,#4
+ mov BSTACK_1,#36
b eval_upd_n
.ifdef PROFILE
@@ -3562,11 +3555,11 @@ eval_upd_11:
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_12:
- mov r4,#5
- mov r3,#40
+ mov BSTACK_0,#5
+ mov BSTACK_1,#40
b eval_upd_n
.ifdef PROFILE
@@ -3574,11 +3567,11 @@ eval_upd_12:
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_13:
- mov r4,#6
- mov r3,#44
+ mov BSTACK_0,#6
+ mov BSTACK_1,#44
b eval_upd_n
.ifdef PROFILE
@@ -3586,11 +3579,11 @@ eval_upd_13:
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_14:
- mov r4,#7
- mov r3,#48
+ mov BSTACK_0,#7
+ mov BSTACK_1,#48
b eval_upd_n
.ifdef PROFILE
@@ -3598,11 +3591,11 @@ eval_upd_14:
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_15:
- mov r4,#8
- mov r3,#52
+ mov BSTACK_0,#8
+ mov BSTACK_1,#52
b eval_upd_n
.ifdef PROFILE
@@ -3610,11 +3603,11 @@ eval_upd_15:
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_16:
- mov r4,#9
- mov r3,#56
+ mov BSTACK_0,#9
+ mov BSTACK_1,#56
b eval_upd_n
.ifdef PROFILE
@@ -3622,11 +3615,11 @@ eval_upd_16:
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_17:
- mov r4,#10
- mov r3,#60
+ mov BSTACK_0,#10
+ mov BSTACK_1,#60
b eval_upd_n
.ifdef PROFILE
@@ -3634,11 +3627,11 @@ eval_upd_17:
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_18:
- mov r4,#11
- mov r3,#64
+ mov BSTACK_0,#11
+ mov BSTACK_1,#64
b eval_upd_n
.ifdef PROFILE
@@ -3646,11 +3639,11 @@ eval_upd_18:
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_19:
- mov r4,#12
- mov r3,#68
+ mov BSTACK_0,#12
+ mov BSTACK_1,#68
b eval_upd_n
.ifdef PROFILE
@@ -3658,11 +3651,11 @@ eval_upd_19:
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_20:
- mov r4,#13
- mov r3,#72
+ mov BSTACK_0,#13
+ mov BSTACK_1,#72
b eval_upd_n
.ifdef PROFILE
@@ -3670,11 +3663,11 @@ eval_upd_20:
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_21:
- mov r4,#14
- mov r3,#76
+ mov BSTACK_0,#14
+ mov BSTACK_1,#76
b eval_upd_n
.ifdef PROFILE
@@ -3682,11 +3675,11 @@ eval_upd_21:
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_22:
- mov r4,#15
- mov r3,#80
+ mov BSTACK_0,#15
+ mov BSTACK_1,#80
b eval_upd_n
.ifdef PROFILE
@@ -3694,11 +3687,11 @@ eval_upd_22:
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_23:
- mov r4,#16
- mov r3,#84
+ mov BSTACK_0,#16
+ mov BSTACK_1,#84
b eval_upd_n
.ifdef PROFILE
@@ -3706,11 +3699,11 @@ eval_upd_23:
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_24:
- mov r4,#17
- mov r3,#88
+ mov BSTACK_0,#17
+ mov BSTACK_1,#88
b eval_upd_n
.ifdef PROFILE
@@ -3718,11 +3711,11 @@ eval_upd_24:
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_25:
- mov r4,#18
- mov r3,#92
+ mov BSTACK_0,#18
+ mov BSTACK_1,#92
b eval_upd_n
.ifdef PROFILE
@@ -3730,11 +3723,11 @@ eval_upd_25:
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_26:
- mov r4,#19
- mov r3,#96
+ mov BSTACK_0,#19
+ mov BSTACK_1,#96
b eval_upd_n
.ifdef PROFILE
@@ -3742,11 +3735,11 @@ eval_upd_26:
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_27:
- mov r4,#20
- mov r3,#100
+ mov BSTACK_0,#20
+ mov BSTACK_1,#100
b eval_upd_n
.ifdef PROFILE
@@ -3754,11 +3747,11 @@ eval_upd_27:
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_28:
- mov r4,#21
- mov r3,#104
+ mov BSTACK_0,#21
+ mov BSTACK_1,#104
b eval_upd_n
.ifdef PROFILE
@@ -3766,11 +3759,11 @@ eval_upd_28:
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_29:
- mov r4,#22
- mov r3,#108
+ mov BSTACK_0,#22
+ mov BSTACK_1,#108
b eval_upd_n
.ifdef PROFILE
@@ -3778,11 +3771,11 @@ eval_upd_29:
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_30:
- mov r4,#23
- mov r3,#112
+ mov BSTACK_0,#23
+ mov BSTACK_1,#112
b eval_upd_n
.ifdef PROFILE
@@ -3790,11 +3783,11 @@ eval_upd_30:
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_31:
- mov r4,#24
- mov r3,#116
+ mov BSTACK_0,#24
+ mov BSTACK_1,#116
b eval_upd_n
.ifdef PROFILE
@@ -3802,11 +3795,11 @@ eval_upd_31:
add lr,pc,#9
str lr,[sp,#-4]!
bl profile_n
- mov r8,r4
+ mov ASTACK_2,BSTACK_0
.endif
eval_upd_32:
- mov r4,#25
- mov r3,#120
+ mov BSTACK_0,#25
+ mov BSTACK_1,#120
b eval_upd_n
@
@@ -3814,76 +3807,76 @@ eval_upd_32:
@
.section .text. (catAC)
catAC:
- ldr r4,[r6,#4]
- ldr r3,[r7,#4]
- add r8,r4,r3
- add r8,r8,#8+3
- lsr r8,r8,#2
+ ldr BSTACK_0,[ASTACK_0,#4]
+ ldr BSTACK_1,[ASTACK_1,#4]
+ add ASTACK_2,BSTACK_0,BSTACK_1
+ add ASTACK_2,ASTACK_2,#8+3
+ lsr ASTACK_2,ASTACK_2,#2
- subs r5,r5,r8
+ subs HEAP_FREE,HEAP_FREE,ASTACK_2
blo gc_3
gc_r_3:
- add r6,r6,#8
- add r7,r7,#8
+ add ASTACK_0,ASTACK_0,#8
+ add ASTACK_1,ASTACK_1,#8
@ fill_node
- str r10,[sp,#-4]!
- laol r12,__STRING__+2,__STRING___o_2,1
- otoa r12,__STRING___o_2,1
- str r12,[r10]
+ str HEAP_PTR,[sp,#-4]!
+ laol SCRATCH_REG,__STRING__+2,__STRING___o_2,1
+ otoa SCRATCH_REG,__STRING___o_2,1
+ str SCRATCH_REG,[HEAP_PTR]
@ store length
- add r8,r4,r3
- str r8,[r10,#4]
- add r10,r10,#8
+ add ASTACK_2,BSTACK_0,BSTACK_1
+ str ASTACK_2,[HEAP_PTR,#4]
+ add HEAP_PTR,HEAP_PTR,#8
@ copy string 1
- add r8,r3,#3
- add r3,r3,r10
- lsrs r8,r8,#2
+ add ASTACK_2,BSTACK_1,#3
+ add BSTACK_1,BSTACK_1,HEAP_PTR
+ lsrs ASTACK_2,ASTACK_2,#2
beq catAC_after_copy_lp1
catAC_copy_lp1:
- ldr r12,[r7],#4
- str r12,[r10],#4
- subs r8,r8,#1
+ ldr SCRATCH_REG,[ASTACK_1],#4
+ str SCRATCH_REG,[HEAP_PTR],#4
+ subs ASTACK_2,ASTACK_2,#1
bne catAC_copy_lp1
catAC_after_copy_lp1:
- mov r10,r3
+ mov HEAP_PTR,BSTACK_1
@ copy_string 2
cat_string_6:
- lsrs r8,r4,#2
+ lsrs ASTACK_2,BSTACK_0,#2
beq cat_string_9
cat_string_7:
- ldr r3,[r6],#4
+ ldr BSTACK_1,[ASTACK_0],#4
@ store not aligned
- str r3,[r10],#4
- subs r8,r8,#1
+ str BSTACK_1,[HEAP_PTR],#4
+ subs ASTACK_2,ASTACK_2,#1
bne cat_string_7
cat_string_9:
- tst r4,#2
+ tst BSTACK_0,#2
beq cat_string_10
- ldrh r3,[r6],#2
- strh r3,[r10],#2
+ ldrh BSTACK_1,[ASTACK_0],#2
+ strh BSTACK_1,[HEAP_PTR],#2
cat_string_10:
- tst r4,#1
+ tst BSTACK_0,#1
beq cat_string_11
- ldrb r3,[r6]
- strb r3,[r10],#1
+ ldrb BSTACK_1,[ASTACK_0]
+ strb BSTACK_1,[HEAP_PTR],#1
cat_string_11:
- ldr r6,[sp],#4
+ ldr ASTACK_0,[sp],#4
@ align heap pointer
- add r10,r10,#3
- and r10,r10,#-4
+ add HEAP_PTR,HEAP_PTR,#3
+ and HEAP_PTR,HEAP_PTR,#-4
ldr pc,[sp],#4
gc_3: bl collect_2
@@ -3891,8 +3884,8 @@ gc_3: bl collect_2
.thumb_func
empty_string:
- lao r6,zero_length_string,0
- otoa r6,zero_length_string,0
+ lao ASTACK_0,zero_length_string,0
+ otoa ASTACK_0,zero_length_string,0
ldr pc,[sp],#4
.ifdef PIC
@@ -3902,49 +3895,49 @@ empty_string:
.section .text.sliceAC,"ax"
sliceAC:
- ldr r8,[r6,#4]
- tst r3,r3
+ ldr ASTACK_2,[ASTACK_0,#4]
+ tst BSTACK_1,BSTACK_1
bpl slice_string_1
- mov r3,#0
+ mov BSTACK_1,#0
slice_string_1:
- cmp r3,r8
+ cmp BSTACK_1,ASTACK_2
bge empty_string
- cmp r4,r3
+ cmp BSTACK_0,BSTACK_1
blt empty_string
- add r4,r4,#1
- cmp r4,r8
+ add BSTACK_0,BSTACK_0,#1
+ cmp BSTACK_0,ASTACK_2
ble slice_string_2
- mov r4,r8
+ mov BSTACK_0,ASTACK_2
slice_string_2:
- subs r4,r4,r3
+ subs BSTACK_0,BSTACK_0,BSTACK_1
- add r8,r4,#8+3
- lsr r8,r8,#2
+ add ASTACK_2,BSTACK_0,#8+3
+ lsr ASTACK_2,ASTACK_2,#2
- subs r5,r5,r8
+ subs HEAP_FREE,HEAP_FREE,ASTACK_2
blo gc_4
r_gc_4:
- subs r8,r8,#2
- add r12,r6,#8
- add r7,r12,r3
+ subs ASTACK_2,ASTACK_2,#2
+ add SCRATCH_REG,ASTACK_0,#8
+ add ASTACK_1,SCRATCH_REG,BSTACK_1
- laol r12,__STRING__+2,__STRING___o_2,2
- otoa r12,__STRING___o_2,2
- str r12,[r10]
- str r4,[r10,#4]
+ laol SCRATCH_REG,__STRING__+2,__STRING___o_2,2
+ otoa SCRATCH_REG,__STRING___o_2,2
+ str SCRATCH_REG,[HEAP_PTR]
+ str BSTACK_0,[HEAP_PTR,#4]
@ copy part of string
- mov r6,r10
- add r10,r10,#8
+ mov ASTACK_0,HEAP_PTR
+ add HEAP_PTR,HEAP_PTR,#8
- cmp r8,#0
+ cmp ASTACK_2,#0
beq sliceAC_after_copy_lp
sliceAC_copy_lp:
@ load not aligned
- ldr r12,[r7],#4
- str r12,[r10],#4
- subs r8,r8,#1
+ ldr SCRATCH_REG,[ASTACK_1],#4
+ str SCRATCH_REG,[HEAP_PTR],#4
+ subs ASTACK_2,ASTACK_2,#1
bne sliceAC_copy_lp
sliceAC_after_copy_lp:
@@ -3952,8 +3945,8 @@ sliceAC_after_copy_lp:
gc_4:
bl collect_1
- add r8,r4,#8+3
- lsr r8,r8,#2
+ add ASTACK_2,BSTACK_0,#8+3
+ lsr ASTACK_2,ASTACK_2,#2
b r_gc_4
.ifdef PIC
@@ -3962,44 +3955,44 @@ gc_4:
.section .text.updateAC,"ax"
updateAC:
- ldr r8,[r6,#4]
- cmp r3,r8
+ ldr ASTACK_2,[ASTACK_0,#4]
+ cmp BSTACK_1,ASTACK_2
bhs update_string_error
- add r8,r8,#8+3
- lsr r8,r8,#2
+ add ASTACK_2,ASTACK_2,#8+3
+ lsr ASTACK_2,ASTACK_2,#2
- subs r5,r5,r8
+ subs HEAP_FREE,HEAP_FREE,ASTACK_2
blo gc_5
r_gc_5:
- ldr r8,[r6,#4]
- add r8,r8,#3
- lsr r8,r8,#2
+ ldr ASTACK_2,[ASTACK_0,#4]
+ add ASTACK_2,ASTACK_2,#3
+ lsr ASTACK_2,ASTACK_2,#2
- mov r7,r6
- mov r6,r10
+ mov ASTACK_1,ASTACK_0
+ mov ASTACK_0,HEAP_PTR
- laol r12,__STRING__+2,__STRING___o_2,3
- otoa r12,__STRING___o_2,3
- str r12,[r10]
- ldr r12,[r7,#4]
- add r7,r7,#8
- str r12,[r10,#4]
- add r10,r10,#8
+ laol SCRATCH_REG,__STRING__+2,__STRING___o_2,3
+ otoa SCRATCH_REG,__STRING___o_2,3
+ str SCRATCH_REG,[HEAP_PTR]
+ ldr SCRATCH_REG,[ASTACK_1,#4]
+ add ASTACK_1,ASTACK_1,#8
+ str SCRATCH_REG,[HEAP_PTR,#4]
+ add HEAP_PTR,HEAP_PTR,#8
- add r3,r3,r10
+ add BSTACK_1,BSTACK_1,HEAP_PTR
- cmp r8,#0
+ cmp ASTACK_2,#0
beq updateAC_after_copy_lp
updateAC_copy_lp:
- ldr r12,[r7],#4
- str r12,[r10],#4
- subs r8,r8,#1
+ ldr SCRATCH_REG,[ASTACK_1],#4
+ str SCRATCH_REG,[HEAP_PTR],#4
+ subs ASTACK_2,ASTACK_2,#1
bne updateAC_copy_lp
updateAC_after_copy_lp:
- strb r4,[r3]
+ strb BSTACK_0,[BSTACK_1]
ldr pc,[sp],#4
@@ -4008,12 +4001,12 @@ gc_5: bl collect_1
.thumb_func
update_string_error:
- lao r8,high_index_string,0
- otoa r8,high_index_string,0
- tst r4,r4
+ lao ASTACK_2,high_index_string,0
+ otoa ASTACK_2,high_index_string,0
+ tst BSTACK_0,BSTACK_0
bpl update_string_error_2
- lao r8,low_index_string,0
- otoa r8,low_index_string,0
+ lao ASTACK_2,low_index_string,0
+ otoa ASTACK_2,low_index_string,0
update_string_error_2:
b print_error
@@ -4025,170 +4018,170 @@ update_string_error_2:
.section .text.eqAC,"ax"
eqAC:
- ldr r4,[r6,#4]
- ldr r12,[r7,#4]
- cmp r4,r12
+ ldr BSTACK_0,[ASTACK_0,#4]
+ ldr SCRATCH_REG,[ASTACK_1,#4]
+ cmp BSTACK_0,SCRATCH_REG
bne equal_string_ne
- add r6,r6,#8
- add r7,r7,#8
- and r3,r4,#3
- lsrs r4,r4,#2
+ add ASTACK_0,ASTACK_0,#8
+ add ASTACK_1,ASTACK_1,#8
+ and BSTACK_1,BSTACK_0,#3
+ lsrs BSTACK_0,BSTACK_0,#2
beq equal_string_b
equal_string_1:
- ldr r8,[r6]
- ldr r12,[r7]
- cmp r8,r12
+ ldr ASTACK_2,[ASTACK_0]
+ ldr SCRATCH_REG,[ASTACK_1]
+ cmp ASTACK_2,SCRATCH_REG
bne equal_string_ne
- add r6,r6,#4
- add r7,r7,#4
- subs r4,r4,#1
+ add ASTACK_0,ASTACK_0,#4
+ add ASTACK_1,ASTACK_1,#4
+ subs BSTACK_0,BSTACK_0,#1
bne equal_string_1
.thumb_func
equal_string_b:
- tst r3,#2
+ tst BSTACK_1,#2
beq equal_string_2
- ldrh r4,[r6]
- ldrh r12,[r7]
- cmp r4,r12
+ ldrh BSTACK_0,[ASTACK_0]
+ ldrh SCRATCH_REG,[ASTACK_1]
+ cmp BSTACK_0,SCRATCH_REG
bne equal_string_ne
- add r6,r6,#2
- add r7,r7,#2
+ add ASTACK_0,ASTACK_0,#2
+ add ASTACK_1,ASTACK_1,#2
equal_string_2:
- tst r3,#1
+ tst BSTACK_1,#1
beq equal_string_eq
- ldrb r3,[r6]
- ldrb r12,[r7]
- cmp r3,r12
+ ldrb BSTACK_1,[ASTACK_0]
+ ldrb SCRATCH_REG,[ASTACK_1]
+ cmp BSTACK_1,SCRATCH_REG
bne equal_string_ne
.thumb_func
equal_string_eq:
- mov r4,#1
+ mov BSTACK_0,#1
ldr pc,[sp],#4
.thumb_func
equal_string_ne:
- mov r4,#0
+ mov BSTACK_0,#0
ldr pc,[sp],#4
.section .text.cmpAC,"ax"
cmpAC:
- ldr r3,[r6,#4]
- ldr r8,[r7,#4]
- add r6,r6,#8
- add r7,r7,#8
- cmp r8,r3
+ ldr BSTACK_1,[ASTACK_0,#4]
+ ldr ASTACK_2,[ASTACK_1,#4]
+ add ASTACK_0,ASTACK_0,#8
+ add ASTACK_1,ASTACK_1,#8
+ cmp ASTACK_2,BSTACK_1
blo cmp_string_less
bhi cmp_string_more
- mov r4,#0
+ mov BSTACK_0,#0
b cmp_string_chars
.thumb_func
cmp_string_more:
- mov r4,#1
+ mov BSTACK_0,#1
b cmp_string_chars
.thumb_func
cmp_string_less:
- mov r4,#-1
- mov r3,r8
+ mov BSTACK_0,#-1
+ mov BSTACK_1,ASTACK_2
b cmp_string_chars
cmp_string_1:
- ldr r8,[r7]
- ldr r12,[r6]
- cmp r8,r12
+ ldr ASTACK_2,[ASTACK_1]
+ ldr SCRATCH_REG,[ASTACK_0]
+ cmp ASTACK_2,SCRATCH_REG
bne cmp_string_ne4
- add r7,r7,#4
- add r6,r6,#4
+ add ASTACK_1,ASTACK_1,#4
+ add ASTACK_0,ASTACK_0,#4
.thumb_func
cmp_string_chars:
- subs r3,r3,#4
+ subs BSTACK_1,BSTACK_1,#4
bcs cmp_string_1
.thumb_func
cmp_string_b:
@ to do compare bytes using and instead of ldrb
- tst r3,#2
+ tst BSTACK_1,#2
beq cmp_string_2
- ldrb r8,[r7]
- ldrb r12,[r6]
- cmp r8,r12
+ ldrb ASTACK_2,[ASTACK_1]
+ ldrb SCRATCH_REG,[ASTACK_0]
+ cmp ASTACK_2,SCRATCH_REG
bne cmp_string_ne
- ldrb r8,[r7,#1]
- ldrb r12,[r6,#1]
- cmp r8,r12
+ ldrb ASTACK_2,[ASTACK_1,#1]
+ ldrb SCRATCH_REG,[ASTACK_0,#1]
+ cmp ASTACK_2,SCRATCH_REG
bne cmp_string_ne
- add r7,r7,#2
- add r6,r6,#2
+ add ASTACK_1,ASTACK_1,#2
+ add ASTACK_0,ASTACK_0,#2
cmp_string_2:
- tst r3,#1
+ tst BSTACK_1,#1
beq cmp_string_eq
- ldrb r8,[r7]
- ldrb r12,[r6]
- cmp r8,r12
+ ldrb ASTACK_2,[ASTACK_1]
+ ldrb SCRATCH_REG,[ASTACK_0]
+ cmp ASTACK_2,SCRATCH_REG
bne cmp_string_ne
.thumb_func
cmp_string_eq:
ldr pc,[sp],#4
cmp_string_ne4:
@ to do compare bytes using and instead of ldrb
- ldrb r3,[r7]
- ldrb r12,[r6]
- cmp r3,r12
+ ldrb BSTACK_1,[ASTACK_1]
+ ldrb SCRATCH_REG,[ASTACK_0]
+ cmp BSTACK_1,SCRATCH_REG
bne cmp_string_ne
- ldrb r3,[r7,#1]
- ldrb r12,[r6,#1]
- cmp r3,r12
+ ldrb BSTACK_1,[ASTACK_1,#1]
+ ldrb SCRATCH_REG,[ASTACK_0,#1]
+ cmp BSTACK_1,SCRATCH_REG
bne cmp_string_ne
- ldrb r3,[r7,#2]
- ldrb r12,[r6,#2]
- cmp r3,r12
+ ldrb BSTACK_1,[ASTACK_1,#2]
+ ldrb SCRATCH_REG,[ASTACK_0,#2]
+ cmp BSTACK_1,SCRATCH_REG
bne cmp_string_ne
- ldrb r3,[r7,#3]
- ldrb r12,[r6,#3]
- cmp r3,r12
+ ldrb BSTACK_1,[ASTACK_1,#3]
+ ldrb SCRATCH_REG,[ASTACK_0,#3]
+ cmp BSTACK_1,SCRATCH_REG
.thumb_func
cmp_string_ne:
bhi cmp_string_r1
- mov r4,#-1
+ mov BSTACK_0,#-1
ldr pc,[sp],#4
cmp_string_r1:
- mov r4,#1
+ mov BSTACK_0,#1
ldr pc,[sp],#4
.section .text.string_to_string_node,"ax"
.thumb_func
string_to_string_node:
- ldr r8,[r6],#4
+ ldr ASTACK_2,[ASTACK_0],#4
- add r4,r8,#3
- lsr r4,r4,#2
+ add BSTACK_0,ASTACK_2,#3
+ lsr BSTACK_0,BSTACK_0,#2
- add r12,r4,#2
- subs r5,r5,r12
+ add SCRATCH_REG,BSTACK_0,#2
+ subs HEAP_FREE,HEAP_FREE,SCRATCH_REG
blo string_to_string_node_gc
.thumb_func
string_to_string_node_r:
- laol r12,__STRING__+2,__STRING___o_2,4
- otoa r12,__STRING___o_2,4
- str r12,[r10]
- str r8,[r10,#4]
- mov r8,r10
- add r10,r10,#8
+ laol SCRATCH_REG,__STRING__+2,__STRING___o_2,4
+ otoa SCRATCH_REG,__STRING___o_2,4
+ str SCRATCH_REG,[HEAP_PTR]
+ str ASTACK_2,[HEAP_PTR,#4]
+ mov ASTACK_2,HEAP_PTR
+ add HEAP_PTR,HEAP_PTR,#8
b string_to_string_node_4
string_to_string_node_2:
- ldr r12,[r6],#4
- str r12,[r10],#4
+ ldr SCRATCH_REG,[ASTACK_0],#4
+ str SCRATCH_REG,[HEAP_PTR],#4
string_to_string_node_4:
- subs r4,r4,#1
+ subs BSTACK_0,BSTACK_0,#1
bge string_to_string_node_2
- mov r6,r8
+ mov ASTACK_0,ASTACK_2
ldr pc,[sp],#4
.thumb_func
string_to_string_node_gc:
- stmdb sp!,{r6,r8}
+ stmdb sp!,{ASTACK_0,ASTACK_2}
bl collect_0
- ldmia sp!,{r6,r8}
+ ldmia sp!,{ASTACK_0,ASTACK_2}
b string_to_string_node_r
.ifdef PIC
@@ -4198,40 +4191,40 @@ string_to_string_node_gc:
.section .text.int_array_to_node,"ax"
.thumb_func
int_array_to_node:
- ldr r4,[r6,#-8]
+ ldr BSTACK_0,[ASTACK_0,#-8]
- add r12,r4,#3
- subs r5,r5,r12
+ add SCRATCH_REG,BSTACK_0,#3
+ subs HEAP_FREE,HEAP_FREE,SCRATCH_REG
blo int_array_to_node_gc
.thumb_func
int_array_to_node_r:
- laol r12,__ARRAY__+2,__ARRAY___o_2,0
- otoa r12,__ARRAY___o_2,0
- str r12,[r10]
- mov r7,r6
- str r4,[r10,#4]
- mov r6,r10
- laol r12,INT+2,INT_o_2,3
- otoa r12,INT_o_2,3
- str r12,[r10,#8]
- add r10,r10,#12
+ laol SCRATCH_REG,__ARRAY__+2,__ARRAY___o_2,0
+ otoa SCRATCH_REG,__ARRAY___o_2,0
+ str SCRATCH_REG,[HEAP_PTR]
+ mov ASTACK_1,ASTACK_0
+ str BSTACK_0,[HEAP_PTR,#4]
+ mov ASTACK_0,HEAP_PTR
+ laol SCRATCH_REG,INT+2,INT_o_2,3
+ otoa SCRATCH_REG,INT_o_2,3
+ str SCRATCH_REG,[HEAP_PTR,#8]
+ add HEAP_PTR,HEAP_PTR,#12
b int_array_to_node_4
int_array_to_node_2:
- ldr r12,[r7],#4
- str r12,[r10],#4
+ ldr SCRATCH_REG,[ASTACK_1],#4
+ str SCRATCH_REG,[HEAP_PTR],#4
int_array_to_node_4:
- subs r4,r4,#1
+ subs BSTACK_0,BSTACK_0,#1
bge int_array_to_node_2
ldr pc,[sp],#4
.thumb_func
int_array_to_node_gc:
- str r6,[sp,#-4]!
+ str ASTACK_0,[sp,#-4]!
bl collect_0
- ldr r6,[sp],#4
+ ldr ASTACK_0,[sp],#4
b int_array_to_node_r
.ifdef PIC
@@ -4242,48 +4235,48 @@ int_array_to_node_gc:
.section .text.real_array_to_node,"ax"
.thumb_func
real_array_to_node:
- ldr r4,[r6,#-8]
+ ldr BSTACK_0,[ASTACK_0,#-8]
- add r12,r4,#3+1
- subs r5,r5,r12
+ add SCRATCH_REG,BSTACK_0,#3+1
+ subs HEAP_FREE,HEAP_FREE,SCRATCH_REG
blo real_array_to_node_gc
.thumb_func
real_array_to_node_r:
- tst r10,#4
- orr r10,r10,#4
+ tst HEAP_PTR,#4
+ orr HEAP_PTR,HEAP_PTR,#4
it ne
- addne r5,r5,#1
- mov r7,r6
- laol r12,__ARRAY__+2,__ARRAY___o_2,1
- otoa r12,__ARRAY___o_2,1
- str r12,[r10]
- str r4,[r10,#4]
- mov r6,r10
- laol r12,REAL+2,REAL_o_2,2
- otoa r12,REAL_o_2,2
- str r12,[r10,#8]
- add r10,r10,#12
+ addne HEAP_FREE,HEAP_FREE,#1
+ mov ASTACK_1,ASTACK_0
+ laol SCRATCH_REG,__ARRAY__+2,__ARRAY___o_2,1
+ otoa SCRATCH_REG,__ARRAY___o_2,1
+ str SCRATCH_REG,[HEAP_PTR]
+ str BSTACK_0,[HEAP_PTR,#4]
+ mov ASTACK_0,HEAP_PTR
+ laol SCRATCH_REG,REAL+2,REAL_o_2,2
+ otoa SCRATCH_REG,REAL_o_2,2
+ str SCRATCH_REG,[HEAP_PTR,#8]
+ add HEAP_PTR,HEAP_PTR,#12
b real_array_to_node_4
real_array_to_node_2:
- ldr r12,[r7]
- str r12,[r10]
- ldr r8,[r7,#4]
- add r7,r7,#8
- str r8,[r10,#4]
- add r10,r10,#8
+ ldr SCRATCH_REG,[ASTACK_1]
+ str SCRATCH_REG,[HEAP_PTR]
+ ldr ASTACK_2,[ASTACK_1,#4]
+ add ASTACK_1,ASTACK_1,#8
+ str ASTACK_2,[HEAP_PTR,#4]
+ add HEAP_PTR,HEAP_PTR,#8
real_array_to_node_4:
- subs r4,r4,#1
+ subs BSTACK_0,BSTACK_0,#1
bge real_array_to_node_2
ldr pc,[sp],#4
.thumb_func
real_array_to_node_gc:
- str r6,[sp,#-4]!
+ str ASTACK_0,[sp,#-4]!
bl collect_0
- ldr r6,[sp],#4
+ ldr ASTACK_0,[sp],#4
b real_array_to_node_r
.ifdef PIC
@@ -4389,720 +4382,720 @@ _c32: b __cycle__in__spine
@
_create_arrayB:
- add r3,r4,#3
- lsr r3,r3,#2
+ add BSTACK_1,BSTACK_0,#3
+ lsr BSTACK_1,BSTACK_1,#2
- add r12,r3,#3
- subs r5,r5,r12
+ add SCRATCH_REG,BSTACK_1,#3
+ subs HEAP_FREE,HEAP_FREE,SCRATCH_REG
bhs no_collect_4574
bl collect_0
no_collect_4574:
- mov r6,r10
- laol r12,__ARRAY__+2,__ARRAY___o_2,2
- otoa r12,__ARRAY___o_2,2
- str r12,[r10]
- str r4,[r10,#4]
- laol r12,BOOL+2,BOOL_o_2,2
- otoa r12,BOOL_o_2,2
- str r12,[r10,#8]
- add r12,r10,#12
- add r10,r12,r3,lsl #2
+ mov ASTACK_0,HEAP_PTR
+ laol SCRATCH_REG,__ARRAY__+2,__ARRAY___o_2,2
+ otoa SCRATCH_REG,__ARRAY___o_2,2
+ str SCRATCH_REG,[HEAP_PTR]
+ str BSTACK_0,[HEAP_PTR,#4]
+ laol SCRATCH_REG,BOOL+2,BOOL_o_2,2
+ otoa SCRATCH_REG,BOOL_o_2,2
+ str SCRATCH_REG,[HEAP_PTR,#8]
+ add SCRATCH_REG,HEAP_PTR,#12
+ add HEAP_PTR,SCRATCH_REG,BSTACK_1,lsl #2
ldr pc,[sp],#4
_create_arrayC:
- add r3,r4,#3
- lsr r3,r3,#2
+ add BSTACK_1,BSTACK_0,#3
+ lsr BSTACK_1,BSTACK_1,#2
- add r12,r3,#2
- subs r5,r5,r12
+ add SCRATCH_REG,BSTACK_1,#2
+ subs HEAP_FREE,HEAP_FREE,SCRATCH_REG
bhs no_collect_4573
bl collect_0
no_collect_4573:
- mov r6,r10
- laol r12,__STRING__+2,__STRING___o_2,5
- otoa r12,__STRING___o_2,5
- str r12,[r10]
- str r4,[r10,#4]
- add r12,r10,#8
- add r10,r12,r3,lsl #2
+ mov ASTACK_0,HEAP_PTR
+ laol SCRATCH_REG,__STRING__+2,__STRING___o_2,5
+ otoa SCRATCH_REG,__STRING___o_2,5
+ str SCRATCH_REG,[HEAP_PTR]
+ str BSTACK_0,[HEAP_PTR,#4]
+ add SCRATCH_REG,HEAP_PTR,#8
+ add HEAP_PTR,SCRATCH_REG,BSTACK_1,lsl #2
ldr pc,[sp],#4
_create_arrayI:
- add r12,r4,#3
- subs r5,r5,r12
+ add SCRATCH_REG,BSTACK_0,#3
+ subs HEAP_FREE,HEAP_FREE,SCRATCH_REG
bhs no_collect_4572
bl collect_0
no_collect_4572:
- mov r6,r10
- laol r12,__ARRAY__+2,__ARRAY___o_2,3
- otoa r12,__ARRAY___o_2,3
- str r12,[r10]
- str r4,[r10,#4]
- laol r12,INT+2,INT_o_2,4
- otoa r12,INT_o_2,4
- str r12,[r10,#8]
- add r12,r10,#12
- add r10,r12,r4,lsl #2
+ mov ASTACK_0,HEAP_PTR
+ laol SCRATCH_REG,__ARRAY__+2,__ARRAY___o_2,3
+ otoa SCRATCH_REG,__ARRAY___o_2,3
+ str SCRATCH_REG,[HEAP_PTR]
+ str BSTACK_0,[HEAP_PTR,#4]
+ laol SCRATCH_REG,INT+2,INT_o_2,4
+ otoa SCRATCH_REG,INT_o_2,4
+ str SCRATCH_REG,[HEAP_PTR,#8]
+ add SCRATCH_REG,HEAP_PTR,#12
+ add HEAP_PTR,SCRATCH_REG,BSTACK_0,lsl #2
ldr pc,[sp],#4
_create_arrayR:
- add r12,r4,r4
- add r12,r12,#3+1
- subs r5,r5,r12
+ add SCRATCH_REG,BSTACK_0,BSTACK_0
+ add SCRATCH_REG,SCRATCH_REG,#3+1
+ subs HEAP_FREE,HEAP_FREE,SCRATCH_REG
bhs no_collect_4580
bl collect_0
no_collect_4580:
- tst r10,#4
- orr r10,r10,#4
+ tst HEAP_PTR,#4
+ orr HEAP_PTR,HEAP_PTR,#4
it ne
- addne r5,r5,#1
- mov r6,r10
- laol r12,__ARRAY__+2,__ARRAY___o_2,4
- otoa r12,__ARRAY___o_2,4
- str r12,[r10]
- str r4,[r10,#4]
- laol r12,REAL+2,REAL_o_2,3
- otoa r12,REAL_o_2,3
- str r12,[r10,#8]
- add r12,r10,#12
- add r10,r12,r4,lsl #3
+ addne HEAP_FREE,HEAP_FREE,#1
+ mov ASTACK_0,HEAP_PTR
+ laol SCRATCH_REG,__ARRAY__+2,__ARRAY___o_2,4
+ otoa SCRATCH_REG,__ARRAY___o_2,4
+ str SCRATCH_REG,[HEAP_PTR]
+ str BSTACK_0,[HEAP_PTR,#4]
+ laol SCRATCH_REG,REAL+2,REAL_o_2,3
+ otoa SCRATCH_REG,REAL_o_2,3
+ str SCRATCH_REG,[HEAP_PTR,#8]
+ add SCRATCH_REG,HEAP_PTR,#12
+ add HEAP_PTR,SCRATCH_REG,BSTACK_0,lsl #3
ldr pc,[sp],#4
-@ r4: number of elements, r3: element descriptor
-@ r2: element size, r1: element a size, a0:a_element-> a0: array
+@ BSTACK_0: number of elements, BSTACK_1: element descriptor
+@ BSTACK_2: element size, BSTACK_3: element a size, a0:a_element-> a0: array
.thumb_func
_create_r_array:
- mul r12,r4,r2
- add r12,r12,#3
- subs r5,r5,r12
+ mul SCRATCH_REG,BSTACK_0,BSTACK_2
+ add SCRATCH_REG,SCRATCH_REG,#3
+ subs HEAP_FREE,HEAP_FREE,SCRATCH_REG
bhs no_collect_4586
bl collect_1
no_collect_4586:
- mov r8,r6
+ mov ASTACK_2,ASTACK_0
- laol r12,__ARRAY__+2,__ARRAY___o_2,5
- otoa r12,__ARRAY___o_2,5
- str r12,[r10]
- str r4,[r10,#4]
- str r3,[r10,#8]
+ laol SCRATCH_REG,__ARRAY__+2,__ARRAY___o_2,5
+ otoa SCRATCH_REG,__ARRAY___o_2,5
+ str SCRATCH_REG,[HEAP_PTR]
+ str BSTACK_0,[HEAP_PTR,#4]
+ str BSTACK_1,[HEAP_PTR,#8]
- mov r6,r10
- add r10,r10,#12
+ mov ASTACK_0,HEAP_PTR
+ add HEAP_PTR,HEAP_PTR,#12
-@ r4: number of elements, a0: array
-@ r2: element size, r1: element a size, a2:a_element
+@ BSTACK_0: number of elements, a0: array
+@ BSTACK_2: element size, BSTACK_3: element a size, a2:a_element
- cmp r1,#0
+ cmp BSTACK_3,#0
beq _create_r_array_0
- cmp r1,#2
+ cmp BSTACK_3,#2
blo _create_r_array_1
beq _create_r_array_2
- cmp r1,#4
+ cmp BSTACK_3,#4
blo _create_r_array_3
beq _create_r_array_4
b _create_r_array_5
_create_r_array_0:
- lsl r2,r2,#2
- mul r12,r4,r2
- add r10,r10,r12
+ lsl BSTACK_2,BSTACK_2,#2
+ mul SCRATCH_REG,BSTACK_0,BSTACK_2
+ add HEAP_PTR,HEAP_PTR,SCRATCH_REG
ldr pc,[sp],#4
_create_r_array_1:
- lsl r2,r2,#2
- b _st_fillr1_array
-_fillr1_array:
- str r8,[r10]
- add r10,r10,r2
-_st_fillr1_array:
- subs r4,r4,#1
- bcs _fillr1_array
+ lsl BSTACK_2,BSTACK_2,#2
+ b _st_fillBSTACK_3_array
+_fillBSTACK_3_array:
+ str ASTACK_2,[HEAP_PTR]
+ add HEAP_PTR,HEAP_PTR,BSTACK_2
+_st_fillBSTACK_3_array:
+ subs BSTACK_0,BSTACK_0,#1
+ bcs _fillBSTACK_3_array
ldr pc,[sp],#4
_create_r_array_2:
- lsl r2,r2,#2
- b _st_fillr2_array
-_fillr2_array:
- str r8,[r10]
- str r8,[r10,#4]
- add r10,r10,r2
-_st_fillr2_array:
- subs r4,r4,#1
- bcs _fillr2_array
+ lsl BSTACK_2,BSTACK_2,#2
+ b _st_fillBSTACK_2_array
+_fillBSTACK_2_array:
+ str ASTACK_2,[HEAP_PTR]
+ str ASTACK_2,[HEAP_PTR,#4]
+ add HEAP_PTR,HEAP_PTR,BSTACK_2
+_st_fillBSTACK_2_array:
+ subs BSTACK_0,BSTACK_0,#1
+ bcs _fillBSTACK_2_array
ldr pc,[sp],#4
_create_r_array_3:
- lsl r2,r2,#2
- b _st_fillr3_array
-_fillr3_array:
- str r8,[r10]
- str r8,[r10,#4]
- str r8,[r10,#8]
- add r10,r10,r2
-_st_fillr3_array:
- subs r4,r4,#1
- bcs _fillr3_array
+ lsl BSTACK_2,BSTACK_2,#2
+ b _st_fillBSTACK_1_array
+_fillBSTACK_1_array:
+ str ASTACK_2,[HEAP_PTR]
+ str ASTACK_2,[HEAP_PTR,#4]
+ str ASTACK_2,[HEAP_PTR,#8]
+ add HEAP_PTR,HEAP_PTR,BSTACK_2
+_st_fillBSTACK_1_array:
+ subs BSTACK_0,BSTACK_0,#1
+ bcs _fillBSTACK_1_array
ldr pc,[sp],#4
_create_r_array_4:
- lsl r2,r2,#2
- b _st_fillr4_array
-_fillr4_array:
- str r8,[r10]
- str r8,[r10,#4]
- str r8,[r10,#8]
- str r8,[r10,#12]
- add r10,r10,r2
-_st_fillr4_array:
- subs r4,r4,#1
- bcs _fillr4_array
+ lsl BSTACK_2,BSTACK_2,#2
+ b _st_fillBSTACK_0_array
+_fillBSTACK_0_array:
+ str ASTACK_2,[HEAP_PTR]
+ str ASTACK_2,[HEAP_PTR,#4]
+ str ASTACK_2,[HEAP_PTR,#8]
+ str ASTACK_2,[HEAP_PTR,#12]
+ add HEAP_PTR,HEAP_PTR,BSTACK_2
+_st_fillBSTACK_0_array:
+ subs BSTACK_0,BSTACK_0,#1
+ bcs _fillBSTACK_0_array
ldr pc,[sp],#4
_create_r_array_5:
- sub r2,r2,r1
- lsl r2,r2,#2
+ sub BSTACK_2,BSTACK_2,BSTACK_3
+ lsl BSTACK_2,BSTACK_2,#2
b _st_fillr5_array
_fillr5_array:
- str r8,[r10]
- str r8,[r10,#4]
- str r8,[r10,#8]
- str r8,[r10,#12]
- add r10,r10,#16
+ str ASTACK_2,[HEAP_PTR]
+ str ASTACK_2,[HEAP_PTR,#4]
+ str ASTACK_2,[HEAP_PTR,#8]
+ str ASTACK_2,[HEAP_PTR,#12]
+ add HEAP_PTR,HEAP_PTR,#16
- sub r3,r1,#5
+ sub BSTACK_1,BSTACK_3,#5
_copy_elem_5_lp:
- str r8,[r10],#4
- subs r3,r3,#1
+ str ASTACK_2,[HEAP_PTR],#4
+ subs BSTACK_1,BSTACK_1,#1
bcs _copy_elem_5_lp
- add r10,r10,r2
+ add HEAP_PTR,HEAP_PTR,BSTACK_2
_st_fillr5_array:
- subs r4,r4,#1
+ subs BSTACK_0,BSTACK_0,#1
bcs _fillr5_array
ldr pc,[sp],#4
create_arrayB:
- mov r7,r3
- add r3,r3,#3
- lsr r3,r3,#2
+ mov ASTACK_1,BSTACK_1
+ add BSTACK_1,BSTACK_1,#3
+ lsr BSTACK_1,BSTACK_1,#2
- add r12,r3,#3
- subs r5,r5,r12
+ add SCRATCH_REG,BSTACK_1,#3
+ subs HEAP_FREE,HEAP_FREE,SCRATCH_REG
bhs no_collect_4575
- str r7,[sp,#-4]!
+ str ASTACK_1,[sp,#-4]!
bl collect_0
- ldr r7,[sp],#4
+ ldr ASTACK_1,[sp],#4
no_collect_4575:
- orr r4,r4,r4,lsl #8
- orr r4,r4,r4,lsl #16
- mov r6,r10
- laol r12,__ARRAY__+2,__ARRAY___o_2,6
- otoa r12,__ARRAY___o_2,6
- str r12,[r10]
- str r7,[r10,#4]
- laol r12,BOOL+2,BOOL_o_2,3
- otoa r12,BOOL_o_2,3
- str r12,[r10,#8]
- add r10,r10,#12
+ orr BSTACK_0,BSTACK_0,BSTACK_0,lsl #8
+ orr BSTACK_0,BSTACK_0,BSTACK_0,lsl #16
+ mov ASTACK_0,HEAP_PTR
+ laol SCRATCH_REG,__ARRAY__+2,__ARRAY___o_2,6
+ otoa SCRATCH_REG,__ARRAY___o_2,6
+ str SCRATCH_REG,[HEAP_PTR]
+ str ASTACK_1,[HEAP_PTR,#4]
+ laol SCRATCH_REG,BOOL+2,BOOL_o_2,3
+ otoa SCRATCH_REG,BOOL_o_2,3
+ str SCRATCH_REG,[HEAP_PTR,#8]
+ add HEAP_PTR,HEAP_PTR,#12
b create_arrayBCI
create_arrayC:
- mov r7,r3
- add r3,r3,#3
- lsr r3,r3,#2
+ mov ASTACK_1,BSTACK_1
+ add BSTACK_1,BSTACK_1,#3
+ lsr BSTACK_1,BSTACK_1,#2
- add r12,r3,#2
- subs r5,r5,r12
+ add SCRATCH_REG,BSTACK_1,#2
+ subs HEAP_FREE,HEAP_FREE,SCRATCH_REG
bhs no_collect_4578
- str r7,[sp,#-4]!
+ str ASTACK_1,[sp,#-4]!
bl collect_0
- ldr r7,[sp],#4
+ ldr ASTACK_1,[sp],#4
no_collect_4578:
- orr r4,r4,r4,lsl #8
- orr r4,r4,r4,lsl #16
- mov r6,r10
- laol r12,__STRING__+2,__STRING___o_2,6
- otoa r12,__STRING___o_2,6
- str r12,[r10]
- str r7,[r10,#4]
- add r10,r10,#8
+ orr BSTACK_0,BSTACK_0,BSTACK_0,lsl #8
+ orr BSTACK_0,BSTACK_0,BSTACK_0,lsl #16
+ mov ASTACK_0,HEAP_PTR
+ laol SCRATCH_REG,__STRING__+2,__STRING___o_2,6
+ otoa SCRATCH_REG,__STRING___o_2,6
+ str SCRATCH_REG,[HEAP_PTR]
+ str ASTACK_1,[HEAP_PTR,#4]
+ add HEAP_PTR,HEAP_PTR,#8
b create_arrayBCI
create_arrayI:
- add r12,r3,#3
- subs r5,r5,r12
+ add SCRATCH_REG,BSTACK_1,#3
+ subs HEAP_FREE,HEAP_FREE,SCRATCH_REG
bhs no_collect_4577
bl collect_0
no_collect_4577:
- mov r6,r10
- laol r12,__ARRAY__+2,__ARRAY___o_2,7
- otoa r12,__ARRAY___o_2,7
- str r12,[r10]
- str r3,[r10,#4]
- laol r12,INT+2,INT_o_2,5
- otoa r12,INT_o_2,5
- str r12,[r10,#8]
- add r10,r10,#12
+ mov ASTACK_0,HEAP_PTR
+ laol SCRATCH_REG,__ARRAY__+2,__ARRAY___o_2,7
+ otoa SCRATCH_REG,__ARRAY___o_2,7
+ str SCRATCH_REG,[HEAP_PTR]
+ str BSTACK_1,[HEAP_PTR,#4]
+ laol SCRATCH_REG,INT+2,INT_o_2,5
+ otoa SCRATCH_REG,INT_o_2,5
+ str SCRATCH_REG,[HEAP_PTR,#8]
+ add HEAP_PTR,HEAP_PTR,#12
create_arrayBCI:
- tst r3,#1
- lsr r3,r3,#1
+ tst BSTACK_1,#1
+ lsr BSTACK_1,BSTACK_1,#1
beq st_filli_array
- str r4,[r10],#4
+ str BSTACK_0,[HEAP_PTR],#4
b st_filli_array
.thumb_func
filli_array:
- str r4,[r10]
- str r4,[r10,#4]
- add r10,r10,#8
+ str BSTACK_0,[HEAP_PTR]
+ str BSTACK_0,[HEAP_PTR,#4]
+ add HEAP_PTR,HEAP_PTR,#8
.thumb_func
st_filli_array:
- subs r3,r3,#1
+ subs BSTACK_1,BSTACK_1,#1
bcs filli_array
ldr pc,[sp],#4
create_arrayR:
- add r12,r4,r4
- add r12,r12,#3+1
+ add SCRATCH_REG,BSTACK_0,BSTACK_0
+ add SCRATCH_REG,SCRATCH_REG,#3+1
- vmov r3,r7,d0
+ vmov BSTACK_1,ASTACK_1,d0
- subs r5,r5,r12
+ subs HEAP_FREE,HEAP_FREE,SCRATCH_REG
bhs no_collect_4579
- str r7,[sp,#-4]!
+ str ASTACK_1,[sp,#-4]!
bl collect_0
- ldr r7,[sp],#4
+ ldr ASTACK_1,[sp],#4
no_collect_4579:
- tst r10,#4
- orr r10,r10,#4
+ tst HEAP_PTR,#4
+ orr HEAP_PTR,HEAP_PTR,#4
it ne
- addne r5,r5,#1
-
- mov r6,r10
- laol r12,__ARRAY__+2,__ARRAY___o_2,8
- otoa r12,__ARRAY___o_2,8
- str r12,[r10]
- str r4,[r10,#4]
- laol r12,REAL+2,REAL_o_2,4
- otoa r12,REAL_o_2,4
- str r12,[r10,#8]
- add r10,r10,#12
+ addne HEAP_FREE,HEAP_FREE,#1
+
+ mov ASTACK_0,HEAP_PTR
+ laol SCRATCH_REG,__ARRAY__+2,__ARRAY___o_2,8
+ otoa SCRATCH_REG,__ARRAY___o_2,8
+ str SCRATCH_REG,[HEAP_PTR]
+ str BSTACK_0,[HEAP_PTR,#4]
+ laol SCRATCH_REG,REAL+2,REAL_o_2,4
+ otoa SCRATCH_REG,REAL_o_2,4
+ str SCRATCH_REG,[HEAP_PTR,#8]
+ add HEAP_PTR,HEAP_PTR,#12
b st_fillr_array
.thumb_func
fillr_array:
- str r3,[r10]
- str r7,[r10,#4]
- add r10,r10,#8
+ str BSTACK_1,[HEAP_PTR]
+ str ASTACK_1,[HEAP_PTR,#4]
+ add HEAP_PTR,HEAP_PTR,#8
.thumb_func
st_fillr_array:
- subs r4,r4,#1
+ subs BSTACK_0,BSTACK_0,#1
bcs fillr_array
ldr pc,[sp],#4
.thumb_func
create_array:
- add r12,r4,#3
- subs r5,r5,r12
+ add SCRATCH_REG,BSTACK_0,#3
+ subs HEAP_FREE,HEAP_FREE,SCRATCH_REG
bhs no_collect_4576
bl collect_1
no_collect_4576:
- mov r3,r6
- mov r6,r10
- laol r12,__ARRAY__+2,__ARRAY___o_2,9
- otoa r12,__ARRAY___o_2,9
- str r12,[r10]
- str r4,[r10,#4]
- mov r12,#0
- str r12,[r10,#8]
- add r10,r10,#12
- mov r1,r4
- b fillr1_array
-
-@ in r4: number of elements, r3: element descriptor
-@ r2: element size, r1: element a size -> a0: array
+ mov BSTACK_1,ASTACK_0
+ mov ASTACK_0,HEAP_PTR
+ laol SCRATCH_REG,__ARRAY__+2,__ARRAY___o_2,9
+ otoa SCRATCH_REG,__ARRAY___o_2,9
+ str SCRATCH_REG,[HEAP_PTR]
+ str BSTACK_0,[HEAP_PTR,#4]
+ mov SCRATCH_REG,#0
+ str SCRATCH_REG,[HEAP_PTR,#8]
+ add HEAP_PTR,HEAP_PTR,#12
+ mov BSTACK_3,BSTACK_0
+ b fillBSTACK_3_array
+
+@ in BSTACK_0: number of elements, BSTACK_1: element descriptor
+@ BSTACK_2: element size, BSTACK_3: element a size -> a0: array
create_R_array:
- cmp r2,#2
+ cmp BSTACK_2,#2
blo create_R_array_1
beq create_R_array_2
- cmp r2,#4
+ cmp BSTACK_2,#4
blo create_R_array_3
beq create_R_array_4
b create_R_array_5
create_R_array_1:
-@ r4: number of elements, r3: element descriptor
-@ r1: element a size
+@ BSTACK_0: number of elements, BSTACK_1: element descriptor
+@ BSTACK_3: element a size
- add r12,r4,#3
- subs r5,r5,r12
+ add SCRATCH_REG,BSTACK_0,#3
+ subs HEAP_FREE,HEAP_FREE,SCRATCH_REG
bhs no_collect_4581
bl collect_0
no_collect_4581:
- mov r6,r10
- laol r12,__ARRAY__+2,__ARRAY___o_2,10
- otoa r12,__ARRAY___o_2,10
- str r12,[r10]
- str r4,[r10,#4]
- str r3,[r10,#8]
- add r10,r10,#12
-
- cmp r1,#0
+ mov ASTACK_0,HEAP_PTR
+ laol SCRATCH_REG,__ARRAY__+2,__ARRAY___o_2,10
+ otoa SCRATCH_REG,__ARRAY___o_2,10
+ str SCRATCH_REG,[HEAP_PTR]
+ str BSTACK_0,[HEAP_PTR,#4]
+ str BSTACK_1,[HEAP_PTR,#8]
+ add HEAP_PTR,HEAP_PTR,#12
+
+ cmp BSTACK_3,#0
beq r_array_1_b
- ldr r3,[r9,#-4]
- b fillr1_array
+ ldr BSTACK_1,[ASTACK_PTR,#-4]
+ b fillBSTACK_3_array
r_array_1_b:
- ldr r3,[sp,#4]
+ ldr BSTACK_1,[sp,#4]
-fillr1_array:
- tst r4,#1
- lsr r4,r4,#1
- beq st_fillr1_array_1
+fillBSTACK_3_array:
+ tst BSTACK_0,#1
+ lsr BSTACK_0,BSTACK_0,#1
+ beq st_fillBSTACK_3_array_1
- str r3,[r10],#4
- b st_fillr1_array_1
+ str BSTACK_1,[HEAP_PTR],#4
+ b st_fillBSTACK_3_array_1
-fillr1_array_lp:
- str r3,[r10]
- str r3,[r10,#4]
- add r10,r10,#8
-st_fillr1_array_1:
- subs r4,r4,#1
- bcs fillr1_array_lp
+fillBSTACK_3_array_lp:
+ str BSTACK_1,[HEAP_PTR]
+ str BSTACK_1,[HEAP_PTR,#4]
+ add HEAP_PTR,HEAP_PTR,#8
+st_fillBSTACK_3_array_1:
+ subs BSTACK_0,BSTACK_0,#1
+ bcs fillBSTACK_3_array_lp
ldr pc,[sp],#4
create_R_array_2:
-@ r4: number of elements, r3: element descriptor
-@ r1: element a size
+@ BSTACK_0: number of elements, BSTACK_1: element descriptor
+@ BSTACK_3: element a size
- add r12,r4,r4
- add r12,r12,#3
- subs r5,r5,r12
+ add SCRATCH_REG,BSTACK_0,BSTACK_0
+ add SCRATCH_REG,SCRATCH_REG,#3
+ subs HEAP_FREE,HEAP_FREE,SCRATCH_REG
bhs no_collect_4582
bl collect_0
no_collect_4582:
- mov r6,r10
- laol r12,__ARRAY__+2,__ARRAY___o_2,11
- otoa r12,__ARRAY___o_2,11
- str r12,[r10]
- str r4,[r10,#4]
- str r3,[r10,#8]
- add r10,r10,#12
-
- subs r1,r1,#1
+ mov ASTACK_0,HEAP_PTR
+ laol SCRATCH_REG,__ARRAY__+2,__ARRAY___o_2,11
+ otoa SCRATCH_REG,__ARRAY___o_2,11
+ str SCRATCH_REG,[HEAP_PTR]
+ str BSTACK_0,[HEAP_PTR,#4]
+ str BSTACK_1,[HEAP_PTR,#8]
+ add HEAP_PTR,HEAP_PTR,#12
+
+ subs BSTACK_3,BSTACK_3,#1
blo r_array_2_bb
beq r_array_2_ab
r_array_2_aa:
- ldr r3,[r9,#-4]
- ldr r8,[r9,#-8]
- b st_fillr2_array
+ ldr BSTACK_1,[ASTACK_PTR,#-4]
+ ldr ASTACK_2,[ASTACK_PTR,#-8]
+ b st_fillBSTACK_2_array
r_array_2_ab:
- ldr r3,[r9,#-4]
- ldr r8,[sp,#4]
- b st_fillr2_array
+ ldr BSTACK_1,[ASTACK_PTR,#-4]
+ ldr ASTACK_2,[sp,#4]
+ b st_fillBSTACK_2_array
r_array_2_bb:
- ldr r3,[sp,#4]
- ldr r8,[sp,#8]
- b st_fillr2_array
-
-fillr2_array_1:
- str r3,[r10]
- str r8,[r10,#4]
- add r10,r10,#8
-st_fillr2_array:
- subs r4,r4,#1
- bcs fillr2_array_1
+ ldr BSTACK_1,[sp,#4]
+ ldr ASTACK_2,[sp,#8]
+ b st_fillBSTACK_2_array
+
+fillBSTACK_2_array_1:
+ str BSTACK_1,[HEAP_PTR]
+ str ASTACK_2,[HEAP_PTR,#4]
+ add HEAP_PTR,HEAP_PTR,#8
+st_fillBSTACK_2_array:
+ subs BSTACK_0,BSTACK_0,#1
+ bcs fillBSTACK_2_array_1
ldr pc,[sp],#4
create_R_array_3:
-@ r4: number of elements, r3: element descriptor
-@ r1: element a size
+@ BSTACK_0: number of elements, BSTACK_1: element descriptor
+@ BSTACK_3: element a size
- add r12,r4,r4,lsl #1
- add r12,r12,#3
- subs r5,r5,r12
+ add SCRATCH_REG,BSTACK_0,BSTACK_0,lsl #1
+ add SCRATCH_REG,SCRATCH_REG,#3
+ subs HEAP_FREE,HEAP_FREE,SCRATCH_REG
bhs no_collect_4583
bl collect_0
no_collect_4583:
- mov r6,r10
- laol r12,__ARRAY__+2,__ARRAY___o_2,12
- otoa r12,__ARRAY___o_2,12
- str r12,[r10]
- str r4,[r10,#4]
- str r3,[r10,#8]
- add r10,r10,#12
+ mov ASTACK_0,HEAP_PTR
+ laol SCRATCH_REG,__ARRAY__+2,__ARRAY___o_2,12
+ otoa SCRATCH_REG,__ARRAY___o_2,12
+ str SCRATCH_REG,[HEAP_PTR]
+ str BSTACK_0,[HEAP_PTR,#4]
+ str BSTACK_1,[HEAP_PTR,#8]
+ add HEAP_PTR,HEAP_PTR,#12
ldr lr,[sp],#4
- mov r2,sp
+ mov BSTACK_2,sp
- cmp r1,#0
+ cmp BSTACK_3,#0
beq r_array_3
- sub r8,r9,r1,lsl #2
- subs r1,r1,#1
+ sub ASTACK_2,ASTACK_PTR,BSTACK_3,lsl #2
+ subs BSTACK_3,BSTACK_3,#1
copy_a_to_b_lp3:
- ldr r12,[r8],#4
- str r12,[sp,#-4]!
- subs r1,r1,#1
+ ldr SCRATCH_REG,[ASTACK_2],#4
+ str SCRATCH_REG,[sp,#-4]!
+ subs BSTACK_3,BSTACK_3,#1
bcs copy_a_to_b_lp3
r_array_3:
- ldr r3,[sp]
- ldr r7,[sp,#4]
- ldr r8,[sp,#8]
-
- mov sp,r2
- b st_fillr3_array
-
-fillr3_array_1:
- str r3,[r10]
- str r7,[r10,#4]
- str r8,[r10,#8]
- add r10,r10,#12
-st_fillr3_array:
- subs r4,r4,#1
- bcs fillr3_array_1
+ ldr BSTACK_1,[sp]
+ ldr ASTACK_1,[sp,#4]
+ ldr ASTACK_2,[sp,#8]
+
+ mov sp,BSTACK_2
+ b st_fillBSTACK_1_array
+
+fillBSTACK_1_array_1:
+ str BSTACK_1,[HEAP_PTR]
+ str ASTACK_1,[HEAP_PTR,#4]
+ str ASTACK_2,[HEAP_PTR,#8]
+ add HEAP_PTR,HEAP_PTR,#12
+st_fillBSTACK_1_array:
+ subs BSTACK_0,BSTACK_0,#1
+ bcs fillBSTACK_1_array_1
bx lr
create_R_array_4:
-@ r4: number of elements, r3: element descriptor
-@ r1: element a size
+@ BSTACK_0: number of elements, BSTACK_1: element descriptor
+@ BSTACK_3: element a size
- lsl r12,r4,#2
- add r12,r12,#3
- subs r5,r5,r12
+ lsl SCRATCH_REG,BSTACK_0,#2
+ add SCRATCH_REG,SCRATCH_REG,#3
+ subs HEAP_FREE,HEAP_FREE,SCRATCH_REG
bhs no_collect_4584
bl collect_0
no_collect_4584:
- mov r6,r10
- laol r12,__ARRAY__+2,__ARRAY___o_2,13
- otoa r12,__ARRAY___o_2,13
- str r12,[r10]
- str r4,[r10,#4]
- str r3,[r10,#8]
- add r10,r10,#12
+ mov ASTACK_0,HEAP_PTR
+ laol SCRATCH_REG,__ARRAY__+2,__ARRAY___o_2,13
+ otoa SCRATCH_REG,__ARRAY___o_2,13
+ str SCRATCH_REG,[HEAP_PTR]
+ str BSTACK_0,[HEAP_PTR,#4]
+ str BSTACK_1,[HEAP_PTR,#8]
+ add HEAP_PTR,HEAP_PTR,#12
ldr lr,[sp],#4
- mov r2,sp
+ mov BSTACK_2,sp
- cmp r1,#0
+ cmp BSTACK_3,#0
beq r_array_4
- sub r8,r9,r1,lsl #2
- subs r1,r1,#1
+ sub ASTACK_2,ASTACK_PTR,BSTACK_3,lsl #2
+ subs BSTACK_3,BSTACK_3,#1
copy_a_to_b_lp4:
- ldr r12,[r8],#4
- str r12,[sp,#-4]!
- subs r1,r1,#1
+ ldr SCRATCH_REG,[ASTACK_2],#4
+ str SCRATCH_REG,[sp,#-4]!
+ subs BSTACK_3,BSTACK_3,#1
bcs copy_a_to_b_lp4
r_array_4:
- ldr r0,[sp]
- ldr r3,[sp,#4]
- ldr r7,[sp,#8]
- ldr r8,[sp,#12]
-
- mov sp,r2
- b st_fillr4_array
-
-fillr4_array:
- str r0,[r10]
- str r3,[r10,#4]
- str r7,[r10,#8]
- str r8,[r10,#12]
- add r10,r10,#16
-st_fillr4_array:
- subs r4,r4,#1
- bcs fillr4_array
+ ldr BSTACK_4,[sp]
+ ldr BSTACK_1,[sp,#4]
+ ldr ASTACK_1,[sp,#8]
+ ldr ASTACK_2,[sp,#12]
+
+ mov sp,BSTACK_2
+ b st_fillBSTACK_0_array
+
+fillBSTACK_0_array:
+ str BSTACK_4,[HEAP_PTR]
+ str BSTACK_1,[HEAP_PTR,#4]
+ str ASTACK_1,[HEAP_PTR,#8]
+ str ASTACK_2,[HEAP_PTR,#12]
+ add HEAP_PTR,HEAP_PTR,#16
+st_fillBSTACK_0_array:
+ subs BSTACK_0,BSTACK_0,#1
+ bcs fillBSTACK_0_array
bx lr
create_R_array_5:
-@ r4: number of elements, r3: element descriptor
-@ r1: element a size, r2: element size
+@ BSTACK_0: number of elements, BSTACK_1: element descriptor
+@ BSTACK_3: element a size, BSTACK_2: element size
- mul r12,r4,r2
- add r12,r12,#3
- subs r5,r5,r12
+ mul SCRATCH_REG,BSTACK_0,BSTACK_2
+ add SCRATCH_REG,SCRATCH_REG,#3
+ subs HEAP_FREE,HEAP_FREE,SCRATCH_REG
bhs no_collect_4585
bl collect_0
no_collect_4585:
- laol r12,__ARRAY__+2,__ARRAY___o_2,14
- otoa r12,__ARRAY___o_2,14
- str r12,[r10]
- str r4,[r10,#4]
- str r3,[r10,#8]
+ laol SCRATCH_REG,__ARRAY__+2,__ARRAY___o_2,14
+ otoa SCRATCH_REG,__ARRAY___o_2,14
+ str SCRATCH_REG,[HEAP_PTR]
+ str BSTACK_0,[HEAP_PTR,#4]
+ str BSTACK_1,[HEAP_PTR,#8]
ldr lr,[sp],#4
- mov r11,sp
+ mov ASTACK_3,sp
- cmp r1,#0
+ cmp BSTACK_3,#0
beq r_array_5
- sub r8,r9,r1,lsl #2
- subs r1,r1,#1
+ sub ASTACK_2,ASTACK_PTR,BSTACK_3,lsl #2
+ subs BSTACK_3,BSTACK_3,#1
copy_a_to_b_lp5:
- ldr r12,[r8],#4
- str r12,[sp,#-4]!
- subs r1,r1,#1
+ ldr SCRATCH_REG,[ASTACK_2],#4
+ str SCRATCH_REG,[sp,#-4]!
+ subs BSTACK_3,BSTACK_3,#1
bcs copy_a_to_b_lp5
r_array_5:
- mov r6,r10
- add r10,r10,#12
+ mov ASTACK_0,HEAP_PTR
+ add HEAP_PTR,HEAP_PTR,#12
- ldr r3,[sp]
- ldr r7,[sp,#4]
+ ldr BSTACK_1,[sp]
+ ldr ASTACK_1,[sp,#4]
b st_fillr5_array
fillr5_array_1:
- str r3,[r10]
- str r7,[r10,#4]
+ str BSTACK_1,[HEAP_PTR]
+ str ASTACK_1,[HEAP_PTR,#4]
- sub r12,r2,#5
+ sub SCRATCH_REG,BSTACK_2,#5
- ldr r8,[sp,#8]
- str r8,[r10,#8]
+ ldr ASTACK_2,[sp,#8]
+ str ASTACK_2,[HEAP_PTR,#8]
- ldr r8,[sp,#12]
- add r0,sp,#16
- str r8,[r10,#12]
- add r10,r10,#16
+ ldr ASTACK_2,[sp,#12]
+ add BSTACK_4,sp,#16
+ str ASTACK_2,[HEAP_PTR,#12]
+ add HEAP_PTR,HEAP_PTR,#16
copy_elem_lp5:
- ldr r8,[r0],#4
- str r8,[r10],#4
- subs r12,r12,#1
+ ldr ASTACK_2,[BSTACK_4],#4
+ str ASTACK_2,[HEAP_PTR],#4
+ subs SCRATCH_REG,SCRATCH_REG,#1
bcs copy_elem_lp5
st_fillr5_array:
- subs r4,r4,#1
+ subs BSTACK_0,BSTACK_0,#1
bcs fillr5_array_1
- mov sp,r11
+ mov sp,ASTACK_3
bx lr
.thumb_func
repl_args_b:
- cmp r4,#0
+ cmp BSTACK_0,#0
ble repl_args_b_1
- subs r4,r4,#1
+ subs BSTACK_0,BSTACK_0,#1
beq repl_args_b_4
- ldr r7,[r6,#8]
- subs r3,r3,#2
+ ldr ASTACK_1,[ASTACK_0,#8]
+ subs BSTACK_1,BSTACK_1,#2
bne repl_args_b_2
- str r7,[r9],#4
+ str ASTACK_1,[ASTACK_PTR],#4
b repl_args_b_4
repl_args_b_2:
- add r7,r7,r4,lsl #2
+ add ASTACK_1,ASTACK_1,BSTACK_0,lsl #2
repl_args_b_3:
- ldr r8,[r7,#-4]!
- str r8,[r9],#4
- subs r4,r4,#1
+ ldr ASTACK_2,[ASTACK_1,#-4]!
+ str ASTACK_2,[ASTACK_PTR],#4
+ subs BSTACK_0,BSTACK_0,#1
bne repl_args_b_3
repl_args_b_4:
- ldr r8,[r6,#4]
- str r8,[r9],#4
+ ldr ASTACK_2,[ASTACK_0,#4]
+ str ASTACK_2,[ASTACK_PTR],#4
repl_args_b_1:
ldr pc,[sp],#4
.thumb_func
push_arg_b:
- cmp r3,#2
+ cmp BSTACK_1,#2
blo push_arg_b_1
bne push_arg_b_2
- cmp r3,r4
+ cmp BSTACK_1,BSTACK_0
beq push_arg_b_1
push_arg_b_2:
- ldr r6,[r6,#8]
- subs r3,r3,#2
+ ldr ASTACK_0,[ASTACK_0,#8]
+ subs BSTACK_1,BSTACK_1,#2
push_arg_b_1:
- ldr r6,[r6,r3,lsl #2]
+ ldr ASTACK_0,[ASTACK_0,BSTACK_1,lsl #2]
ldr pc,[sp],#4
.thumb_func
del_args:
- ldr r3,[r6]
- subs r3,r3,r4
- ldrsh r4,[r3,#-2]
- subs r4,r4,#2
+ ldr BSTACK_1,[ASTACK_0]
+ subs BSTACK_1,BSTACK_1,BSTACK_0
+ ldrsh BSTACK_0,[BSTACK_1,#-2]
+ subs BSTACK_0,BSTACK_0,#2
bge del_args_2
- str r3,[r7]
- ldr r8,[r6,#4]
- str r8,[r7,#4]
- ldr r8,[r6,#8]
- str r8,[r7,#8]
+ str BSTACK_1,[ASTACK_1]
+ ldr ASTACK_2,[ASTACK_0,#4]
+ str ASTACK_2,[ASTACK_1,#4]
+ ldr ASTACK_2,[ASTACK_0,#8]
+ str ASTACK_2,[ASTACK_1,#8]
ldr pc,[sp],#4
del_args_2:
bne del_args_3
- str r3,[r7]
- ldr r8,[r6,#4]
- str r8,[r7,#4]
- ldr r8,[r6,#8]
- ldr r8,[r8]
- str r8,[r7,#8]
+ str BSTACK_1,[ASTACK_1]
+ ldr ASTACK_2,[ASTACK_0,#4]
+ str ASTACK_2,[ASTACK_1,#4]
+ ldr ASTACK_2,[ASTACK_0,#8]
+ ldr ASTACK_2,[ASTACK_2]
+ str ASTACK_2,[ASTACK_1,#8]
ldr pc,[sp],#4
del_args_3:
- subs r5,r5,r4
+ subs HEAP_FREE,HEAP_FREE,BSTACK_0
blo del_args_gc
.thumb_func
del_args_r_gc:
- str r3,[r7]
- str r10,[r7,#8]
- ldr r8,[r6,#4]
- ldr r6,[r6,#8]
- str r8,[r7,#4]
+ str BSTACK_1,[ASTACK_1]
+ str HEAP_PTR,[ASTACK_1,#8]
+ ldr ASTACK_2,[ASTACK_0,#4]
+ ldr ASTACK_0,[ASTACK_0,#8]
+ str ASTACK_2,[ASTACK_1,#4]
.thumb_func
del_args_copy_args:
- ldr r8,[r6],#4
- str r8,[r10],#4
- subs r4,r4,#1
+ ldr ASTACK_2,[ASTACK_0],#4
+ str ASTACK_2,[HEAP_PTR],#4
+ subs BSTACK_0,BSTACK_0,#1
bgt del_args_copy_args
ldr pc,[sp],#4
@@ -5116,11 +5109,11 @@ del_args_gc:
.thumb_func
sin_real:
.ifdef SOFT_FP_CC
- vmov r0,r1,d0
+ vmov BSTACK_4,BSTACK_3,d0
.endif
bl sin
.ifdef SOFT_FP_CC
- vmov d0,r0,r1
+ vmov d0,BSTACK_4,BSTACK_3
.endif
ldr pc,[sp],#4
@@ -5128,11 +5121,11 @@ sin_real:
.thumb_func
cos_real:
.ifdef SOFT_FP_CC
- vmov r0,r1,d0
+ vmov BSTACK_4,BSTACK_3,d0
.endif
bl cos
.ifdef SOFT_FP_CC
- vmov d0,r0,r1
+ vmov d0,BSTACK_4,BSTACK_3
.endif
ldr pc,[sp],#4
@@ -5140,11 +5133,11 @@ cos_real:
.thumb_func
tan_real:
.ifdef SOFT_FP_CC
- vmov r0,r1,d0
+ vmov BSTACK_4,BSTACK_3,d0
.endif
bl tan
.ifdef SOFT_FP_CC
- vmov d0,r0,r1
+ vmov d0,BSTACK_4,BSTACK_3
.endif
ldr pc,[sp],#4
@@ -5152,11 +5145,11 @@ tan_real:
.thumb_func
asin_real:
.ifdef SOFT_FP_CC
- vmov r0,r1,d0
+ vmov BSTACK_4,BSTACK_3,d0
.endif
bl asin
.ifdef SOFT_FP_CC
- vmov d0,r0,r1
+ vmov d0,BSTACK_4,BSTACK_3
.endif
ldr pc,[sp],#4
@@ -5164,11 +5157,11 @@ asin_real:
.thumb_func
acos_real:
.ifdef SOFT_FP_CC
- vmov r0,r1,d0
+ vmov BSTACK_4,BSTACK_3,d0
.endif
bl acos
.ifdef SOFT_FP_CC
- vmov d0,r0,r1
+ vmov d0,BSTACK_4,BSTACK_3
.endif
ldr pc,[sp],#4
@@ -5176,11 +5169,11 @@ acos_real:
.thumb_func
atan_real:
.ifdef SOFT_FP_CC
- vmov r0,r1,d0
+ vmov BSTACK_4,BSTACK_3,d0
.endif
bl atan
.ifdef SOFT_FP_CC
- vmov d0,r0,r1
+ vmov d0,BSTACK_4,BSTACK_3
.endif
ldr pc,[sp],#4
@@ -5188,22 +5181,22 @@ atan_real:
.thumb_func
ln_real:
.ifdef SOFT_FP_CC
- vmov r0,r1,d0
+ vmov BSTACK_4,BSTACK_3,d0
.endif
bl log
.ifdef SOFT_FP_CC
- vmov d0,r0,r1
+ vmov d0,BSTACK_4,BSTACK_3
.endif
ldr pc,[sp],#4
.section .text.log10_real,"ax"
log10_real:
.ifdef SOFT_FP_CC
- vmov r0,r1,d0
+ vmov BSTACK_4,BSTACK_3,d0
.endif
bl log10
.ifdef SOFT_FP_CC
- vmov d0,r0,r1
+ vmov d0,BSTACK_4,BSTACK_3
.endif
ldr pc,[sp],#4
@@ -5211,11 +5204,11 @@ log10_real:
.thumb_func
exp_real:
.ifdef SOFT_FP_CC
- vmov r0,r1,d0
+ vmov BSTACK_4,BSTACK_3,d0
.endif
bl exp
.ifdef SOFT_FP_CC
- vmov d0,r0,r1
+ vmov d0,BSTACK_4,BSTACK_3
.endif
ldr pc,[sp],#4
@@ -5223,8 +5216,8 @@ exp_real:
.thumb_func
pow_real:
.ifdef SOFT_FP_CC
- vmov r0,r1,d1
- vmov r2,r3,d0
+ vmov BSTACK_4,BSTACK_3,d1
+ vmov BSTACK_2,BSTACK_1,d0
.else
vmov.f64 d2,d0
vmov.f64 d0,d1
@@ -5232,7 +5225,7 @@ pow_real:
.endif
bl pow
.ifdef SOFT_FP_CC
- vmov d0,r0,r1
+ vmov d0,BSTACK_4,BSTACK_3
.endif
ldr pc,[sp],#4
@@ -5240,17 +5233,17 @@ pow_real:
.thumb_func
entier_real:
.ifdef SOFT_FP_CC
- vmov r0,r1,d0
+ vmov BSTACK_4,BSTACK_3,d0
.endif
bl floor
.ifdef SOFT_FP_CC
- vmov d0,r0,r1
+ vmov d0,BSTACK_4,BSTACK_3
.endif
.thumb_func
r_to_i_real:
vcvtr.s32.f64 s0,d0
- vmov r4,s0
+ vmov BSTACK_0,s0
ldr pc,[sp],#4
.text