X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fos-common.c;h=017dc4f3e1ada3dce6bc737897e1f538bb196c07;hb=e4542bc034db18cf98f005b2dac53a6d7d5c7260;hp=1194cccc834acbec4659387a66036482adbf45a8;hpb=c9bb20c4b0d1f232ec83569d3456b3f3edc4aa1c;p=sbcl.git diff --git a/src/runtime/os-common.c b/src/runtime/os-common.c index 1194ccc..017dc4f 100644 --- a/src/runtime/os-common.c +++ b/src/runtime/os-common.c @@ -11,7 +11,9 @@ #include #include +#include +#include "sbcl.h" #include "os.h" #include "interr.h" @@ -36,21 +38,21 @@ os_zero(os_vm_address_t addr, os_vm_size_t length) block_size = os_trunc_size_to_page(length); if (block_start > addr) - bzero((char *)addr, block_start-addr); + bzero((char *)addr, block_start-addr); if (block_size < length) - bzero((char *)block_start+block_size, length-block_size); + bzero((char *)block_start+block_size, length-block_size); if (block_size != 0) { - /* Now deallocate and allocate the block so that it faults in - * zero-filled. */ + /* Now deallocate and allocate the block so that it faults in + * zero-filled. */ - os_invalidate(block_start, block_size); - addr = os_validate(block_start, block_size); + os_invalidate(block_start, block_size); + addr = os_validate(block_start, block_size); - if(addr == NULL || addr != block_start) - lose("os_zero: block moved! 0x%08x ==> 0x%08x", - block_start, - addr); + if (addr == NULL || addr != block_start) + lose("os_zero: block moved! 0x%08x ==> 0x%08x", + block_start, + addr); } } @@ -82,26 +84,26 @@ os_reallocate(os_vm_address_t addr, os_vm_size_t old_len, os_vm_size_t len) len=os_round_up_size_to_page(len); old_len=os_round_up_size_to_page(old_len); - if(addr==NULL) - return os_allocate(len); + if (addr==NULL) + return os_allocate(len); else{ - long len_diff=len-old_len; - - if(len_diff<0) - os_invalidate(addr+len,-len_diff); - else{ - if(len_diff!=0){ - os_vm_address_t new=os_allocate(len); - - if(new!=NULL){ - bcopy(addr,new,old_len); - os_invalidate(addr,old_len); - } - - addr=new; - } - } - return addr; + long len_diff=len-old_len; + + if (len_diff<0) + os_invalidate(addr+len,-len_diff); + else{ + if (len_diff!=0) { + os_vm_address_t new=os_allocate(len); + + if(new!=NULL){ + bcopy(addr,new,old_len); + os_invalidate(addr,old_len); + } + + addr=new; + } + } + return addr; } }