summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn van Groningen2012-02-01 14:29:21 +0000
committerJohn van Groningen2012-02-01 14:29:21 +0000
commit83b0c3d6b55f137c84c8954077fd2aed8d82fc85 (patch)
treef786a5b8dbc77f3ac07d516d8d5f7834493ba70b
parentfix compacting of reals (diff)
fix copying of Real nodes
-rw-r--r--macho64/acopy.s54
1 files changed, 25 insertions, 29 deletions
diff --git a/macho64/acopy.s b/macho64/acopy.s
index be8c57f..24bc808 100644
--- a/macho64/acopy.s
+++ b/macho64/acopy.s
@@ -390,9 +390,9 @@ arguments_already_copied_2:
ret
copy_arity_0_node2:
- lea r9,dINT+2[rip]
+ lea r9,__STRING__+2[rip]
cmp rcx,r9
- jb copy_real_file_or_string_2
+ jbe copy_string_or_array_2
lea r9,CHAR+2[rip]
cmp rcx,r9
@@ -463,32 +463,6 @@ copy_normal_hnf_0_2:
att_jae copy_lp2
ret
-copy_real_file_or_string_2:
- lea r9,__STRING__+2[rip]
- cmp rcx,r9
- jbe copy_string_or_array_2
-
-copy_real_or_file_2:
- mov (-24)[rsi],rcx
- sub rsi,24-1
-
- mov [rdx],rsi
- dec rsi
-
- mov rax,8[rdx]
- mov rcx,16[rdx]
-
- mov [rbp],rsi
- add rbp,8
-
- mov 8[rsi],rax
- sub rbx,1
-
- mov 16[rsi],rcx
-
- att_jae copy_lp2
- ret
-
already_copied_2:
dec rcx
sub rbx,1
@@ -507,7 +481,7 @@ copy_record_2:
jb copy_record_node2_1
cmp word ptr (-2+2)[rcx],0
- att_je copy_real_or_file_2
+ att_je copy_record_node2_bb
mov qword ptr [rbp],rdi
mov qword ptr [rdi],rcx
@@ -547,6 +521,28 @@ copy_record_node2_1:
sub rbx,1
att_jae copy_lp2
ret
+
+copy_record_node2_bb:
+ mov (-24)[rsi],rcx
+ sub rsi,24-1
+
+ mov [rdx],rsi
+ dec rsi
+
+ mov rax,8[rdx]
+ mov rcx,16[rdx]
+
+ mov [rbp],rsi
+ add rbp,8
+
+ mov 8[rsi],rax
+ sub rbx,1
+
+ mov 16[rsi],rcx
+
+ att_jae copy_lp2
+ ret
+
.else
mov qword ptr [rbp],rdi
mov qword ptr [rdi],rcx