fix fixes to garbage collector.
This commit is contained in:
parent
007bfc21b9
commit
da78b22324
25
C/heapgc.c
25
C/heapgc.c
@ -1150,9 +1150,6 @@ check_global(void) {
|
|||||||
|
|
||||||
/* mark a heap object and all heap objects accessible from it */
|
/* mark a heap object and all heap objects accessible from it */
|
||||||
|
|
||||||
static void
|
|
||||||
mark_variable(CELL_PTR current);
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
mark_variable(CELL_PTR current)
|
mark_variable(CELL_PTR current)
|
||||||
{
|
{
|
||||||
@ -1185,23 +1182,9 @@ mark_variable(CELL_PTR current)
|
|||||||
}
|
}
|
||||||
PUSH_POINTER(next-1);
|
PUSH_POINTER(next-1);
|
||||||
}
|
}
|
||||||
next++;
|
PUSH_CONTINUATION(next+1,2);
|
||||||
if (!UNMARKED_MARK(next,local_bp)) {
|
current = next;
|
||||||
total_marked++;
|
goto begin;
|
||||||
if (next < HGEN) {
|
|
||||||
total_oldies++;
|
|
||||||
}
|
|
||||||
PUSH_POINTER(next);
|
|
||||||
}
|
|
||||||
next++;
|
|
||||||
if (!UNMARKED_MARK(next,local_bp)) {
|
|
||||||
total_marked++;
|
|
||||||
if (next < HGEN) {
|
|
||||||
total_oldies++;
|
|
||||||
}
|
|
||||||
PUSH_POINTER(next);
|
|
||||||
}
|
|
||||||
POP_CONTINUATION();
|
|
||||||
} else if (ONHEAP(next)) {
|
} else if (ONHEAP(next)) {
|
||||||
#ifdef EASY_SHUNTING
|
#ifdef EASY_SHUNTING
|
||||||
CELL cnext;
|
CELL cnext;
|
||||||
@ -1273,7 +1256,7 @@ mark_variable(CELL_PTR current)
|
|||||||
goto begin;
|
goto begin;
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
} else if (next < (CELL *)Yap_GlobalBase || next > (CELL *)Yap_TrailTop) {
|
} else if (next < (CELL *)Yap_GlobalBase || next > (CELL *)Yap_TrailTop) {
|
||||||
fprintf(Yap_stderr, "ooops while marking %lx, %p at %p\n", (unsigned long int)ccur, current, next);
|
fprintf(Yap_stderr, "ooops while marking, current=%p, *current=%lx next=%p\n", current, (unsigned long int)ccur, next);
|
||||||
#endif
|
#endif
|
||||||
} else {
|
} else {
|
||||||
#ifdef COROUTING
|
#ifdef COROUTING
|
||||||
|
Reference in New Issue
Block a user