comparison runtime/context.c @ 37:640f541e9116

Added support for type declarations on user defined workers and added a few more methods to Int32 in the runtime for the C backend
author Mike Pavone <pavone@retrodev.com>
date Mon, 05 Oct 2009 23:12:43 -0400
parents 31f8182f3433
children 079200bc3e75 d2f9b0a9403d
comparison
equal deleted inserted replaced
36:495dddadd058 37:640f541e9116
25 void * alloc_stack(context * ct, uint32_t size) 25 void * alloc_stack(context * ct, uint32_t size)
26 { 26 {
27 void * ret; 27 void * ret;
28 stackchunk * current = ct->current_stack; 28 stackchunk * current = ct->current_stack;
29 if(size > STACK_CHUNK_SIZE) 29 if(size > STACK_CHUNK_SIZE)
30 {
31 fprintf(stderr, "%d is bigger than stack chunk size of %d\n", size, STACK_CHUNK_SIZE);
30 return NULL; 32 return NULL;
33 }
31 while(current && STACK_CHUNK_SIZE - current->used < size) 34 while(current && STACK_CHUNK_SIZE - current->used < size)
32 { 35 {
33 if(!current->next) 36 if(!current->next)
34 { 37 {
35 current->next = new_stack(); 38 current->next = new_stack();
36 current->next->prev = current; 39 current->next->prev = current;
37 } 40 }
38 current = current->next; 41 current = current->next;
39 } 42 }
40 if(!current) 43 if(!current)
44 {
45 fprintf(stderr, "Failed to allocate stack chunk");
41 return NULL; 46 return NULL;
47 }
42 ct->current_stack = current; 48 ct->current_stack = current;
43 ret = current->data + current->used; 49 ret = current->data + current->used;
44 current->used += size; 50 current->used += size;
45 return ret; 51 return ret;
46 } 52 }