Mercurial > hg > Papers > 2023 > soto-master
view Paper/src/context2.c @ 32:4915eaa51ee0 default tip
Add front
author | soto <soto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 23 Feb 2023 18:39:56 +0900 |
parents | a72446879486 |
children |
line wrap: on
line source
#include <stdlib.h> #include "../context.h" void initContext(struct Context* context) { context->heapLimit = sizeof(union Data)*ALLOCATE_SIZE; context->code = (__code(**) (struct Context*)) NEWN(ALLOCATE_SIZE, void*); context->data = NEWN(ALLOCATE_SIZE, union Data*); context->heapStart = NEWN(context->heapLimit, char); context->heap = context->heapStart; context->code[C_cs1] = cs1_stub; context->code[C_cs2] = cs2_stub; context->code[C_exit_code] = exit_code_stub; context->code[C_start_code] = start_code_stub; #include "dataGearInit.c" } __code meta(struct Context* context, enum Code next) { // printf("meta %d\n",next); goto (context->code[next])(context); } __code start_code(struct Context* context) { goto meta(context, context->next); } __code start_code_stub(struct Context* context) { goto start_code(context); } __code exit_code(struct Context* context) { free(context->code); free(context->data); free(context->heapStart); goto exit(0); } __code exit_code_stub(struct Context* context) { goto exit_code(context); }