diff options
Diffstat (limited to 'thumb2copy.s')
-rw-r--r-- | thumb2copy.s | 1283 |
1 files changed, 641 insertions, 642 deletions
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
|