diff options
-rw-r--r-- | thumb2ap.s | 2998 | ||||
-rw-r--r-- | thumb2compact.s | 1225 | ||||
-rw-r--r-- | thumb2compact_rmark.s | 1145 | ||||
-rw-r--r-- | thumb2compact_rmarkr.s | 1233 | ||||
-rw-r--r-- | thumb2copy.s | 1283 | ||||
-rw-r--r-- | thumb2divmod.s | 145 | ||||
-rw-r--r-- | thumb2fileIO3.s | 907 | ||||
-rw-r--r-- | thumb2mark.s | 2727 | ||||
-rw-r--r-- | thumb2regs.s | 27 | ||||
-rw-r--r-- | thumb2startup.s | 4121 |
10 files changed, 7914 insertions, 7897 deletions
@@ -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 |