#ifndef COMPILER_TOC_H #define COMPILER_TOC_H #include "compiler/common.h" #ifdef __MWERKS__ #pragma options align=mac68k #endif typedef struct CodeLabelList { struct CodeLabelList *next; Object *object; CLabel *label; } CodeLabelList; extern ObjectList *toclist; extern ObjectList *exceptionlist; extern void *descriptorlist; extern void *floatconstpool; extern void *doubleconstpool; extern ObjectList *floatconstlist; extern void *vectorconstpool; extern ObjectList *vectorconstlist; extern Object toc0; extern Boolean no_descriptors; extern Object pic_base; extern VarInfo pic_base_varinfo; extern short pic_base_reg; extern CodeLabelList *codelabellist; extern void setupaddressing(void); extern void createNonLazyPointer(Object *obj); extern void referenceIndirectPointer(Object *obj); extern Object *createIndirect(Object *obj, Boolean flag1, Boolean flag2); extern Object *createfloatconstant(Type *type, Float *data); extern Object *createvectorconstant(Type *type, MWVector128 *data); extern void DeclarePooledConstants(); extern Object *CreateFloatConst(Type *type, Float *data, SInt32 *unkptr); extern void dumpcodelabels(Object *func); typedef struct COVCResult { // this struct might be used in other places too??? short op1; short op2; unsigned char arg; } COVCResult; extern Boolean canoptimizevectorconst(MWVector128 *vecp, Type *type, COVCResult *result); extern Boolean TOC_use_fsel(ENode *expr); extern Boolean TOC_use_isel(ENode *expr, Boolean flag); extern SInt32 GetSizeSkip(ENode *expr); extern void Optimize64bitMath(ENode *expr); extern void expandTOCreferences(Statement **stmts); extern void resetTOCvarinfo(void); extern Boolean needdescriptor(void); extern Object *createstaticinitobject(void); #ifdef __MWERKS__ #pragma options align=reset #endif #endif