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 / slots.c < prev    next >
C/C++ Source or Header  |  1996-09-28  |  2KB  |  72 lines

  1. /* slots.c
  2.  * Slots.
  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. #include "gtypes.h"
  14. #include "slots.h"
  15. #include "registers.h"
  16. #include "md.h"
  17.  
  18. slots slotinfo[MAXSLOT+MAXRETURNS];
  19. slots* returninfo = &slotinfo[MAXSLOT];
  20.  
  21. slots* localinfo;
  22. slots* stackinfo;
  23. slots* tempinfo;
  24.  
  25. extern int maxLocal;
  26.  
  27.  
  28. /*
  29.  * Initiate slots.
  30.  */
  31. void
  32. initSlots(void)
  33. {
  34.     int i;
  35.  
  36.         /* Free all slots */
  37.         for (i = 0; i < MAXSLOT; i++) {
  38.         slotinfo[i].insn = 0;
  39.         slotinfo[i].regno = NOREG;
  40.         slotinfo[i].modified = 0;
  41.         }
  42.  
  43.         /* Mark returns as busy */
  44.         for (i = 0; i < MAXRETURNS; i++) {
  45.                 returninfo[i].insn = 0;
  46.                 returninfo[i].regno = NOREG;
  47.         returninfo[i].modified = 0;
  48.         }
  49.         returninfo[returnInt].regno = RETURN_INT;
  50.         returninfo[returnRef].regno = RETURN_REF;
  51.         returninfo[returnLong].regno = RETURN_LONG_LOW;
  52.         returninfo[returnLong+1].regno = RETURN_LONG_HIGH;
  53.         returninfo[returnFloat].regno = RETURN_FLOAT;
  54.         returninfo[returnDouble].regno = RETURN_DOUBLE_LOW;
  55.         returninfo[returnDouble+1].regno = RETURN_DOUBLE_HIGH;
  56. }
  57.  
  58. /*
  59.  * Mark return in use so they don't get optimised away.
  60.  */
  61. void
  62. markReturns(void)
  63. {
  64.         returninfo[returnInt].insn = 0;
  65.         returninfo[returnRef].insn = 0;
  66.         returninfo[returnLong].insn = 0;
  67.         returninfo[returnLong+1].insn = 0;
  68.         returninfo[returnFloat].insn = 0;
  69.         returninfo[returnDouble].insn = 0;
  70.         returninfo[returnDouble+1].insn = 0;
  71. }
  72.