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 / intrp / machine.h < prev    next >
C/C++ Source or Header  |  1996-09-28  |  2KB  |  73 lines

  1. /*
  2.  * machine.h
  3.  *
  4.  * Copyright (c) 1996 Systems Architecture Research Centre,
  5.  *                 City University, London, UK.
  6.  *
  7.  * See the file "license.terms" for information on usage and redistribution
  8.  * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  9.  *
  10.  * Written by Tim Wilkinson <tim@sarc.city.ac.uk>, May 1996.
  11.  */
  12.  
  13. #ifndef __machine_h
  14. #define    __machine_h
  15.  
  16. #define    constants()        (meth->constants)
  17. #define    constant(_idx)                            \
  18.     (constants()->tags[_idx] == CONSTANT_Chararray ?        \
  19.         makeStringObject(_idx, constants()) :            \
  20.         &constants()->data[_idx])
  21.     
  22. #define    constant_long(_idx)                        \
  23.         &constants()->data[_idx]
  24.  
  25. #define getpc(n)        (code[pc+1+(n)])
  26. #define getcode(n)        (code[(n)])
  27.  
  28. #define    object_array_offset    (OBJECT_DATA)
  29. #define    object_array_length    (OBJECT_SIZE)
  30. #define object_colour()        (OBJECT_IDX)
  31. #define object_white()        (COLOUR_WHITE)
  32.  
  33. #define    get_method_info(_cnst, _idx) \
  34.     getMethodSignatureClass(_idx, _cnst, &cinfo)
  35.  
  36. #define    get_dispatch_table(mtable) \
  37.     move_ref(mtable, ((slots*)&cinfo.dtable))
  38.  
  39. #define    method_name()        ((strpair*)cinfo.mtag)
  40. #define method_tag()        (cinfo.mtag)
  41. #define method_hash()        (cinfo.offset)
  42. #define method_idx()        (cinfo.idx)
  43. #define    method_nargs()        (cinfo.in)
  44. #define    method_dtable_offset    OBJECT_DTABLE
  45. #define    method_mtable_offset    DTABLE_MTABLEOFFSET
  46. #define    method_returntype()    (cinfo.rettype)
  47.  
  48. #define    get_field_info(_cnst, _idx) \
  49.     getField(_idx, false, _cnst, &flinfo)
  50.  
  51. #define    get_static_field_info(_cnst, _idx) \
  52.     getField(_idx, true, _cnst, &flinfo)
  53.  
  54. #define    field_size()        (flinfo.size)
  55. #define    field_data()        (OBJECT_DATA)
  56. #define    field_offset()        (flinfo.offset * 4)
  57. #define    field_isref()        (flinfo.isref)
  58. #define    field_statics()        ((uintp)flinfo.class->staticFields)
  59.  
  60. #define    get_class_info(_cnst, _idx) \
  61.     getClass(_idx, _cnst, &crinfo)
  62.  
  63. #define    class_object()        ((slots*)&crinfo.class)
  64.  
  65. #define    switchpair_size        8
  66. #define    switchpair_addr        4
  67. #define    switchtable_shift    2
  68.  
  69. struct _methods;
  70. void virtualMachine(struct _methods*, slots*);
  71.  
  72. #endif
  73.