Lines Matching refs:pt

270 #define checkjump(pt,pc)	check(0 <= pc && pc < pt->sizecode)  argument
272 #define checkreg(pt,reg) check((reg) < (pt)->maxstacksize) argument
276 static int precheck (const Proto *pt) { in precheck() argument
277 check(pt->maxstacksize <= MAXSTACK); in precheck()
278 check(pt->numparams+(pt->is_vararg & VARARG_HASARG) <= pt->maxstacksize); in precheck()
279 check(!(pt->is_vararg & VARARG_NEEDSARG) || in precheck()
280 (pt->is_vararg & VARARG_HASARG)); in precheck()
281 check(pt->sizeupvalues <= pt->nups); in precheck()
282 check(pt->sizelineinfo == pt->sizecode || pt->sizelineinfo == 0); in precheck()
283 check(pt->sizecode > 0 && GET_OPCODE(pt->code[pt->sizecode-1]) == OP_RETURN); in precheck()
288 #define checkopenop(pt,pc) luaG_checkopenop((pt)->code[(pc)+1]) argument
304 static int checkArgMode (const Proto *pt, int r, enum OpArgMask mode) { in checkArgMode() argument
308 case OpArgR: checkreg(pt, r); break; in checkArgMode()
310 check(ISK(r) ? INDEXK(r) < pt->sizek : r < pt->maxstacksize); in checkArgMode()
317 static Instruction symbexec (const Proto *pt, int lastpc, int reg) { in symbexec() argument
320 last = pt->sizecode-1; /* points to final return (a `neutral' instruction) */ in symbexec()
321 check(precheck(pt)); in symbexec()
323 Instruction i = pt->code[pc]; in symbexec()
329 checkreg(pt, a); in symbexec()
334 check(checkArgMode(pt, b, getBMode(op))); in symbexec()
335 check(checkArgMode(pt, c, getCMode(op))); in symbexec()
340 if (getBMode(op) == OpArgK) check(b < pt->sizek); in symbexec()
347 check(0 <= dest && dest < pt->sizecode); in symbexec()
355 Instruction d = pt->code[dest-1-j]; in symbexec()
370 check(pc+2 < pt->sizecode); /* check skip */ in symbexec()
371 check(GET_OPCODE(pt->code[pc+1]) == OP_JMP); in symbexec()
376 check(pc+2 < pt->sizecode); /* check its jump */ in symbexec()
377 check(GET_OPCODE(pt->code[pc+1]) != OP_SETLIST || in symbexec()
378 GETARG_C(pt->code[pc+1]) != 0); in symbexec()
389 check(b < pt->nups); in symbexec()
394 check(ttisstring(&pt->k[b])); in symbexec()
398 checkreg(pt, a+1); in symbexec()
408 checkreg(pt, a+2+c); /* space for results */ in symbexec()
414 checkreg(pt, a+3); in symbexec()
426 checkreg(pt, a+b-1); in symbexec()
430 check(checkopenop(pt, pc)); in symbexec()
433 checkreg(pt, a+c-1); in symbexec()
439 if (b > 0) checkreg(pt, a+b-1); in symbexec()
443 if (b > 0) checkreg(pt, a + b); in symbexec()
446 check(pc < pt->sizecode - 1); in symbexec()
452 check(b < pt->sizep); in symbexec()
453 nup = pt->p[b]->nups; in symbexec()
454 check(pc + nup < pt->sizecode); in symbexec()
456 OpCode op1 = GET_OPCODE(pt->code[pc + j]); in symbexec()
464 check((pt->is_vararg & VARARG_ISVARARG) && in symbexec()
465 !(pt->is_vararg & VARARG_NEEDSARG)); in symbexec()
467 if (b == LUA_MULTRET) check(checkopenop(pt, pc)); in symbexec()
468 checkreg(pt, a+b-1); in symbexec()
474 return pt->code[last]; in symbexec()
484 int luaG_checkcode (const Proto *pt) { in luaG_checkcode() argument
485 return (symbexec(pt, pt->sizecode, NO_REG) != 0); in luaG_checkcode()