struct Segments;
struct LiteralPool;
+struct CodeEntry;
#define SC_HAVEATTR 0x10000U /* Symbol has attributes */
+#define SC_GOTO 0x20000U
+#define SC_SPADJUSTMENT 0x40000U
+#define SC_GOTO_IND 0x80000U /* Indirect goto */
-/* Symbol table entry */
-typedef struct DefOrRef DefOrRef;
+/* Label definition or reference */
+typedef struct DefOrRef DefOrRef;
struct DefOrRef {
unsigned Line;
- long LocalsBlockNum;
+ long LocalsBlockId;
unsigned Flags;
+ int StackPtr;
+ unsigned Depth;
+ unsigned LateSP_Label;
};
+/* Symbol table entry */
typedef struct SymEntry SymEntry;
-
struct SymEntry {
SymEntry* NextHash; /* Next entry in hash list */
SymEntry* PrevSym; /* Previous symbol in dl list */
struct {
unsigned Label;
Collection *DefsOrRefs;
+ struct CodeEntry *IndJumpFrom;
} L;
+ /* Value of SP adjustment needed after forward 'goto' */
+ unsigned short SPAdjustment;
+
/* Register bank offset and offset of the saved copy on stack for
** register variables.
*/