]> git.llucax.com Git - software/druntime.git/blobdiff - src/gc/basic/gc.d
restored support for setting gc handle
[software/druntime.git] / src / gc / basic / gc.d
index 4dd2d9f50cd832afe95e213a09592015d970d0b2..a6a4611b7bcc69bf48b6142482a0289dc65a5211 100644 (file)
@@ -186,3 +186,26 @@ extern (C) void gc_removeRange( void *p )
 {
     _gc.removeRange( p );
 }
+
+extern (C) void* gc_getHandle()
+{
+    return cast(void*)_gc;
+}
+
+extern (C) void gc_setHandle(void* p)
+{
+    void* oldp = gc_getHandle();
+    gc_t g = cast(gc_t)p;
+    if (g.gcversion != gcx.GCVERSION)
+        throw new Error("incompatible gc versions");
+
+    // Add our static data to the new gc
+    GC.scanStaticData(g);
+
+    _gc = g;
+}
+
+extern (C) void gc_endHandle()
+{
+    GC.unscanStaticData(_gc);
+}