148117Sbostic /*- 2*62219Sbostic * Copyright (c) 1980, 1993 3*62219Sbostic * The Regents of the University of California. All rights reserved. 422252Sdist * 548117Sbostic * %sccs.include.redist.c% 648117Sbostic * 7*62219Sbostic * @(#)tmps.h 8.1 (Berkeley) 06/06/93 822252Sdist */ 911339Speter 1011339Speter /* 1111339Speter * The following structure is used 1211339Speter * to keep track of the amount of variable 1311339Speter * storage required by each block. 1411339Speter * "Max" is the high water mark, "off" 1511339Speter * the current need. Temporaries for "for" 1611339Speter * loops and "with" statements are allocated 1711339Speter * in the local variable area and these 1811339Speter * numbers are thereby changed if necessary. 1911339Speter * 2011339Speter * for the compiler, 2111339Speter * low_water is the lowest number register allocated of its type 2211339Speter * next_avail is the next available register of its type 2311339Speter */ 2411339Speter 2511339Speter #ifdef PC 2611339Speter #ifdef vax 2711339Speter /* 2811339Speter * the number of register types. 2911339Speter * the details of how many of each kind of register there is 3011339Speter * (and what they are for) is known in tmps.c 3111339Speter */ 3211339Speter #define NUMREGTYPES 1 3311339Speter #define REG_GENERAL 0 3411339Speter #endif vax 3511339Speter 3630029Smckusick #ifdef tahoe 3730029Smckusick /* 3830029Smckusick * the number of register types. 3930029Smckusick * the details of how many of each kind of register there is 4030029Smckusick * (and what they are for) is known in tmps.c 4130029Smckusick */ 4230029Smckusick #define NUMREGTYPES 1 4330029Smckusick #define REG_GENERAL 0 4430029Smckusick #endif tahoe 4530029Smckusick 4611339Speter #ifdef mc68000 4711339Speter /* 4811339Speter * the number of register types. 4911339Speter * the details of how many of each kind of register there is 5011339Speter * (and what they are for) is known in tmps.c 5111339Speter */ 5211339Speter #define NUMREGTYPES 2 5311339Speter #define REG_DATA 0 5411339Speter #define REG_ADDR 1 5511339Speter #endif mc68000 5611339Speter #endif PC 5711339Speter 5811339Speter struct om { 5911339Speter long om_max; 6011339Speter #ifdef PC 6111339Speter long low_water[NUMREGTYPES]; 6211339Speter #endif PC 6311339Speter struct tmps { 6411339Speter long om_off; 6511339Speter #ifdef PC 6611339Speter long next_avail[NUMREGTYPES]; 6711339Speter #endif PC 6811339Speter } curtmps; 6911339Speter } sizes[DSPLYSZ]; 7011339Speter 7111339Speter /* 7211339Speter * an enumeration for whether a temporary can be a register. cf. tmps.c 7311339Speter */ 7411339Speter #define NOREG 0 7511339Speter #define REGOK 1 76