CACAO
Macros | Functions | Variables
lsra.cpp File Reference

Go to the source code of this file.

Macros

#define IS_TEMP_VAR(s)   (((s)->varkind != ARGVAR) && ((s)->varkind != LOCALVAR))
 
#define lsra_join_3_stack(ls, dst, src1, src2, join_type)
 
#define lsra_join_2_stack(ls, dst, src, join_type)
 
#define lsra_join_dup(ls, s1, s2, s3)
 
#define lsra_new_stack(ls, s, block, instr)   if ((s)->varkind != ARGVAR) _lsra_new_stack(ls, s, block, instr, LSRA_STORE)
 
#define lsra_from_stack(ls, s, block, instr)   if ((s)->varkind != ARGVAR) _lsra_from_stack(ls, s, block, instr, LSRA_LOAD)
 
#define lsra_pop_from_stack(ls, s, block, instr)   if ((s)->varkind != ARGVAR) _lsra_from_stack(ls, s, block, instr, LSRA_POP)
 

Functions

void lsra_init (jitdata *)
 
void lsra_setup (jitdata *)
 
void lsra_main (jitdata *)
 
void lsra_reg_setup (jitdata *, struct lsra_register *, struct lsra_register *)
 
void lsra_calc_lifetime_length (jitdata *)
 
void _lsra_main (jitdata *, int *, int, struct lsra_register *, int *)
 
void lsra_expire_old_intervalls (jitdata *, struct lifetime *, struct lsra_register *)
 
void spill_at_intervall (jitdata *, struct lifetime *)
 
void lsra_add_active (struct lifetime *, struct lifetime **, int *)
 
void _lsra_expire_old_intervalls (jitdata *, struct lifetime *, struct lsra_register *, struct lifetime **, int *)
 
void _spill_at_intervall (struct lifetime *, struct lifetime **, int *)
 
void lsra_alloc (jitdata *, int *, int, int *)
 
int lsra_getmem (struct lifetime *, struct freemem *, int *)
 
struct freememlsra_getnewmem (int *)
 
void lsra_setflags (int *, int)
 
void lsra_dump_stack (stackelement_t *)
 
void print_lifetimes (jitdata *, int *, int)
 
void lsra_scan_registers_canditates (jitdata *, int)
 
void lsra_join_lifetimes (jitdata *, int)
 
void _lsra_new_stack (lsradata *, stackelement_t *, int, int, int)
 
void _lsra_from_stack (lsradata *, stackelement_t *, int, int, int)
 
void lsra_add_ss (struct lifetime *, stackelement_t *)
 
void lsra_usage_local (lsradata *, s4, int, int, int, int)
 
bool lsra (jitdata *jd)
 
void lsra_DFS (jitdata *jd)
 
void lsra_get_backedges_ (lsradata *ls, int basicblockcount)
 
void lsra_get_nesting (jitdata *jd)
 
void lsra_get_backedges (jitdata *jd)
 
void lsra_add_cfg (jitdata *jd, int from, int to)
 
void lsra_add_exceptions (jitdata *jd)
 
void lsra_add_jsr (jitdata *jd, int from, int to)
 
void lsra_add_sub (jitdata *jd, int b_index, struct _list *ret, bool *visited)
 
void lsra_add_subs (jitdata *jd)
 
void lsra_make_cfg (jitdata *jd)
 
void lsra_insertion_sort (struct lsradata *ls, int *a, int lo, int hi)
 
void lsra_qsort (struct lsradata *ls, int *a, int lo, int hi)
 
void lsra_param_sort (struct lsradata *ls, int *lifetime, int lifetime_count)
 
bool lsra_join_ss (struct lsradata *ls, struct stackelement *in, struct stackelement *out, int join_flag)
 
struct stackslotlsra_make_ss (stackelement_t *s, int bb_index)
 
struct lifetimeget_ss_lifetime (lsradata *ls, stackelement_t *s)
 

Variables

char ** prof_m_names
 
u4 ** prof_bb_freq
 
int prof_size
 

Macro Definition Documentation

#define IS_TEMP_VAR (   s)    (((s)->varkind != ARGVAR) && ((s)->varkind != LOCALVAR))

Definition at line 2015 of file lsra.cpp.

#define lsra_from_stack (   ls,
  s,
  block,
  instr 
)    if ((s)->varkind != ARGVAR) _lsra_from_stack(ls, s, block, instr, LSRA_LOAD)

Definition at line 2076 of file lsra.cpp.

#define lsra_join_2_stack (   ls,
  dst,
  src,
  join_type 
)
Value:
if ( IS_TEMP_VAR(dst) ) { \
if ( (IS_TEMP_VAR(src)) && ((src)->type == (dst)->type)) { \
lsra_join_ss(ls, dst, src, join_type); \
} \
}
#define IS_TEMP_VAR(s)
Definition: lsra.cpp:2015
bool lsra_join_ss(struct lsradata *ls, struct stackelement *in, struct stackelement *out, int join_flag)
Definition: lsra.cpp:1853

Definition at line 2028 of file lsra.cpp.

#define lsra_join_3_stack (   ls,
  dst,
  src1,
  src2,
  join_type 
)
Value:
if ( IS_TEMP_VAR(dst) ) { \
join_ret = false; \
if ( IS_TEMP_VAR(src1) && ((src1)->type == (dst)->type)) { \
join_ret = lsra_join_ss(ls, dst, src1, join_type); \
} \
if ((!join_ret) && IS_TEMP_VAR(src2) && ((src2)->type == (dst)->type)) { \
lsra_join_ss(ls, dst, src2, join_type); \
} \
}
#define IS_TEMP_VAR(s)
Definition: lsra.cpp:2015
bool lsra_join_ss(struct lsradata *ls, struct stackelement *in, struct stackelement *out, int join_flag)
Definition: lsra.cpp:1853

Definition at line 2017 of file lsra.cpp.

#define lsra_join_dup (   ls,
  s1,
  s2,
  s3 
)
Value:
{ \
if (IS_TEMP_VAR(s1)) { \
join_ret = false; \
if (IS_TEMP_VAR(s2)) \
join_ret = lsra_join_ss(ls, s1, s2, JOIN); \
/* undangerous join!*/\
if (IS_TEMP_VAR(s3)) { \
if (join_ret) /* first join succesfull -> second of type */ \
/* JOIN_DUP */ \
lsra_join_ss(ls, s1, s3, JOIN); /* first join did not */ \
/* happen -> second undangerous */ \
} \
} \
}
#define IS_TEMP_VAR(s)
Definition: lsra.cpp:2015
#define JOIN_DUP
Definition: lsra.hpp:70
#define JOIN
Definition: lsra.hpp:68
#define s3
Definition: md-asm.hpp:71
int8_t s1
Definition: types.hpp:39
int16_t s2
Definition: types.hpp:42
bool lsra_join_ss(struct lsradata *ls, struct stackelement *in, struct stackelement *out, int join_flag)
Definition: lsra.cpp:1853

Definition at line 2035 of file lsra.cpp.

#define lsra_new_stack (   ls,
  s,
  block,
  instr 
)    if ((s)->varkind != ARGVAR) _lsra_new_stack(ls, s, block, instr, LSRA_STORE)

Definition at line 2054 of file lsra.cpp.

#define lsra_pop_from_stack (   ls,
  s,
  block,
  instr 
)    if ((s)->varkind != ARGVAR) _lsra_from_stack(ls, s, block, instr, LSRA_POP)

Definition at line 2078 of file lsra.cpp.

Function Documentation

void _lsra_expire_old_intervalls ( jitdata jd,
struct lifetime lt,
struct lsra_register reg,
struct lifetime **  active,
int *  active_top 
)

Definition at line 1535 of file lsra.cpp.

void _lsra_from_stack ( lsradata ls,
stackelement_t s,
int  block,
int  instr,
int  store 
)

Definition at line 2080 of file lsra.cpp.

void _lsra_main ( jitdata jd,
int *  lifet,
int  lifetimecount,
struct lsra_register reg,
int *  reg_use 
)

Definition at line 1428 of file lsra.cpp.

void _lsra_new_stack ( lsradata ls,
stackelement_t s,
int  block,
int  instr,
int  store 
)

Definition at line 2056 of file lsra.cpp.

void _spill_at_intervall ( struct lifetime lt,
struct lifetime **  active,
int *  active_top 
)

Definition at line 1600 of file lsra.cpp.

struct lifetime* get_ss_lifetime ( lsradata ls,
stackelement_t s 
)

Definition at line 1984 of file lsra.cpp.

bool lsra ( jitdata jd)

Definition at line 101 of file lsra.cpp.

void lsra_add_active ( struct lifetime lt,
struct lifetime **  active,
int *  active_top 
)

Definition at line 1515 of file lsra.cpp.

void lsra_add_cfg ( jitdata jd,
int  from,
int  to 
)

Definition at line 465 of file lsra.cpp.

void lsra_add_exceptions ( jitdata jd)

Definition at line 496 of file lsra.cpp.

void lsra_add_jsr ( jitdata jd,
int  from,
int  to 
)

Definition at line 550 of file lsra.cpp.

void lsra_add_ss ( struct lifetime lt,
stackelement_t s 
)

Definition at line 1967 of file lsra.cpp.

void lsra_add_sub ( jitdata jd,
int  b_index,
struct _list ret,
bool *  visited 
)

Definition at line 607 of file lsra.cpp.

void lsra_add_subs ( jitdata jd)

Definition at line 655 of file lsra.cpp.

void lsra_alloc ( jitdata jd,
int *  lifet,
int  lifetimecount,
int *  mem_use 
)

Definition at line 1338 of file lsra.cpp.

void lsra_calc_lifetime_length ( jitdata jd)

Definition at line 1655 of file lsra.cpp.

void lsra_DFS ( jitdata jd)

Definition at line 176 of file lsra.cpp.

void lsra_dump_stack ( stackelement_t s)

Definition at line 2144 of file lsra.cpp.

void lsra_expire_old_intervalls ( jitdata jd,
struct lifetime lt,
struct lsra_register reg 
)

Definition at line 1526 of file lsra.cpp.

void lsra_get_backedges ( jitdata jd)

Definition at line 339 of file lsra.cpp.

void lsra_get_backedges_ ( lsradata ls,
int  basicblockcount 
)

Definition at line 235 of file lsra.cpp.

void lsra_get_nesting ( jitdata jd)

Definition at line 267 of file lsra.cpp.

int lsra_getmem ( struct lifetime lt,
struct freemem fmem,
int *  mem_use 
)

Definition at line 1397 of file lsra.cpp.

struct freemem * lsra_getnewmem ( int *  mem_use)

Definition at line 1417 of file lsra.cpp.

void lsra_init ( jitdata jd)

Definition at line 808 of file lsra.cpp.

void lsra_insertion_sort ( struct lsradata ls,
int *  a,
int  lo,
int  hi 
)

Definition at line 1178 of file lsra.cpp.

void lsra_join_lifetimes ( jitdata jd,
int  b_index 
)

Definition at line 1930 of file lsra.cpp.

bool lsra_join_ss ( struct lsradata ls,
struct stackelement *  in,
struct stackelement *  out,
int  join_flag 
)

Definition at line 1853 of file lsra.cpp.

void lsra_main ( jitdata jd)

Definition at line 1245 of file lsra.cpp.

void lsra_make_cfg ( jitdata jd)

Definition at line 687 of file lsra.cpp.

struct stackslot* lsra_make_ss ( stackelement_t s,
int  bb_index 
)

Definition at line 1957 of file lsra.cpp.

void lsra_param_sort ( struct lsradata ls,
int *  lifetime,
int  lifetime_count 
)

Definition at line 1222 of file lsra.cpp.

void lsra_qsort ( struct lsradata ls,
int *  a,
int  lo,
int  hi 
)

Definition at line 1193 of file lsra.cpp.

void lsra_reg_setup ( jitdata jd,
struct lsra_register int_reg,
struct lsra_register flt_reg 
)

Definition at line 1035 of file lsra.cpp.

void lsra_scan_registers_canditates ( jitdata jd,
int  b_index 
)

Definition at line 2156 of file lsra.cpp.

void lsra_setflags ( int *  flags,
int  newflags 
)

Definition at line 1386 of file lsra.cpp.

void lsra_setup ( jitdata jd)

Definition at line 845 of file lsra.cpp.

void lsra_usage_local ( lsradata ls,
s4  v_index,
int  type,
int  block,
int  instr,
int  store 
)

Definition at line 2107 of file lsra.cpp.

void print_lifetimes ( jitdata jd,
int *  lt,
int  lifetimecount 
)

Definition at line 1804 of file lsra.cpp.

void spill_at_intervall ( jitdata jd,
struct lifetime lt 
)

Definition at line 1587 of file lsra.cpp.

Variable Documentation

u4** prof_bb_freq
char** prof_m_names
int prof_size