Mercurial > repos > rhope
diff runtime/fixed_alloc.c @ 49:3e20ed8959c4
Added initial FFI implementation, Array type and 64-bit integers
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Thu, 08 Apr 2010 01:02:18 -0400 |
parents | a24eb366195c |
children | d1569087348f |
line wrap: on
line diff
--- a/runtime/fixed_alloc.c Tue Mar 02 00:18:49 2010 -0500 +++ b/runtime/fixed_alloc.c Thu Apr 08 01:02:18 2010 -0400 @@ -36,11 +36,13 @@ if(block) { --manager->freecount; - manager->freelist = block->next; + manager->freelist = block->next; + memset(block, 0xCD, BLOCK_SIZE); } else { - block = block_alloc(BLOCK_SIZE); + block = block_alloc(BLOCK_SIZE); + memset(block, 0xAB, BLOCK_SIZE); } manager->inuse[bucket] = block; block->next = NULL; @@ -79,7 +81,6 @@ block->next->last = block->last; } i = i*8+bit; - //printf("%X\n", ((char *)block)+BLOCK_SIZE-((i+1)*size)); return (void *)(((char *)block)+BLOCK_SIZE-((i+1)*size)); } @@ -93,7 +94,8 @@ return; } //puts("ffree"); - size = ADJUST_SIZE(size); + size = ADJUST_SIZE(size); + memset(ptr, 0xEF, size); block = GET_BLOCK(ptr); i = (((((char *)block) + BLOCK_SIZE) - ((char *)ptr))/size)-1; bit = i & 0x7; @@ -119,8 +121,10 @@ manager->inuse[bucket] = block->next; if(block->next) block->next->last = block->last; - if(manager->freecount == MAX_FREE) - block_free(block, BLOCK_SIZE); + if(manager->freecount == MAX_FREE) + { + block_free(block, BLOCK_SIZE); + } else { block->next = manager->freelist;