annotate runtime/fixed_alloc.c @ 75:0083b2f7b3c7

Partially working implementation of List. Modified build scripts to allow use of other compilers. Fixed some bugs involving method implementations on different types returning different numbers of outputs. Added Fold to the 'builtins' in the comipler.
author Mike Pavone <pavone@retrodev.com>
date Tue, 06 Jul 2010 07:52:59 -0400
parents d1569087348f
children 5a195ee08eac
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
41
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
1 #include "fixed_alloc.h"
67
d1569087348f Some small optimizations
Mike Pavone <pavone@retrodev.com>
parents: 49
diff changeset
2 #include <stdlib.h>
48
a24eb366195c Fixed some bugs introduced in previous commit and moved definition of integer methods out of runtime and into the compiler
Mike Pavone <pavone@retrodev.com>
parents: 41
diff changeset
3 #include <string.h>
41
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
4
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
5 uint16_t max_free[(MAX_SIZE-MIN_SIZE)/STRIDE];
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
6
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
7 void fixed_alloc_init()
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
8 {
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
9 int i;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
10 for(i = 0; i < (MAX_SIZE-MIN_SIZE)/STRIDE; ++i)
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
11 max_free[i] = (BLOCK_SIZE - sizeof(mem_block)+1)*8/((i*STRIDE+MIN_SIZE)*8+1);
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
12 }
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
13
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
14 mem_manager * new_mem_manager()
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
15 {
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
16 int i;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
17 mem_manager * ret = malloc(sizeof(mem_manager));
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
18 memset(ret, 0, sizeof(mem_manager));
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
19 return ret;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
20 }
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
21
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
22 void * falloc(size_t size, mem_manager * manager)
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
23 {
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
24 uint16_t i,bit;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
25 uint16_t bucket;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
26 mem_block * block,*temp;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
27 if(size > MAX_SIZE)
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
28 return malloc(size);
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
29 //puts("falloc");
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
30 size = ADJUST_SIZE(size);
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
31 bucket = (size-MIN_SIZE)/STRIDE;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
32 block = manager->inuse[bucket];
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
33 if(!block)
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
34 {
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
35 block = manager->freelist;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
36 if(block)
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
37 {
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
38 --manager->freecount;
67
d1569087348f Some small optimizations
Mike Pavone <pavone@retrodev.com>
parents: 49
diff changeset
39 manager->freelist = block->next;
d1569087348f Some small optimizations
Mike Pavone <pavone@retrodev.com>
parents: 49
diff changeset
40 //memset(block, 0xCD, BLOCK_SIZE);
41
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
41 }
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
42 else
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
43 {
67
d1569087348f Some small optimizations
Mike Pavone <pavone@retrodev.com>
parents: 49
diff changeset
44 block = block_alloc(BLOCK_SIZE);
d1569087348f Some small optimizations
Mike Pavone <pavone@retrodev.com>
parents: 49
diff changeset
45 //memset(block, 0xAB, BLOCK_SIZE);
41
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
46 }
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
47 manager->inuse[bucket] = block;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
48 block->next = NULL;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
49 block->last = NULL;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
50 block->numfree = max_free[bucket];
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
51 block->firstfree = 0;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
52 memset(block->bitmap, 0xFF, max_free[bucket]/8+1);
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
53 }
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
54 //printf("block: %X,numfree: %d, firstfree: %d, maxfree: %d\n", block, block->numfree, block->firstfree, max_free[bucket]);
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
55 /*if(block->numfree > max_free[bucket])
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
56 {
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
57 puts("uh oh!");
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
58 exit(1);
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
59 }*/
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
60 //find first free
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
61 i = block->firstfree;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
62 while(!block->bitmap[i])
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
63 ++i;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
64 //printf("i:%d,bitmap:%X\n", i, block->bitmap[i]);
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
65 bit = 0;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
66 while(!((1 << bit) & block->bitmap[i]))
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
67 ++bit;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
68 //update free bitmask
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
69 block->bitmap[i] ^= 1 << bit;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
70 //If current bitmap has no more free elements, set firstfree to the next bitmap
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
71 if(!block->bitmap[i])
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
72 block->firstfree = i+1;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
73 else
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
74 block->firstfree = i;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
75 --block->numfree;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
76 if(!block->numfree)
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
77 {
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
78 //Remove from linked list if there are no more free elements
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
79 manager->inuse[bucket] = block->next;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
80 if(block->next)
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
81 block->next->last = block->last;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
82 }
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
83 i = i*8+bit;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
84 return (void *)(((char *)block)+BLOCK_SIZE-((i+1)*size));
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
85 }
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
86
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
87 void ffree(void * ptr, size_t size, mem_manager * manager)
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
88 {
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
89 mem_block * block,*temp;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
90 uint16_t i,bit,bucket;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
91 if(size > MAX_SIZE)
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
92 {
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
93 free(ptr);
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
94 return;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
95 }
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
96 //puts("ffree");
67
d1569087348f Some small optimizations
Mike Pavone <pavone@retrodev.com>
parents: 49
diff changeset
97 size = ADJUST_SIZE(size);
d1569087348f Some small optimizations
Mike Pavone <pavone@retrodev.com>
parents: 49
diff changeset
98 //memset(ptr, 0xEF, size);
41
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
99 block = GET_BLOCK(ptr);
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
100 i = (((((char *)block) + BLOCK_SIZE) - ((char *)ptr))/size)-1;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
101 bit = i & 0x7;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
102 i = (i&0xFFFFFFF8) >> 3;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
103 //printf("ptr:%X,block:%X,i:%d,bit:%d\n", ptr,block,bit,i);
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
104 block->bitmap[i] |= 1 << bit;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
105 if(i < block->firstfree)
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
106 block->firstfree = i;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
107 ++block->numfree;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
108 bucket = (size-MIN_SIZE)/STRIDE;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
109 //printf("numfree:%d,max_free:%d,last:%X,next:%X\n", block->numfree, max_free[bucket], block->last, block->next);
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
110 /*if(block->numfree > max_free[bucket])
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
111 {
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
112 puts("uh oh!");
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
113 exit(1);
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
114 }*/
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
115 if(block->numfree == max_free[bucket])
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
116 {
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
117 //Block is now unused, remove it from the inuse list
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
118 if(block->last)
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
119 block->last->next = block->next;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
120 else
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
121 manager->inuse[bucket] = block->next;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
122 if(block->next)
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
123 block->next->last = block->last;
67
d1569087348f Some small optimizations
Mike Pavone <pavone@retrodev.com>
parents: 49
diff changeset
124 if(manager->freecount == MAX_FREE)
49
3e20ed8959c4 Added initial FFI implementation, Array type and 64-bit integers
Mike Pavone <pavone@retrodev.com>
parents: 48
diff changeset
125 {
67
d1569087348f Some small optimizations
Mike Pavone <pavone@retrodev.com>
parents: 49
diff changeset
126 block_free(block, BLOCK_SIZE);
49
3e20ed8959c4 Added initial FFI implementation, Array type and 64-bit integers
Mike Pavone <pavone@retrodev.com>
parents: 48
diff changeset
127 }
41
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
128 else
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
129 {
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
130 block->next = manager->freelist;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
131 manager->freelist = block;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
132 ++manager->freecount;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
133 }
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
134 } else if(block->numfree == 1) {
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
135 //Block was previously full, add it to the inuse list
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
136 block->next = manager->inuse[bucket];
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
137 block->last = NULL;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
138 manager->inuse[bucket] = block;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
139 if(block->next)
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
140 block->next->last = block;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
141 } else if(block->next && block->next->numfree < block->numfree) {
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
142 //We want to use more filled blockes before less filled ones
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
143 //so we can return empty ones to the OS more often
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
144 //so if we now have more free nodes in this block than the
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
145 //next one swap them
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
146 temp = block->next;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
147 block->next = temp->next;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
148 temp->last = block->last;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
149 block->last = temp;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
150 temp->next = block;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
151 if(block->next)
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
152 block->next->last = block;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
153 if(temp->last)
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
154 temp->last->next = temp;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
155 else
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
156 manager->inuse[bucket] = temp;
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
157 }
1b86a1ee500a Added faster allocator for small objects
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
158 }