Beispiel #1
0
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;
}
Beispiel #2
0
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;
}
Beispiel #3
0
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;
}