void bdd_fprinttable(FILE *ofile, BDD r) { BddNode *node; int n; fprintf(ofile, "ROOT: %d\n", r); if (r < 2) return; bdd_mark(r); for (n=0 ; n<bddnodesize ; n++) { if (MARKED(n)) { node = &bddnodes[n]; UNMARKp(node); fprintf(ofile, "[%5d] ", n); if (filehandler) filehandler(ofile, bddlevel2var[LEVELp(node)]); else fprintf(ofile, "%3d", bddlevel2var[LEVELp(node)]); fprintf(ofile, ": %3d", LOWp(node)); fprintf(ofile, " %3d", HIGHp(node)); fprintf(ofile, "\n"); } } }
void markAndSweep(GCHandler* handler) { MemNode* pt = handler->first; while(pt != NULL) { if(MARKED(pt)) { pt->st = inUse; } else if (INUSE(pt)) { pt -> st = idle; } } }
void copyGC(GCHandler* handler) { handler->gothrough(marker, marked); MemNode* pt = handler->first; MemNode* newfirst; MemNode* newlast; while(pt!=NULL && ! (MARKED(pt))) { pt = pt -> next; } newfirst = pt; newlast = pt; while(pt!=NULL) { if(MARKED(pt)) { newlast -> next = pt; newlast = pt; } pt = pt -> next; } // Initialize idle mempool int interchangesize = handler->usesize; handler->usesize = handler ->idlesize; handler->idlesize = interchangesize; void* interchangemem = handler -> mempoolIdle; handler -> mempoolIdle = handler -> mempoolInUse; handler -> mempoolInUse = interchangemem; MemNode* first = handler -> mempoolInUse; first -> st = idle; first -> next = NULL; first -> size = handler -> usesize - sizeof(MemNode); copyAllObjects(newfirst, first); handler -> first = first; //Reconnection of the pointer pointing }
void sweep(Env *env, Obj *root) { free_list = NULL; int i; for (i = 0; i < memory.len; i++) { Obj *heap = memory.heaps[i]; int j; for (j = 0; j < OBJECTS_PER_HEAP; j++) { if (&heap[j] != BITMAP_CELL_OF(heap) && !MARKED(&heap[j])) { sweep_obj(&heap[j]); } } } }
det_rule_head () { fprintf (output, "\n\n/* %s */\n", FREPR (ulhs)); if (MARKED (ulhs, external)) fprintf (output, "int D%s(", REPR (ulhs)); else fprintf (output, "static int D_%d(", ulhs); det_get_affixes (AFFIXDEF (SON (ulhs))); if (fprintf (output, " {\n register AFFIX raf = af;\n") == EOF) { fprintf (stderr, "glammar: Write failed (try again later)\n"); exit (12); } if (BROTHER (SON (ulhs)) != nil) { fprintf (output, " char *rc = c, *rip = ip;\n"); } if (lookahead_in_alt (SON (ulhs))) fprintf (output, " char *lkh;\n"); if (BROTHER (SON (ulhs)) != nil) fprintf (output, " int cut_set = 0;\n"); fprintf (output, " int ltr=level++;\n"); if (trace_flag) fprintf (output, " char *pntnamesv = pntname; char *ntname = \"%s\";\n", FREPR (ulhs)); else if (errormsg_flag) { int mem = SON (SON (ulhs)); if (mem != nil && DEF (mem) == equal) fprintf (output, " char *pntnamesv = pntname; char *ntname = \"%s\"; int lsave = level+10;\n", FREPR (ulhs)); else fprintf (output, " char *pntnamesv = pntname; char *ntname = \"%s\"; int lsave = level++;\n", FREPR (ulhs)); } if (stat_flag) { fprintf (output, " int s1 = stat_count++;\n"); } save_lattice_afx (); if (tail_recursion_elimination ()) fprintf (output, " label_%d:\n\n", ulhs); }
static void bdd_fprintdot_rec(FILE* ofile, BDD r) { if (ISCONST(r) || MARKED(r)) return; fprintf(ofile, "%d [label=\"", r); if (filehandler) filehandler(ofile, bddlevel2var[LEVEL(r)]); else fprintf(ofile, "%d", bddlevel2var[LEVEL(r)]); fprintf(ofile, "\"];\n"); fprintf(ofile, "%d -> %d [style=dotted];\n", r, LOW(r)); fprintf(ofile, "%d -> %d [style=filled];\n", r, HIGH(r)); SETMARK(r); bdd_fprintdot_rec(ofile, LOW(r)); bdd_fprintdot_rec(ofile, HIGH(r)); }
void mark_obj(Obj *obj) { if (obj && obj->type != TSPE && !MARKED(obj)) { /* if (DEBUG_GC) printf("marking %p (type: %d)\n", obj, obj->type); */ MARK(obj); switch (obj->type) { case TCELL: mark_obj(obj->car); mark_obj(obj->cdr); break; case TFUNCTION: case TMACRO: mark_obj(obj->params); mark_obj(obj->body); break; } } }
bool Board::isFlaged(int row, int column) { return MARKED(row, column); }