void execute_instr(instr_s * instr){ switch(instr->opcode){ case assign_v: execute_assign(instr); break; case call_v: execute_call(instr); break; case funcenter_v: execute_funcenter(instr); break; case funcexit_v: execute_funcexit(instr); break; case pusharg_v: execute_pusharg(instr); break; case add_v: execute_arithmetic(instr); break; case sub_v: execute_arithmetic(instr); break; case mul_v: execute_arithmetic(instr); break; case div_v: execute_arithmetic(instr); break; case mod_v: execute_arithmetic(instr); break; case jump_v: execute_jump(instr); break; case jeq_v: execute_jeq(instr); break; case jne_v:execute_jeq(instr); break; case jgt_v:execute_cmp(instr); break; case jge_v:execute_cmp(instr); break; case jlt_v:execute_cmp(instr); break; case jle_v:execute_cmp(instr); break; case newtable_v: execute_newtable(instr); break; case tablegetelem_v: execute_tablegetelem(instr); break; case tablesetelem_v: execute_tablesetelem(instr); break; default: return; } }
static int accept4_slave(struct thread *td, int s /* local */, struct sockaddr *name, socklen_t *anamelen, int flags) { int error; error = execute_call(td, s, sizeof(struct sockaddr_storage), flags); if (error != 0) return (error); error = fmaster_execute_accept_return(td, ACCEPT4_RETURN, name, anamelen); if (error != 0) return (error); return (0); }
static int recvmsg_slave(struct thread *td, struct msghdr *umsg, int lfd, struct msghdr *kmsg, int flags) { int error; error = execute_call(td, lfd, kmsg, flags); if (error != 0) return (error); error = execute_return(td, umsg, kmsg); if (error != 0) goto exit; error = 0; exit: fmaster_freeall(td); return (error); }
int execute_print(lua_State *L, struct luadebug_user *user) { int i, g, h, status; LUA_STACK_MARK(L); g = lua_gettop(L); status = execute_call(L, 0); h = lua_gettop(L) - g + 1; for (i = h; i > 0; --i) { user->print(user, " #%d\t", h-i+1); pprint(L, user, -i, true, "hide_underscore"); } lua_settop(L, g); LUA_STACK_CHECK(L, 0); return status; }