debugging gc
This commit is contained in:
parent
332a60d663
commit
7a569fb192
15
moo/lib/gc.c
15
moo/lib/gc.c
@ -850,13 +850,15 @@ static MOO_INLINE void gc_mark_root (moo_t* moo)
|
|||||||
{
|
{
|
||||||
MOO_ASSERT (moo, (moo_oop_t)moo->processor != moo->_nil);
|
MOO_ASSERT (moo, (moo_oop_t)moo->processor != moo->_nil);
|
||||||
MOO_ASSERT (moo, (moo_oop_t)moo->processor->active != moo->_nil);
|
MOO_ASSERT (moo, (moo_oop_t)moo->processor->active != moo->_nil);
|
||||||
moo->active_context->ip = MOO_SMOOI_TO_OOP(moo->ip); /* not needed but do it */
|
|
||||||
|
|
||||||
/* commit the stack pointer to the active process because
|
/* commit the stack pointer to the active process because
|
||||||
* gc utilizes the stack pointer of a process object when marking */
|
* gc utilizes the stack pointer of a process object when marking */
|
||||||
|
|
||||||
moo->processor->active->sp = MOO_SMOOI_TO_OOP(moo->sp);
|
moo->processor->active->sp = MOO_SMOOI_TO_OOP(moo->sp);
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
moo->active_context->ip = MOO_SMOOI_TO_OOP(moo->ip); /* not needed but do it */
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
gc_mark (moo, moo->_nil);
|
gc_mark (moo, moo->_nil);
|
||||||
@ -962,8 +964,8 @@ static MOO_INLINE void gc_sweep (moo_t* moo)
|
|||||||
/* destroy */
|
/* destroy */
|
||||||
if (prev) prev->next = next;
|
if (prev) prev->next = next;
|
||||||
else moo->gch = next;
|
else moo->gch = next;
|
||||||
if (!moo->igniting)
|
//if (!moo->igniting)
|
||||||
MOO_DEBUG2(moo, "** DESTROYING curr %p %O\n", curr, obj);
|
//MOO_DEBUG2(moo, "** DESTROYING curr %p %O\n", curr, obj);
|
||||||
moo_freemem (moo, curr);
|
moo_freemem (moo, curr);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1148,11 +1150,14 @@ void moo_gc (moo_t* moo)
|
|||||||
/* TODO: verify if this is correct */
|
/* TODO: verify if this is correct */
|
||||||
MOO_ASSERT (moo, (moo_oop_t)moo->processor != moo->_nil);
|
MOO_ASSERT (moo, (moo_oop_t)moo->processor != moo->_nil);
|
||||||
MOO_ASSERT (moo, (moo_oop_t)moo->processor->active != moo->_nil);
|
MOO_ASSERT (moo, (moo_oop_t)moo->processor->active != moo->_nil);
|
||||||
/* store the stack pointer to the active process */
|
/* commit the stack pointer to the active process
|
||||||
|
* to limit scanning of the process stack properly */
|
||||||
moo->processor->active->sp = MOO_SMOOI_TO_OOP(moo->sp);
|
moo->processor->active->sp = MOO_SMOOI_TO_OOP(moo->sp);
|
||||||
|
|
||||||
|
#if 0 /* ip doesn't need to be committed */
|
||||||
/* store the instruction pointer to the active context */
|
/* store the instruction pointer to the active context */
|
||||||
moo->active_context->ip = MOO_SMOOI_TO_OOP(moo->ip);
|
moo->active_context->ip = MOO_SMOOI_TO_OOP(moo->ip);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
MOO_LOG4 (moo, MOO_LOG_GC | MOO_LOG_INFO,
|
MOO_LOG4 (moo, MOO_LOG_GC | MOO_LOG_INFO,
|
||||||
|
Loading…
Reference in New Issue
Block a user