コード例 #1
0
ファイル: msgc-core.c プロジェクト: TaylanUB/larceny
void 
msgc_mark_objects_from_roots_and_remsets( msgc_context_t *context,
                                          int *marked, 
                                          int *traced, 
                                          int *words_marked )
{
  context->marked = 0;
  context->traced = 0;
  context->words_marked = 0;
  
  gc_enumerate_roots( context->gc, push_root, (void*)context );
  mark_from_stack( context );
  { 
    int i;
    for( i = 1; i < context->gc->gno_count; i++ ) {
      pushing_entries_from_remset = i;
      urs_enumerate_gno( context->gc->the_remset, TRUE, i, 
                         push_remset_entry, context );
    }
  }

  *marked += context->marked;
  *traced += context->traced;
  *words_marked += context->words_marked;
}
コード例 #2
0
ファイル: msgc-core.c プロジェクト: liutanyu/larceny-0.97-src
void 
msgc_mark_objects_from_roots( msgc_context_t *context, 
                              int *marked, int *traced, int *words_marked )
{
  context->marked = 0;
  context->traced = 0;
  context->words_marked = 0;
  
  gc_enumerate_roots( context->gc, push_root, (void*)context );
  mark_from_stack( context );
    
  *marked += context->marked;
  *traced += context->traced;
  *words_marked += context->words_marked;
}
コード例 #3
0
ファイル: msgc-core.c プロジェクト: TaylanUB/larceny
void
msgc_mark_objects_from_roots_and_a_remset( msgc_context_t *context,
                                           remset_t *remset, 
                                           int *marked, 
                                           int *traced, 
                                           int *words_marked )
{
  context->marked = 0;
  context->traced = 0;
  context->words_marked = 0;
  
  gc_enumerate_roots( context->gc, push_root, (void*)context );
  mark_from_stack( context );
  pushing_entries_from_remset = 0;
  rs_enumerate( remset, push_remset_entry_stats, context );

  *marked += context->marked;
  *traced += context->traced;
  *words_marked += context->words_marked;
}
コード例 #4
0
ファイル: msgc-core.c プロジェクト: TaylanUB/larceny
static bool push_remset_entry( word obj, void* data )
{
  PUSH( (msgc_context_t*)data, obj, pushing_entries_from_remset << 8, -1 );
  mark_from_stack( (msgc_context_t*)data );
  return TRUE;
}
コード例 #5
0
ファイル: msgc-core.c プロジェクト: TaylanUB/larceny
void 
msgc_mark_objects_from_nil( msgc_context_t *context ) 
{
  mark_from_stack( context );
}