diff options
author | John van Groningen | 2012-02-01 14:29:21 +0000 |
---|---|---|
committer | John van Groningen | 2012-02-01 14:29:21 +0000 |
commit | 83b0c3d6b55f137c84c8954077fd2aed8d82fc85 (patch) | |
tree | f786a5b8dbc77f3ac07d516d8d5f7834493ba70b | |
parent | fix compacting of reals (diff) |
fix copying of Real nodes
-rw-r--r-- | macho64/acopy.s | 54 |
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 |