summaryrefslogtreecommitdiff
path: root/acopy.asm
diff options
context:
space:
mode:
authorJohn van Groningen2011-06-24 12:38:37 +0000
committerJohn van Groningen2011-06-24 12:38:37 +0000
commit11161e614778ccbeb12cf27276486e8b5d186416 (patch)
tree5d1f2911a66b13821dadf1661ade9192c55659eb /acopy.asm
parentallow arrays in data segment (diff)
allow arrays in data segment
Diffstat (limited to 'acopy.asm')
-rw-r--r--acopy.asm29
1 files changed, 16 insertions, 13 deletions
diff --git a/acopy.asm b/acopy.asm
index 4d9c811..a5ef5af 100644
--- a/acopy.asm
+++ b/acopy.asm
@@ -1149,13 +1149,12 @@ copy_arity_0_node2_:
ret
copy_string_or_array_2:
- mov rcx,rdx
+ mov rcx,rdx
jne copy_array_2
- mov rax,rcx
- sub rax,heap_p1
- cmp rax,semi_space_size
- jae copy_string_constant
+ sub rdx,heap_p1
+ cmp rdx,semi_space_size
+ jae copy_string_or_array_constant
mov rdx,8[rcx]
add rbp,8
@@ -1196,15 +1195,11 @@ cp_s_arg_lp2:
jae copy_lp2
ret
-copy_string_constant:
- mov qword ptr [rbp],rdx
- add rbp,8
-
- sub rbx,1
- jae copy_lp2
- ret
-
copy_array_2:
+ sub rdx,heap_p1
+ cmp rdx,semi_space_size
+ jae copy_string_or_array_constant
+
push rbx
mov rax,qword ptr 16[rcx]
@@ -1282,6 +1277,14 @@ copy_bool_array_2:
shr rbx,3
jmp copy_int_or_real_array_2
+copy_string_or_array_constant:
+ mov qword ptr [rbp],rcx
+ add rbp,8
+
+ sub rbx,1
+ jae copy_lp2
+ ret
+
end_copy1:
mov heap_end_after_gc,rsi