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