Ejemplo n.º 1
0
/* sort_form - sort fields on form(per page) */
static void
sort_form(FORM *f)
{
	FIELD **field;
	FIELD *p;
	int i, page, pmin, pmax;

	field = f->field;

	for (page = 0; page < f->maxpage; ++page) {	/* for each page */
		p = (FIELD *) 0;

		pmin = Pmin(f, page);
		pmax = Pmax(f, page);

		for (i = pmin; i <= pmax; ++i) {	/* for each field */
			field[i]->index = i;
			field[i]->page = page;

			p = insert(field[i], p);
		}
		Smin(f, page) = p->index;		/* set sorted min */
		Smax(f, page) = p->sprev->index;	/* set sorted max */
	}
}
Ejemplo n.º 2
0
bool need_compaction_next_gc() {
    if (heap.working_set_size == 0 || !gc_adaptive) {
        TRACE2("gc.adaptive", "static Smin analysis");
        return heap.allocation_region_end() - heap.pos < heap.size * 0.7f;
    } else {
        float smin = Smin(heap.roots_start - heap.base - RESERVED_FOR_HEAP_NULL - heap.working_set_size,
                heap.Tcompact, heap.Tcopy, heap.dS_copy);
        float free = (float) (heap.allocation_region_end() - heap.old_objects.pos);
        INFO2("gc.smin", "smin = " << mb((size_t)smin)
                << " (working set " << mb((size_t)heap.working_set_size)
                << " Tfast " << (int)(heap.Tcopy / 1000.)
                << " Tslow " << (int)(heap.Tcompact / 1000.)
                << " dS " << mb((size_t)heap.dS_copy)
                << "), free = " << mb((int)free));
        //INFO2("gc.logic", "Smin = " << (int) mb((int)smin) << "mb, free = " << mb((int)free) << " mb");
        return free < smin;
    }
}