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

  1. /* seq.h
  2.  * Pseudo instruction sequences.
  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>, June 1996.
  11.  */
  12.  
  13. #ifndef __seq_hh
  14. #define __seq_hh
  15.  
  16. struct _sequence;
  17.  
  18. typedef void (*ifunc)(struct _sequence*);
  19.  
  20. typedef struct _sequence {
  21.     ifunc            func;
  22.     int            ref;
  23.     int            type;
  24.     int            opt;
  25.     union {
  26.         jint        iconst;
  27.         jlong        lconst;
  28.         jdouble        fconst;
  29.         struct {
  30.             struct _slots*    slot;
  31.             struct _sequence* seq;
  32.         }        s;
  33.     } u[3];
  34.     struct _sequence*    next;
  35. } sequence;
  36.  
  37. void initSeq(void);
  38. sequence* nextSeq(void);
  39. void seq_pop(sequence*);
  40.  
  41. extern sequence*        firstSeq;
  42. extern sequence*        lastSeq;
  43. extern sequence*        currSeq;
  44.  
  45. #define    ALLOCSEQNR        128
  46.  
  47. #define    seq(s)            ((s)->insn)
  48.  
  49. #define    seq_slot(_s, _i)    ((_s)->u[_i].s.slot)
  50. #define    seq_seq(_s, _i)        ((_s)->u[_i].s.seq)
  51. #define    seq_value(_s, _i)    ((_s)->u[_i].iconst)
  52. #define    seq_dst(_s)        seq_slot(_s, 0)
  53.  
  54. #endif
  55.