summaryrefslogtreecommitdiff
path: root/thumb2compact.s
diff options
context:
space:
mode:
Diffstat (limited to 'thumb2compact.s')
-rw-r--r--thumb2compact.s1225
1 files changed, 612 insertions, 613 deletions
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