From dd6ec019f296cdaca3546d6218cb20246475faf7 Mon Sep 17 00:00:00 2001 From: CVS2SVN Date: Wed, 13 Dec 2006 11:05:11 +0000 Subject: This commit was manufactured by cvs2svn to create tag 'clean-2-2'. --- acopy.asm | 3 ++- astartup.asm | 8 ++++++-- icopy.s | 1 + iwrite_heap.c | 18 +++++++++--------- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/acopy.asm b/acopy.asm index fadf47e..13f66ed 100644 --- a/acopy.asm +++ b/acopy.asm @@ -788,7 +788,8 @@ record_arguments_already_copied_3_b: mov rdx,qword ptr [rcx] pop rax - mov qword ptr 16 [rsi],rdx + sub rdx,1 + mov qword ptr 16[rsi],rdx sub rbx,1 jae copy_lp2 diff --git a/astartup.asm b/astartup.asm index ca39b2b..0d126dd 100644 --- a/astartup.asm +++ b/astartup.asm @@ -25,7 +25,9 @@ _DATA ends ifndef LINUX extrn convert_real_to_string:near endif + ifndef LINUX extrn write_heap:near + endif extrn return_code:near extrn execution_aborted:near extrn e____system__kFinalizerGCTemp:near @@ -1233,7 +1235,7 @@ printD: test al,2 DtoAC_record: ifdef NEW_DESCRIPTORS - movsxd rbp,dword ptr (-6)[rbp] + movsxd rbp,dword ptr (-6)[rax] else movsx rbp,dword ptr (-4)[rbp] endif @@ -1266,7 +1268,7 @@ DtoAC_: endif DtoAC_string_a2: - mov rax,qword ptr [rbp] + mov eax,dword ptr [rbp] lea rcx,4[rbp] jmp build_string @@ -2552,7 +2554,9 @@ gc1: mov rcx,rax sub rsp,32 endif + ifndef LINUX call write_heap + endif mov rsp,rbp add rsp,128 diff --git a/icopy.s b/icopy.s index f03527f..25d0d31 100644 --- a/icopy.s +++ b/icopy.s @@ -850,6 +850,7 @@ record_arguments_already_copied_3_b: movl (a0),a1 popl d0 + subl $1,a1 movl a1,8(a3) subl $1,d1 diff --git a/iwrite_heap.c b/iwrite_heap.c index 3ab9146..fcb6c4c 100644 --- a/iwrite_heap.c +++ b/iwrite_heap.c @@ -31,12 +31,12 @@ struct heap_info { int *data_begin; int *small_integers; int *characters; - int int_descriptor; - int char_descriptor; - int real_descriptor; - int bool_descriptor; - int string_descriptor; - int array_descriptor; + size_t int_descriptor; + size_t char_descriptor; + size_t real_descriptor; + size_t bool_descriptor; + size_t string_descriptor; + size_t array_descriptor; }; static int heap_written_count=0; @@ -166,15 +166,15 @@ void write_heap (struct heap_info *h) /* write stack */ if (fileOk) - fileOk = WriteFile (heap_file_h, h->stack_begin, (int)(h->stack_end) - (int)(h->stack_begin), &NumberOfBytesWritten, NULL); + fileOk = WriteFile (heap_file_h, h->stack_begin, (size_t)(h->stack_end) - (size_t)(h->stack_begin), &NumberOfBytesWritten, NULL); /* write heap1 */ if (fileOk) - fileOk = WriteFile (heap_file_h, h->heap1_begin, (int)(h->heap1_end) - (int)(h->heap1_begin), &NumberOfBytesWritten, NULL); + fileOk = WriteFile (heap_file_h, h->heap1_begin, (size_t)(h->heap1_end) - (size_t)(h->heap1_begin), &NumberOfBytesWritten, NULL); /* write heap2 */ if (fileOk) - fileOk = WriteFile (heap_file_h, h->heap2_begin, (int)(h->heap2_end) - (int)(h->heap2_begin), &NumberOfBytesWritten, NULL); + fileOk = WriteFile (heap_file_h, h->heap2_begin, (size_t)(h->heap2_end) - (size_t)(h->heap2_begin), &NumberOfBytesWritten, NULL); if (!fileOk){ heap_written_count = MAX_N_HEAPS; -- cgit v1.2.3