home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / kaffe-0.5p4-src.tgz / tar.out / contrib / kaffe / kaffevm / gc.h < prev    next >
C/C++ Source or Header  |  1996-09-28  |  1KB  |  52 lines

  1. /*
  2.  * gc-simple.h
  3.  * The garbage collector.
  4.  *
  5.  * Copyright (c) 1996 Systems Architecture Research Centre,
  6.  *           City University, London, UK.
  7.  *
  8.  * See the file "license.terms" for information on usage and redistribution
  9.  * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  10.  *
  11.  * Written by Tim Wilkinson <tim@sarc.city.ac.uk>, February 1996.
  12.  */
  13.  
  14. #ifndef __gc_h
  15. #define __gc_h
  16.  
  17. /* When's a good time to run the GC?
  18.  * Run after allocation X bytes of objects.
  19.  */
  20. #define    GCTRIGSIZE    (64 * 1024)
  21.  
  22. #define    GC_FREE        0    /* Object free */
  23. #define    GC_MARK        1    /* Object reachable, never been finalised */
  24. #define    GC_UNMARK    2    /* Object unreachable, never been finalised */
  25. #define    GC_GARBAGE    3    /* Object garbaged, never been finalised */
  26. #define    GC_UNMARK2    4    /* Object unreachable, been finalied */
  27. #define    GC_GARBAGE2    5    /* Object garbaged, been finalised */
  28.  
  29. struct _object;
  30. typedef struct _gcRef {
  31.     int        flags;            /* State of this entry */
  32.     int        idx;            /* This entry index */
  33.     struct _object*    obj;            /* Used - the object */
  34.     struct _gcRef*    next;            /* Free - the next free */
  35.     struct _gcRef*    walk;            /* Next object in walk */
  36. } gcRef;
  37.  
  38. typedef struct _gcHead {
  39.     uint32        idx;
  40. } gcHead;
  41.  
  42. #define    INITGC(_o)    (_o).gc.idx = 0
  43.  
  44. #define    GCREFTABLESZ        1024
  45. #define    GCREFMAX        1024
  46.  
  47. struct _classes;
  48. void*    newObject(int, struct _classes*, int, bool);
  49. void    invokeGarbageCollector(void);
  50.  
  51. #endif
  52.