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 / object.h < prev    next >
C/C++ Source or Header  |  1996-09-28  |  1KB  |  51 lines

  1. /*
  2.  * object.h
  3.  * Object representation.
  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 __object_h
  15. #define __object_h
  16.  
  17. #include "gtypes.h"
  18. #include "locks.h"
  19. #include "gc.h"
  20.  
  21. struct _dispatchTable;
  22. struct _classes;
  23.  
  24. typedef struct _object {
  25.     gcHead            gc;
  26.     struct _dispatchTable*    dtable;
  27.     uint32            size;
  28.     iMux            mux;
  29.     iCv            cv;
  30.     /* Data follows on immediately */
  31. } object;
  32.  
  33. /*
  34.  * These bizzare casts provide various offset into the object structure.
  35.  */
  36. #define    OBJECT_DTABLE        ((int)&(*(object*)0).dtable)
  37. #define    OBJECT_IDX        ((int)&(*(object*)0).gc.colour)
  38. #define    OBJECT_SIZE        ((int)&(*(object*)0).size)
  39. #define    OBJECT_DATA        ((int)(((object*)0)+1))
  40.  
  41. #define    alloc_object(c, p) \
  42.     (object*)newObject((c)->fsize * sizeof(u4), (c), 0, (p))
  43. #define    alloc_class() \
  44.     (classes*)newObject(sizeof(classes)-sizeof(object), ClassClass, 0, true)
  45.  
  46. object*    alloc_array(int, int);
  47. object*    alloc_objectarray(int, char*);
  48. object*    alloc_multiarray(int*, char*);
  49.  
  50. #endif
  51.