Lines Matching defs:cc
652 static void recfield (LexState *ls, struct ConsControl *cc) {
659 checklimit(fs, cc->nh, MAX_INT, "items in a constructor");
664 cc->nh++;
668 luaK_codeABC(fs, OP_SETTABLE, cc->t->u.info, rkkey, luaK_exp2RK(fs, &val));
673 static void closelistfield (FuncState *fs, struct ConsControl *cc) {
674 if (cc->v.k == VVOID) return; /* there is no list item */
675 luaK_exp2nextreg(fs, &cc->v);
676 cc->v.k = VVOID;
677 if (cc->tostore == LFIELDS_PER_FLUSH) {
678 luaK_setlist(fs, cc->t->u.info, cc->na, cc->tostore); /* flush */
679 cc->tostore = 0; /* no more items pending */
684 static void lastlistfield (FuncState *fs, struct ConsControl *cc) {
685 if (cc->tostore == 0) return;
686 if (hasmultret(cc->v.k)) {
687 luaK_setmultret(fs, &cc->v);
688 luaK_setlist(fs, cc->t->u.info, cc->na, LUA_MULTRET);
689 cc->na--; /* do not count last expression (unknown number of elements) */
692 if (cc->v.k != VVOID)
693 luaK_exp2nextreg(fs, &cc->v);
694 luaK_setlist(fs, cc->t->u.info, cc->na, cc->tostore);
699 static void listfield (LexState *ls, struct ConsControl *cc) {
701 expr(ls, &cc->v);
702 checklimit(ls->fs, cc->na, MAX_INT, "items in a constructor");
703 cc->na++;
704 cc->tostore++;
708 static void field (LexState *ls, struct ConsControl *cc) {
713 listfield(ls, cc);
715 recfield(ls, cc);
719 recfield(ls, cc);
723 listfield(ls, cc);
736 struct ConsControl cc;
737 cc.na = cc.nh = cc.tostore = 0;
738 cc.t = t;
740 init_exp(&cc.v, VVOID, 0); /* no value (yet) */
744 lua_assert(cc.v.k == VVOID || cc.tostore > 0);
746 closelistfield(fs, &cc);
747 field(ls, &cc);
750 lastlistfield(fs, &cc);
751 SETARG_B(fs->f->code[pc], luaO_int2fb(cc.na)); /* set initial array size */
752 SETARG_C(fs->f->code[pc], luaO_int2fb(cc.nh)); /* set initial table size */