Lines Matching refs:cc

646 static void recfield (LexState *ls, struct ConsControl *cc) {
653 checklimit(fs, cc->nh, MAX_INT, "items in a constructor");
658 cc->nh++;
662 luaK_codeABC(fs, OP_SETTABLE, cc->t->u.info, rkkey, luaK_exp2RK(fs, &val));
667 static void closelistfield (FuncState *fs, struct ConsControl *cc) {
668 if (cc->v.k == VVOID) return; /* there is no list item */
669 luaK_exp2nextreg(fs, &cc->v);
670 cc->v.k = VVOID;
671 if (cc->tostore == LFIELDS_PER_FLUSH) {
672 luaK_setlist(fs, cc->t->u.info, cc->na, cc->tostore); /* flush */
673 cc->tostore = 0; /* no more items pending */
678 static void lastlistfield (FuncState *fs, struct ConsControl *cc) {
679 if (cc->tostore == 0) return;
680 if (hasmultret(cc->v.k)) {
681 luaK_setmultret(fs, &cc->v);
682 luaK_setlist(fs, cc->t->u.info, cc->na, LUA_MULTRET);
683 cc->na--; /* do not count last expression (unknown number of elements) */
686 if (cc->v.k != VVOID)
687 luaK_exp2nextreg(fs, &cc->v);
688 luaK_setlist(fs, cc->t->u.info, cc->na, cc->tostore);
693 static void listfield (LexState *ls, struct ConsControl *cc) {
695 expr(ls, &cc->v);
696 checklimit(ls->fs, cc->na, MAX_INT, "items in a constructor");
697 cc->na++;
698 cc->tostore++;
702 static void field (LexState *ls, struct ConsControl *cc) {
707 listfield(ls, cc);
709 recfield(ls, cc);
713 recfield(ls, cc);
717 listfield(ls, cc);
730 struct ConsControl cc;
731 cc.na = cc.nh = cc.tostore = 0;
732 cc.t = t;
734 init_exp(&cc.v, VVOID, 0); /* no value (yet) */
738 lua_assert(cc.v.k == VVOID || cc.tostore > 0);
740 closelistfield(fs, &cc);
741 field(ls, &cc);
744 lastlistfield(fs, &cc);
745 SETARG_B(fs->f->code[pc], luaO_int2fb(cc.na)); /* set initial array size */
746 SETARG_C(fs->f->code[pc], luaO_int2fb(cc.nh)); /* set initial table size */