extern (C) extern void* __libc_stack_end;
}
}
+ extern (C) void gc_addRange( void* p, size_t sz );
+ extern (C) void gc_removeRange( void *p );
}
alias __data_start Data_Start;
alias _end Data_End;
}
-
- alias void delegate( void*, void* ) scanFn;
}
-/**
- *
- */
-extern (C) void rt_scanStaticData( scanFn scan )
+void initStaticDataGC()
{
version( Windows )
{
- scan( &_xi_a, &_end );
+ gc_addRange( &_xi_a, cast(size_t) &_end - cast(size_t) &_xi_a );
}
else version( linux )
{
- scan( &__data_start, &_end );
+ gc_addRange( &__data_start, cast(size_t) &_end - cast(size_t) &__data_start );
}
else
{