static struct KVirtualCode *MiniVM_RunVirtualMachine(KonohaContext *kctx, KonohaStack *sfp0, struct KVirtualCode *pc) { #ifdef USE_DIRECT_THREADED_CODE static void *OPJUMP[] = { OPDEFINE(OPLABEL) }; #endif krbp_t *rbp = (krbp_t *)sfp0; DISPATCH_START(pc); OPDEFINE(OPEXEC); DISPATCH_END(pc); L_RETURN:; return pc; }
int GPerlVirtualMachine::run(GPerlVirtualMachineCode *codes) { static GPerlVirtualMachineCode *top; GPerlVirtualMachineCode *pc = codes; Reg reg_[MAX_CALLSTACK_SIZE]; Reg *reg = reg_; GPerlEnv *callstack = createCallStack(); GPerlObject **argstack = createArgStack(); static char shared_buf[128] = {0};//TODO must be variable buffer static string outbuf = ""; #include "gen_label.cpp" DISPATCH_START(); CASE(UNDEF), { GPERL_UNDEF(); pc++; BREAK(); });