diff --git a/runtime.c b/runtime.c index ea63f5d..5eecb4a 100644 --- a/runtime.c +++ b/runtime.c @@ -52,31 +52,26 @@ void stack_free(struct stack* stack) { } void stack_push(struct stack* stack, struct node_parent* node) { - printf("push\n"); assert(stack->count < stack->size); stack->data[stack->count++] = node; } struct node_parent* stack_peek(struct stack* stack, int32_t offset) { - printf("peek %d\n", offset); assert(offset + 1 <= stack->count); return stack->data[stack->count - offset - 1]; } struct node_parent* stack_pop(struct stack* stack) { - printf("pop\n"); assert(stack->count > 0); return stack->data[--stack->count]; } void stack_popn(struct stack* stack, int32_t count) { - printf("popn %d\n", count); assert(stack->count >= count); stack->count -= count; } void stack_update(struct stack* stack, int32_t offset) { - printf("update %d\n", offset); assert(stack->count >= offset + 2); struct node_ind* to_replace = (struct node_ind*) stack->data[stack->count - 1 - 1 - offset]; to_replace->tag = 3; @@ -92,7 +87,6 @@ void stack_alloc(struct stack* stack, int32_t count) { } void stack_slide(struct stack* stack, int32_t count) { - printf("slide %d\n", count); assert(stack->count > count); stack->data[stack->count - 1 - count] = stack->data[stack->count - 1]; stack->count -= count; @@ -108,7 +102,6 @@ int32_t stack_size(struct stack* stack) { } struct node_parent* malloc_node_num(int32_t value) { - printf("alloc int %d\n", value); struct node_num* node = malloc(sizeof(struct node_app)); node->tag = 0; node->value = value; @@ -116,7 +109,6 @@ struct node_parent* malloc_node_num(int32_t value) { } struct node_parent* malloc_node_app(struct node_parent* left, struct node_parent* right) { - printf("alloc app\n"); struct node_app* node = malloc(sizeof(struct node_app)); node->tag = 1; node->left = left; @@ -124,7 +116,6 @@ struct node_parent* malloc_node_app(struct node_parent* left, struct node_parent return (struct node_parent*) node; } struct node_parent* malloc_node_global(int32_t arity, void (*function)(struct stack*)) { - printf("alloc global %d %p\n", arity, function); struct node_global* node = malloc(sizeof(struct node_app)); node->tag = 2; node->arity = arity; @@ -132,14 +123,12 @@ struct node_parent* malloc_node_global(int32_t arity, void (*function)(struct st return (struct node_parent*) node; } struct node_parent* malloc_node_indirect(struct node_parent* target) { - printf("alloc ind\n"); struct node_ind* node = malloc(sizeof(struct node_app)); node->tag = 3; node->next = target; return (struct node_parent*) node; } struct node_parent* malloc_node_data(char tag, struct node_parent** array) { - printf("alloc data %d\n", tag); struct node_data* node = malloc(sizeof(struct node_data)); node->tag = 4; node->ctag = tag; @@ -154,12 +143,10 @@ void unwind(struct stack* stack) { if(node->tag == 0 || node->tag == 4) { return; } else if(node->tag == 1) { - printf("unwind\n"); stack_push(stack, ((struct node_app*) node)->left); } else if(node->tag == 2) { struct node_global* global = (struct node_global*) node; if(stack->size > global->arity) { - printf("making call\n"); struct node_parent* root = stack_peek(stack, global->arity); stack_popn(stack, global->arity + 1); stack_push(stack, root); @@ -168,15 +155,12 @@ void unwind(struct stack* stack) { stack_push(stack, app->right); root = app->left; } - printf("calling supercomb\n"); global->function(stack); } else { - printf("underflow\n"); stack_popn(stack, stack_size(stack) - 1); return; } } else if(node->tag == 3) { - printf("handling indirection\n"); struct node_ind* ind = (struct node_ind*) node; stack_pop(stack); stack_push(stack, ind->next); @@ -185,7 +169,6 @@ void unwind(struct stack* stack) { } struct node_parent* pack(struct stack* stack, char tag, int count) { - printf("pack %d %d\n", tag, count); assert(stack->count >= count); struct node_parent** new_array = malloc(sizeof(struct node_parent*) * count); struct node_parent** current_slot = new_array; @@ -200,7 +183,6 @@ struct node_parent* pack(struct stack* stack, char tag, int count) { void split(struct stack* stack, struct node_parent* node, int count) { assert(stack->count > 0); - printf("split %d\n", count); struct node_data* data = (struct node_data*) node; while(count > 0) { stack_push(stack, data->array[count - 1]); @@ -211,7 +193,6 @@ void split(struct stack* stack, struct node_parent* node, int count) { struct node_parent* eval(struct node_parent* start) { struct stack new_stack; stack_init(&new_stack); - printf("eval begin\n"); stack_push(&new_stack, start); unwind(&new_stack); struct node_parent* final_node = stack_pop(&new_stack); @@ -224,6 +205,6 @@ extern void main_supercomb(struct stack* stack); int main(int argc, char** argv) { struct node_parent* result = eval(malloc_node_global(0, main_supercomb)); if(result->tag == 0) { - printf("integer generated! value: %d\n", ((struct node_num*)result)->value); + printf("result was a number: %d\n", ((struct node_num*) result)->value); } }