void kp_obj_free_gclist(ktap_state *ks, ktap_gcobject *o) { while (o) { ktap_gcobject *next; next = gch(o)->next; switch (gch(o)->tt) { case KTAP_TYPE_TABLE: kp_tab_free(ks, (ktap_tab *)o); break; case KTAP_TYPE_PROTO: free_proto(ks, (ktap_proto *)o); break; case KTAP_TYPE_UPVAL: kp_freeupval(ks, (ktap_upval *)o); break; case KTAP_TYPE_PTABLE: kp_ptab_free(ks, (ktap_ptab *)o); break; case KTAP_TYPE_RAW: kp_free(ks, ((ktap_rawobj *)o)->v); break; default: kp_free(ks, o); } o = next; } }
void kp_obj_free_gclist(ktap_state_t *ks, ktap_obj_t *o) { while (o) { ktap_obj_t *next; next = gch(o)->nextgc; switch (gch(o)->gct) { case ~KTAP_TTAB: kp_tab_free(ks, (ktap_tab_t *)o); break; case ~KTAP_TUPVAL: kp_freeupval(ks, (ktap_upval_t *)o); break; default: kp_free(ks, o); } o = next; } }