]> git.llucax.com Git - software/dgc/cdgc.git/commitdiff
Merge iface.d in gc.d
authorLeandro Lucarella <llucax@gmail.com>
Fri, 30 Jul 2010 00:15:36 +0000 (21:15 -0300)
committerLeandro Lucarella <llucax@gmail.com>
Fri, 30 Jul 2010 00:15:36 +0000 (21:15 -0300)
There is no reason to be in different files, really, it just makes things
harder.

rt/gc/cdgc/gc.d
rt/gc/cdgc/iface.d [deleted file]

index 05ef480ee801911f5b35539fd90f69602ad90db8..064f81e39a1526cedcd99e117c813d86ef46e796 100644 (file)
@@ -2650,4 +2650,196 @@ void *sentinel_sub(void *p)
 }
 
 
+
+/* ============================ C Public Interface ======================== */
+
+
+private int _termCleanupLevel=1;
+private GC* _gc;
+
+/// sets the cleanup level done by gc
+/// (0: none, 1: fullCollect, 2: fullCollectNoStack (might crash daemonThreads))
+/// result !=0 if the value was invalid
+extern (C) int gc_setTermCleanupLevel(int cLevel){
+    if (cLevel<0 || cLevel>2) return cLevel;
+    _termCleanupLevel=cLevel;
+    return 0;
+}
+
+/// returns the cleanup level done by gc
+extern (C) int gc_getTermCleanupLevel(){
+    return _termCleanupLevel;
+}
+
+version (DigitalMars) version(OSX) {
+    extern(C) void _d_osx_image_init();
+}
+
+extern (C) void thread_init();
+
+extern (C) void gc_init()
+{
+    _gc = cast(GC*) cstdlib.calloc(1, GC.sizeof);
+    _gc.initialize();
+    version (DigitalMars) version(OSX) {
+        _d_osx_image_init();
+    }
+    // NOTE: The GC must initialize the thread library
+    //       before its first collection.
+    thread_init();
+}
+
+extern (C) void gc_term()
+{
+    if (_termCleanupLevel<1) {
+        // no cleanup
+    } else if (_termCleanupLevel==2){
+        // a more complete cleanup
+        // NOTE: There may be daemons threads still running when this routine is
+        //       called.  If so, cleaning memory out from under then is a good
+        //       way to make them crash horribly.
+        //       Often this probably doesn't matter much since the app is
+        //       supposed to be shutting down anyway, but for example tests might
+        //       crash (and be considerd failed even if the test was ok).
+        //       thus this is not the default and should be enabled by
+        //       I'm disabling cleanup for now until I can think about it some
+        //       more.
+        //
+        _gc.fullCollectNoStack(); // not really a 'collect all' -- still scans
+                                  // static data area, roots, and ranges.
+    } else {
+        // default (safe) clenup
+        _gc.fullCollect();
+    }
+}
+
+extern (C) void gc_enable()
+{
+    _gc.enable();
+}
+
+extern (C) void gc_disable()
+{
+    _gc.disable();
+}
+
+extern (C) void gc_collect()
+{
+    _gc.fullCollect();
+}
+
+
+extern (C) void gc_minimize()
+{
+    _gc.minimize();
+}
+
+extern (C) uint gc_getAttr( void* p )
+{
+    return _gc.getAttr( p );
+}
+
+extern (C) uint gc_setAttr( void* p, uint a )
+{
+    return _gc.setAttr( p, a );
+}
+
+extern (C) uint gc_clrAttr( void* p, uint a )
+{
+    return _gc.clrAttr( p, a );
+}
+
+extern (C) void* gc_malloc(size_t sz, uint attrs = 0,
+        PointerMap ptrmap = PointerMap.init)
+{
+    return _gc.malloc(sz, attrs, ptrmap);
+}
+
+extern (C) void* gc_calloc(size_t sz, uint attrs = 0,
+        PointerMap ptrmap = PointerMap.init)
+{
+    return _gc.calloc(sz, attrs, ptrmap);
+}
+
+extern (C) void* gc_realloc(void* p, size_t sz, uint attrs = 0,
+        PointerMap ptrmap = PointerMap.init)
+{
+    return _gc.realloc(p, sz, attrs, ptrmap);
+}
+
+extern (C) size_t gc_extend( void* p, size_t mx, size_t sz )
+{
+    return _gc.extend( p, mx, sz );
+}
+
+extern (C) size_t gc_reserve( size_t sz )
+{
+    return _gc.reserve( sz );
+}
+
+extern (C) void gc_free( void* p )
+{
+    _gc.free( p );
+}
+
+extern (C) void* gc_addrOf( void* p )
+{
+    return _gc.addrOf( p );
+}
+
+extern (C) size_t gc_sizeOf( void* p )
+{
+    return _gc.sizeOf( p );
+}
+
+extern (C) BlkInfo gc_query( void* p )
+{
+    return _gc.query( p );
+}
+
+// NOTE: This routine is experimental.  The stats or function name may change
+//       before it is made officially available.
+extern (C) GCStats gc_stats()
+{
+    GCStats stats = void;
+    _gc.getStats( stats );
+    return stats;
+}
+
+extern (C) void gc_addRoot( void* p )
+{
+    _gc.addRoot( p );
+}
+
+extern (C) void gc_addRange( void* p, size_t sz )
+{
+    _gc.addRange( p, sz );
+}
+
+extern (C) void gc_removeRoot( void *p )
+{
+    _gc.removeRoot( p );
+}
+
+extern (C) void gc_removeRange( void *p )
+{
+    _gc.removeRange( p );
+}
+
+extern (C) void* gc_weakpointerCreate( Object r )
+{
+    return _gc.weakpointerCreate(r);
+}
+
+extern (C) void gc_weakpointerDestroy( void* wp )
+{
+    _gc.weakpointerDestroy(wp);
+}
+
+extern (C) Object gc_weakpointerGet( void* wp )
+{
+    return _gc.weakpointerGet(wp);
+}
+
+
 // vim: set et sw=4 sts=4 :
diff --git a/rt/gc/cdgc/iface.d b/rt/gc/cdgc/iface.d
deleted file mode 100644 (file)
index 721a4f3..0000000
+++ /dev/null
@@ -1,224 +0,0 @@
-/**
- * This module contains the garbage collector front-end.
- *
- * Copyright: Copyright (C) 2005-2006 Digital Mars, www.digitalmars.com.
- *            All rights reserved.
- * License:
- *  This software is provided 'as-is', without any express or implied
- *  warranty. In no event will the authors be held liable for any damages
- *  arising from the use of this software.
- *
- *  Permission is granted to anyone to use this software for any purpose,
- *  including commercial applications, and to alter it and redistribute it
- *  freely, in both source and binary form, subject to the following
- *  restrictions:
- *
- *  o  The origin of this software must not be misrepresented; you must not
- *     claim that you wrote the original software. If you use this software
- *     in a product, an acknowledgment in the product documentation would be
- *     appreciated but is not required.
- *  o  Altered source versions must be plainly marked as such, and must not
- *     be misrepresented as being the original software.
- *  o  This notice may not be removed or altered from any source
- *     distribution.
- * Authors:   Walter Bright, Sean Kelly
- */
-
-module rt.gc.cdgc.iface;
-
-import rt.gc.cdgc.gc: GC, BlkInfo;
-import rt.gc.cdgc.stats: GCStats;
-
-import cstdlib = tango.stdc.stdlib;
-
-
-private GC* _gc;
-
-private int _termCleanupLevel=1;
-
-/// sets the cleanup level done by gc
-/// (0: none, 1: fullCollect, 2: fullCollectNoStack (might crash daemonThreads))
-/// result !=0 if the value was invalid
-extern (C) int gc_setTermCleanupLevel(int cLevel){
-    if (cLevel<0 || cLevel>2) return cLevel;
-    _termCleanupLevel=cLevel;
-    return 0;
-}
-
-/// returns the cleanup level done by gc
-extern (C) int gc_getTermCleanupLevel(){
-    return _termCleanupLevel;
-}
-
-version (DigitalMars) version(OSX) {
-    extern(C) void _d_osx_image_init();
-}
-
-extern (C) void thread_init();
-
-extern (C) void gc_init()
-{
-    _gc = cast(GC*) cstdlib.calloc(1, GC.sizeof);
-    _gc.initialize();
-    version (DigitalMars) version(OSX) {
-        _d_osx_image_init();
-    }
-    // NOTE: The GC must initialize the thread library
-    //       before its first collection.
-    thread_init();
-}
-
-extern (C) void gc_term()
-{
-    if (_termCleanupLevel<1) {
-        // no cleanup
-    } else if (_termCleanupLevel==2){
-        // a more complete cleanup
-        // NOTE: There may be daemons threads still running when this routine is
-        //       called.  If so, cleaning memory out from under then is a good
-        //       way to make them crash horribly.
-        //       Often this probably doesn't matter much since the app is
-        //       supposed to be shutting down anyway, but for example tests might
-        //       crash (and be considerd failed even if the test was ok).
-        //       thus this is not the default and should be enabled by
-        //       I'm disabling cleanup for now until I can think about it some
-        //       more.
-        //
-        _gc.fullCollectNoStack(); // not really a 'collect all' -- still scans
-                                  // static data area, roots, and ranges.
-    } else {
-        // default (safe) clenup
-        _gc.fullCollect();
-    }
-}
-
-extern (C) void gc_enable()
-{
-    _gc.enable();
-}
-
-extern (C) void gc_disable()
-{
-    _gc.disable();
-}
-
-extern (C) void gc_collect()
-{
-    _gc.fullCollect();
-}
-
-
-extern (C) void gc_minimize()
-{
-    _gc.minimize();
-}
-
-extern (C) uint gc_getAttr( void* p )
-{
-    return _gc.getAttr( p );
-}
-
-extern (C) uint gc_setAttr( void* p, uint a )
-{
-    return _gc.setAttr( p, a );
-}
-
-extern (C) uint gc_clrAttr( void* p, uint a )
-{
-    return _gc.clrAttr( p, a );
-}
-
-extern (C) void* gc_malloc(size_t sz, uint attrs = 0,
-        PointerMap ptrmap = PointerMap.init)
-{
-    return _gc.malloc(sz, attrs, ptrmap);
-}
-
-extern (C) void* gc_calloc(size_t sz, uint attrs = 0,
-        PointerMap ptrmap = PointerMap.init)
-{
-    return _gc.calloc(sz, attrs, ptrmap);
-}
-
-extern (C) void* gc_realloc(void* p, size_t sz, uint attrs = 0,
-        PointerMap ptrmap = PointerMap.init)
-{
-    return _gc.realloc(p, sz, attrs, ptrmap);
-}
-
-extern (C) size_t gc_extend( void* p, size_t mx, size_t sz )
-{
-    return _gc.extend( p, mx, sz );
-}
-
-extern (C) size_t gc_reserve( size_t sz )
-{
-    return _gc.reserve( sz );
-}
-
-extern (C) void gc_free( void* p )
-{
-    _gc.free( p );
-}
-
-extern (C) void* gc_addrOf( void* p )
-{
-    return _gc.addrOf( p );
-}
-
-extern (C) size_t gc_sizeOf( void* p )
-{
-    return _gc.sizeOf( p );
-}
-
-extern (C) BlkInfo gc_query( void* p )
-{
-    return _gc.query( p );
-}
-
-// NOTE: This routine is experimental.  The stats or function name may change
-//       before it is made officially available.
-extern (C) GCStats gc_stats()
-{
-    GCStats stats = void;
-    _gc.getStats( stats );
-    return stats;
-}
-
-extern (C) void gc_addRoot( void* p )
-{
-    _gc.addRoot( p );
-}
-
-extern (C) void gc_addRange( void* p, size_t sz )
-{
-    _gc.addRange( p, sz );
-}
-
-extern (C) void gc_removeRoot( void *p )
-{
-    _gc.removeRoot( p );
-}
-
-extern (C) void gc_removeRange( void *p )
-{
-    _gc.removeRange( p );
-}
-
-extern (C) void* gc_weakpointerCreate( Object r )
-{
-    return _gc.weakpointerCreate(r);
-}
-
-extern (C) void gc_weakpointerDestroy( void* wp )
-{
-    _gc.weakpointerDestroy(wp);
-}
-
-extern (C) Object gc_weakpointerGet( void* wp )
-{
-    return _gc.weakpointerGet(wp);
-}
-
-
-// vim: set et sw=4 sts=4 :