Mercurial > repos > rhope
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 } |