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;