#ifndef COMPILER_REGISTERINFO_H #define COMPILER_REGISTERINFO_H #include "compiler/common.h" #include "compiler/Registers.h" extern short last_exception_register[RegClassMax]; extern short first_fe_temporary_register[RegClassMax]; extern short last_argument_register[RegClassMax]; extern short _FP_; extern short _CALLER_SP_; extern char *special_register_names[RegClassMax][RegisterMax]; extern short spr_to_sysreg[4]; extern void asm_used_register(char rclass, short reg); extern void retain_register(Object *obj, char rclass, short reg); extern void retain_GPR_pair(Object *obj, short reg, short regHi); extern int is_register_object(Object *obj); extern int GetABIFirstNonVolatile(char rclass); extern char GetRegisterClassName(char rclass); extern void setup_diagnostic_reg_strings(void); extern void init_target_registers(void); extern void assign_register_by_type(Object *obj); extern void assign_GPR_pair(Object *obj); extern void open_fe_temp_registers(void); extern void set_last_exception_registers(void); extern VarInfo *Registers_GetVarInfo(Object *obj); extern int used_vrstate_VRs(void); extern UInt32 colored_vrs_as_vrsave(PCodeBlock *block); extern void save_before_coloring_nonvolatile_registers(char rclass); extern void reset_nonvolatile_registers(char rclass); extern int is_nonvolatile_register(char rclass, int reg); extern void init_endian(void); extern void update_asm_nonvolatile_registers(void); #define OBJECT_REG(obj) ( Registers_GetVarInfo((obj)) ? (Registers_GetVarInfo((obj))->reg) : 0 ) #define OBJECT_REG_HI(obj) ( Registers_GetVarInfo((obj)) ? (Registers_GetVarInfo((obj))->regHi) : 0 ) #define ALLOC_GPR() (used_virtual_registers[RegClass_GPR]++) #define ALLOC_FPR() (used_virtual_registers[RegClass_FPR]++) #define ALLOC_VR() (used_virtual_registers[RegClass_VR]++) #endif