/* * Copyright (C) 2004 by Digital Mars, www.digitalmars.com * Written by Walter Bright * * 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, 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. */ // D Garbage Collector stub to prevent linking in gc module gcx; //debug=PRINTF; /***************************************************/ version (Win32) { import win32; } version (linux) { import gclinux; } //alias GC* gc_t; alias GC gc_t; struct GCStats { } /* ============================ GC =============================== */ //alias int size_t; alias void (*GC_FINALIZER)(void *p, void *dummy); const uint GCVERSION = 1; // increment every time we change interface // to GC. class GC { uint gcversion = GCVERSION; void *gcx; // implementation void initialize() { debug(PRINTF) printf("initialize()\n"); } void Dtor() { debug(PRINTF) printf("Dtor()\n"); } invariant { debug(PRINTF) printf("invariant()\n"); } void *malloc(size_t size) { debug(PRINTF) printf("malloc()\n"); return null; } void *mallocNoSync(size_t size) { debug(PRINTF) printf("mallocNoSync()\n"); return null; } void *calloc(size_t size, size_t n) { debug(PRINTF) printf("calloc()\n"); return null; } void *realloc(void *p, size_t size) { debug(PRINTF) printf("realloc()\n"); return null; } void free(void *p) { debug(PRINTF) printf("free()\n"); } size_t capacity(void *p) { debug(PRINTF) printf("capacity()\n"); return 0; } void check(void *p) { debug(PRINTF) printf("check()\n"); } void setStackBottom(void *p) { debug(PRINTF) printf("setStackBottom()\n"); } static void scanStaticData(gc_t g) { void *pbot; void *ptop; uint nbytes; debug(PRINTF) printf("scanStaticData()\n"); //debug(PRINTF) printf("+GC.scanStaticData()\n"); os_query_staticdataseg(&pbot, &nbytes); ptop = pbot + nbytes; g.addRange(pbot, ptop); //debug(PRINTF) printf("-GC.scanStaticData()\n"); } static void unscanStaticData(gc_t g) { void *pbot; uint nbytes; debug(PRINTF) printf("unscanStaticData()\n"); os_query_staticdataseg(&pbot, &nbytes); g.removeRange(pbot); } void addRoot(void *p) // add p to list of roots { debug(PRINTF) printf("addRoot()\n"); } void removeRoot(void *p) // remove p from list of roots { debug(PRINTF) printf("removeRoot()\n"); } void addRange(void *pbot, void *ptop) // add range to scan for roots { debug(PRINTF) printf("addRange()\n"); } void removeRange(void *pbot) // remove range { debug(PRINTF) printf("removeRange()\n"); } void fullCollect() // do full garbage collection { debug(PRINTF) printf("fullCollect()\n"); } void fullCollectNoStack() // do full garbage collection { debug(PRINTF) printf("fullCollectNoStack()\n"); } void genCollect() // do generational garbage collection { debug(PRINTF) printf("genCollect()\n"); } void minimize() // minimize physical memory usage { debug(PRINTF) printf("minimize()\n"); } void setFinalizer(void *p, GC_FINALIZER pFn) { debug(PRINTF) printf("setFinalizer()\n"); } void enable() { debug(PRINTF) printf("enable()\n"); } void disable() { debug(PRINTF) printf("disable()\n"); } void getStats(out GCStats stats) { debug(PRINTF) printf("getStats()\n"); } }