mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-01-16 21:03:14 +01:00
69 lines
1.9 KiB
C
69 lines
1.9 KiB
C
// Copyright (c) 2000-2011 by Digital Mars
|
|
// All Rights Reserved
|
|
// written by Walter Bright
|
|
// http://www.digitalmars.com
|
|
// License for redistribution is by either the Artistic License
|
|
// in artistic.txt, or the GNU General Public License in gnu.txt.
|
|
// See the included readme.txt for details.
|
|
|
|
#ifndef GC_H
|
|
#define GC_H
|
|
|
|
struct Gcx; // private data
|
|
|
|
typedef void (*GC_FINALIZER)(void *p, void *dummy);
|
|
|
|
struct GCStats
|
|
{
|
|
unsigned poolsize; // total size of pool
|
|
unsigned usedsize; // bytes allocated
|
|
unsigned freeblocks; // number of blocks marked FREE
|
|
unsigned freelistsize; // total of memory on free lists
|
|
unsigned pageblocks; // number of blocks marked PAGE
|
|
};
|
|
|
|
struct GC
|
|
{
|
|
// For passing to debug code
|
|
static unsigned line;
|
|
static char *file;
|
|
// #define GC_LOG() ((GC::line = __LINE__), (GC::file = __FILE__))
|
|
#define GC_LOG() ((void)0)
|
|
|
|
Gcx *gcx; // implementation
|
|
|
|
~GC();
|
|
|
|
void init();
|
|
|
|
char *strdup(const char *s);
|
|
void *malloc(size_t size);
|
|
void *malloc_atomic(size_t size);
|
|
void *calloc(size_t size, size_t n);
|
|
void *realloc(void *p, size_t size);
|
|
void free(void *p);
|
|
void *mallocdup(void *o, size_t size);
|
|
void check(void *p);
|
|
void error();
|
|
|
|
void setStackBottom(void *p);
|
|
|
|
void addRoot(void *p); // add p to list of roots
|
|
void removeRoot(void *p); // remove p from list of roots
|
|
|
|
void addRange(void *pbot, void *ptop); // add range to scan for roots
|
|
void removeRange(void *pbot); // remove range
|
|
|
|
void fullcollect(); // do full garbage collection
|
|
void fullcollectNoStack(); // do full garbage collection; no scan stack
|
|
void gencollect(); // do generational garbage collection
|
|
void minimize(); // minimize physical memory usage
|
|
|
|
void setFinalizer(void *p, GC_FINALIZER pFn);
|
|
|
|
void getStats(GCStats *stats);
|
|
};
|
|
|
|
#endif
|
|
|