Lines Matching refs:cc
851 static void recfield (LexState *ls, ConsControl *cc) {
857 checklimit(fs, cc->nh, MAX_INT, "items in a constructor");
862 cc->nh++;
864 tab = *cc->t;
872 static void closelistfield (FuncState *fs, ConsControl *cc) {
873 if (cc->v.k == VVOID) return; /* there is no list item */
874 luaK_exp2nextreg(fs, &cc->v);
875 cc->v.k = VVOID;
876 if (cc->tostore == LFIELDS_PER_FLUSH) {
877 luaK_setlist(fs, cc->t->u.info, cc->na, cc->tostore); /* flush */
878 cc->na += cc->tostore;
879 cc->tostore = 0; /* no more items pending */
884 static void lastlistfield (FuncState *fs, ConsControl *cc) {
885 if (cc->tostore == 0) return;
886 if (hasmultret(cc->v.k)) {
887 luaK_setmultret(fs, &cc->v);
888 luaK_setlist(fs, cc->t->u.info, cc->na, LUA_MULTRET);
889 cc->na--; /* do not count last expression (unknown number of elements) */
892 if (cc->v.k != VVOID)
893 luaK_exp2nextreg(fs, &cc->v);
894 luaK_setlist(fs, cc->t->u.info, cc->na, cc->tostore);
896 cc->na += cc->tostore;
900 static void listfield (LexState *ls, ConsControl *cc) {
902 expr(ls, &cc->v);
903 cc->tostore++;
907 static void field (LexState *ls, ConsControl *cc) {
912 listfield(ls, cc);
914 recfield(ls, cc);
918 recfield(ls, cc);
922 listfield(ls, cc);
935 ConsControl cc;
937 cc.na = cc.nh = cc.tostore = 0;
938 cc.t = t;
941 init_exp(&cc.v, VVOID, 0); /* no value (yet) */
944 lua_assert(cc.v.k == VVOID || cc.tostore > 0);
946 closelistfield(fs, &cc);
947 field(ls, &cc);
950 lastlistfield(fs, &cc);
951 luaK_settablesize(fs, pc, t->u.info, cc.na, cc.nh);