X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fsave.c;h=d2f4f07071a798d5fb07fc45f058be1a4b9d8fa7;hb=bf40ae88bc289fd765a33861cc4bc0853ed483ba;hp=9746524918536e3e6abcba38486ab23c15d9f255;hpb=d6f9676ae94419cb5544c45821a8d31adbc1fbe8;p=sbcl.git diff --git a/src/runtime/save.c b/src/runtime/save.c index 9746524..d2f4f07 100644 --- a/src/runtime/save.c +++ b/src/runtime/save.c @@ -16,10 +16,14 @@ #include #include #include -#include #include #include "sbcl.h" +#if defined(LISP_FEATURE_WIN32) && defined(LISP_FEATURE_SB_THREAD) +#include "pthreads_win32.h" +#else +#include +#endif #include "runtime.h" #include "os.h" #include "core.h" @@ -75,7 +79,7 @@ write_bytes_to_file(FILE * file, char *addr, long bytes, int compression) { if (compression == COMPRESSION_LEVEL_NONE) { while (bytes > 0) { - long count = fwrite(addr, 1, bytes, file); + sword_t count = fwrite(addr, 1, bytes, file); if (count > 0) { bytes -= count; addr += count; @@ -186,14 +190,14 @@ output_space(FILE *file, int id, lispobj *addr, lispobj *end, bytes = words * sizeof(lispobj); - printf("writing %lu bytes from the %s space at 0x%08lx\n", - (unsigned long)bytes, names[id], (unsigned long)addr); + printf("writing %lu bytes from the %s space at 0x%p\n", + bytes, names[id], addr); data = write_and_compress_bytes(file, (char *)addr, bytes, file_offset, core_compression_level); write_lispobj(data, file); - write_lispobj((long)addr / os_vm_page_size, file); + write_lispobj((uword_t)addr / os_vm_page_size, file); write_lispobj((bytes + os_vm_page_size - 1) / os_vm_page_size, file); } @@ -305,13 +309,13 @@ save_to_filehandle(FILE *file, char *filename, lispobj init_function, #ifdef LISP_FEATURE_GENCGC { - size_t size = (last_free_page*sizeof(long)+os_vm_page_size-1) + size_t size = (last_free_page*sizeof(sword_t)+os_vm_page_size-1) &~(os_vm_page_size-1); - unsigned long *data = calloc(size, 1); + uword_t *data = calloc(size, 1); if (data) { - unsigned long word; - long offset; - int i; + uword_t word; + sword_t offset; + page_index_t i; for (i = 0; i < last_free_page; i++) { /* Thanks to alignment requirements, the two low bits * are always zero, so we can use them to store the