summaryrefslogtreecommitdiff
path: root/acopy.asm
diff options
context:
space:
mode:
authorJohn van Groningen2011-08-17 11:14:56 +0000
committerJohn van Groningen2011-08-17 11:14:56 +0000
commit476a4aeb1da3b57b56485a66c014abfddee4a5a8 (patch)
tree5db8ccd81680632b38084f2386eb8db549f62a35 /acopy.asm
parentuse %ld instead of %d for reading or writing 64 bit integers (diff)
fix copying of Real nodes
Diffstat (limited to 'acopy.asm')
-rw-r--r--acopy.asm53
1 files changed, 24 insertions, 29 deletions
diff --git a/acopy.asm b/acopy.asm
index a5ef5af..69b5bb6 100644
--- a/acopy.asm
+++ b/acopy.asm
@@ -390,8 +390,8 @@ arguments_already_copied_2:
ret
copy_arity_0_node2:
- cmp rcx,offset dINT+2
- jb copy_real_file_or_string_2
+ cmp rcx,offset __STRING__+2
+ jbe copy_string_or_array_2
cmp rcx,offset CHAR+2
ja copy_normal_hnf_0_2
@@ -462,32 +462,6 @@ copy_normal_hnf_0_2:
jae copy_lp2
ret
-copy_real_file_or_string_2:
- lea r9,__STRING__+2
- 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
-
- jae copy_lp2
- ret
-
already_copied_2:
dec rcx
sub rbx,1
@@ -506,7 +480,7 @@ copy_record_2:
jb copy_record_node2_1
cmp word ptr (-2+2)[rcx],0
- je copy_real_or_file_2
+ je copy_record_node2_bb
mov qword ptr [rbp],rdi
mov qword ptr [rdi],rcx
@@ -546,6 +520,27 @@ copy_record_node2_1:
sub rbx,1
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
+
+ jae copy_lp2
+ ret
else
mov qword ptr [rbp],rdi
mov qword ptr [rdi],rcx