CACAO
Data Structures | Macros | Functions
codegen-common.hpp File Reference

Go to the source code of this file.

Data Structures

class  DumpList< T >
 List implementation with dump memory. More...
 
struct  codegendata
 
struct  branchref
 
struct  branch_label_ref_t
 
struct  jumpref
 
struct  dataref
 

Macros

#define MCODEINITSIZE   (1<<15) /* 32 Kbyte code area initialization size */
 
#define DSEGINITSIZE   (1<<12) /* 4 Kbyte data area initialization size */
 
#define NCODEINITSIZE   (1<<15) /* 32 Kbyte code area initialization size */
 
#define PACK_REGS(low, high)   ( (((high) & 0x0000ffff) << 16) | ((low) & 0x0000ffff) )
 
#define GET_LOW_REG(a)   ((a) & 0x0000ffff)
 
#define GET_HIGH_REG(a)   (((a) & 0xffff0000) >> 16)
 
#define REG_LRESULT   REG_RESULT
 
#define REG_LTMP12   REG_ITMP1
 
#define REG_LTMP23   REG_ITMP2
 
#define BRANCH_UNCONDITIONAL   -1
 
#define BRANCH_EQ   (ICMD_IFEQ - ICMD_IFEQ)
 
#define BRANCH_NE   (ICMD_IFNE - ICMD_IFEQ)
 
#define BRANCH_LT   (ICMD_IFLT - ICMD_IFEQ)
 
#define BRANCH_GE   (ICMD_IFGE - ICMD_IFEQ)
 
#define BRANCH_GT   (ICMD_IFGT - ICMD_IFEQ)
 
#define BRANCH_LE   (ICMD_IFLE - ICMD_IFEQ)
 
#define BRANCH_ULT   256
 
#define BRANCH_ULE   257
 
#define BRANCH_UGE   258
 
#define BRANCH_UGT   259
 
#define BRANCH_NAN   260
 
#define BRANCH_OPT_NONE   0
 
#define CODEGENDATA_FLAG_ERROR   0x00000001
 
#define CODEGENDATA_FLAG_LONGBRANCHES   0x00000002
 
#define CODEGENDATA_HAS_FLAG_ERROR(cd)   ((cd)->flags & CODEGENDATA_FLAG_ERROR)
 
#define CODEGENDATA_HAS_FLAG_LONGBRANCHES(cd)   ((cd)->flags & CODEGENDATA_FLAG_LONGBRANCHES)
 

Functions

void codegen_init (void)
 
void codegen_setup (jitdata *jd)
 
bool codegen_generate (jitdata *jd)
 
bool codegen_emit (jitdata *jd)
 Generates machine code. More...
 
void codegen_emit_prolog (jitdata *jd)
 Generates machine code for the method prolog. More...
 
void codegen_emit_epilog (jitdata *jd)
 Generates machine code for the method epilog. More...
 
void codegen_emit_instruction (jitdata *jd, instruction *iptr)
 Generates machine code for one ICMD. More...
 
void codegen_close (void)
 
void codegen_increase (codegendata *cd)
 
void codegen_add_branch_ref (codegendata *cd, basicblock *target, s4 condition, s4 reg, u4 options)
 
void codegen_resolve_branchrefs (codegendata *cd, basicblock *bptr)
 
void codegen_branch_label_add (codegendata *cd, s4 label, s4 condition, s4 reg, u4 options)
 
void codegen_finish (jitdata *jd)
 
java_handle_tcodegen_start_native_call (u1 *currentsp, u1 *pv)
 
java_object_tcodegen_finish_native_call (u1 *currentsp, u1 *pv)
 
s4 codegen_reg_of_var (u2 opcode, varinfo *v, s4 tempregnum)
 
s4 codegen_reg_of_dst (jitdata *jd, instruction *iptr, s4 tempregnum)
 
void codegen_emit_stub_compiler (jitdata *jd)
 
void codegen_emit_stub_native (jitdata *jd, methoddesc *nmd, functionptr f, int skipparams)
 

Macro Definition Documentation

#define BRANCH_EQ   (ICMD_IFEQ - ICMD_IFEQ)

Definition at line 88 of file codegen-common.hpp.

#define BRANCH_GE   (ICMD_IFGE - ICMD_IFEQ)

Definition at line 91 of file codegen-common.hpp.

#define BRANCH_GT   (ICMD_IFGT - ICMD_IFEQ)

Definition at line 92 of file codegen-common.hpp.

#define BRANCH_LE   (ICMD_IFLE - ICMD_IFEQ)

Definition at line 93 of file codegen-common.hpp.

#define BRANCH_LT   (ICMD_IFLT - ICMD_IFEQ)

Definition at line 90 of file codegen-common.hpp.

#define BRANCH_NAN   260

Definition at line 100 of file codegen-common.hpp.

#define BRANCH_NE   (ICMD_IFNE - ICMD_IFEQ)

Definition at line 89 of file codegen-common.hpp.

#define BRANCH_OPT_NONE   0

Definition at line 105 of file codegen-common.hpp.

#define BRANCH_UGE   258

Definition at line 97 of file codegen-common.hpp.

#define BRANCH_UGT   259

Definition at line 98 of file codegen-common.hpp.

#define BRANCH_ULE   257

Definition at line 96 of file codegen-common.hpp.

#define BRANCH_ULT   256

Definition at line 95 of file codegen-common.hpp.

#define BRANCH_UNCONDITIONAL   -1

Definition at line 86 of file codegen-common.hpp.

#define CODEGENDATA_FLAG_ERROR   0x00000001

Definition at line 154 of file codegen-common.hpp.

#define CODEGENDATA_FLAG_LONGBRANCHES   0x00000002

Definition at line 155 of file codegen-common.hpp.

#define CODEGENDATA_HAS_FLAG_ERROR (   cd)    ((cd)->flags & CODEGENDATA_FLAG_ERROR)

Definition at line 158 of file codegen-common.hpp.

#define CODEGENDATA_HAS_FLAG_LONGBRANCHES (   cd)    ((cd)->flags & CODEGENDATA_FLAG_LONGBRANCHES)

Definition at line 161 of file codegen-common.hpp.

#define DSEGINITSIZE   (1<<12) /* 4 Kbyte data area initialization size */

Definition at line 54 of file codegen-common.hpp.

#define GET_HIGH_REG (   a)    (((a) & 0xffff0000) >> 16)

Definition at line 68 of file codegen-common.hpp.

#define GET_LOW_REG (   a)    ((a) & 0x0000ffff)

Definition at line 67 of file codegen-common.hpp.

#define MCODEINITSIZE   (1<<15) /* 32 Kbyte code area initialization size */

Definition at line 53 of file codegen-common.hpp.

#define NCODEINITSIZE   (1<<15) /* 32 Kbyte code area initialization size */

Definition at line 56 of file codegen-common.hpp.

#define PACK_REGS (   low,
  high 
)    ( (((high) & 0x0000ffff) << 16) | ((low) & 0x0000ffff) )

Definition at line 64 of file codegen-common.hpp.

#define REG_LRESULT   REG_RESULT

Definition at line 74 of file codegen-common.hpp.

#define REG_LTMP12   REG_ITMP1

Definition at line 75 of file codegen-common.hpp.

#define REG_LTMP23   REG_ITMP2

Definition at line 76 of file codegen-common.hpp.

Function Documentation

void codegen_add_branch_ref ( codegendata cd,
basicblock target,
s4  condition,
s4  reg,
u4  options 
)

Definition at line 405 of file codegen-common.cpp.

void codegen_branch_label_add ( codegendata cd,
s4  label,
s4  condition,
s4  reg,
u4  options 
)

Definition at line 472 of file codegen-common.cpp.

void codegen_close ( void  )

Definition at line 327 of file codegen-common.cpp.

bool codegen_emit ( jitdata jd)

Generates machine code.

< CodeinfoPointer

Generates machine code for the method prolog.

Generates machine code for the method epilog.

Generates machine code for one ICMD.

Definition at line 1099 of file codegen-common.cpp.

void codegen_emit_epilog ( jitdata jd)

Generates machine code for the method epilog.

Definition at line 174 of file codegen.cpp.

void codegen_emit_instruction ( jitdata jd,
instruction iptr 
)

Generates machine code for one ICMD.

Definition at line 217 of file codegen.cpp.

void codegen_emit_prolog ( jitdata jd)

Generates machine code for the method prolog.

Definition at line 73 of file codegen.cpp.

void codegen_emit_stub_compiler ( jitdata jd)

Definition at line 2474 of file codegen.cpp.

void codegen_emit_stub_native ( jitdata jd,
methoddesc nmd,
functionptr  f,
int  skipparams 
)

Definition at line 2010 of file codegen.cpp.

void codegen_finish ( jitdata jd)

Definition at line 556 of file codegen-common.cpp.

java_object_t* codegen_finish_native_call ( u1 currentsp,
u1 pv 
)

Definition at line 967 of file codegen-common.cpp.

bool codegen_generate ( jitdata jd)

Definition at line 265 of file codegen-common.cpp.

void codegen_increase ( codegendata cd)

Definition at line 339 of file codegen-common.cpp.

void codegen_init ( void  )

Definition at line 126 of file codegen-common.cpp.

s4 codegen_reg_of_dst ( jitdata jd,
instruction iptr,
s4  tempregnum 
)

Definition at line 1075 of file codegen-common.cpp.

s4 codegen_reg_of_var ( u2  opcode,
varinfo v,
s4  tempregnum 
)

Definition at line 1055 of file codegen-common.cpp.

void codegen_resolve_branchrefs ( codegendata cd,
basicblock bptr 
)

Definition at line 434 of file codegen-common.cpp.

void codegen_setup ( jitdata jd)

Definition at line 138 of file codegen-common.cpp.

java_handle_t* codegen_start_native_call ( u1 currentsp,
u1 pv 
)

Definition at line 880 of file codegen-common.cpp.