CACAO
Data Structures | Macros | Typedefs | Enumerations | Functions
escape.cpp File Reference

Go to the source code of this file.

Data Structures

struct  instruction_list_item
 
struct  instruction_list_t
 
struct  escape_analysis_t
 
struct  dependency_list_item
 
struct  dependency_list_t
 
struct  var_extra
 

Macros

#define I2(why, tov, es)
 
#define I(why, to, from)   I2(why, instruction_ ## to (iptr), escape_analysis_get_state(e, instruction_ ## from (iptr)))
 
#define E2(why, var)   I2(why, var, ESCAPE_GLOBAL)
 
#define E(why, which)   E2(why, instruction_ ## which (iptr))
 
#define ENABLE_COLOR
 
#define str(x)   case x: return #x;
 
#define FOR_EACH_INSTRUCTION_LIST(list, it)   for ((it) = (list)->first; (it) != NULL; (it) = (it)->next)
 
#define FOR_EACH_DEPENDENCY_LIST(dl, it)   for ((it) = (dl)->first; (it) != NULL; (it) = (it)->next)
 

Typedefs

typedef struct
instruction_list_item 
instruction_list_item_t
 
typedef struct dependency_list_item dependency_list_item_t
 
typedef struct var_extra var_extra_t
 

Enumerations

enum  color_t {
  RED = 31, GREEN, YELLOW, BLUE,
  MAGENTA, CYAN, WHITE, COLOR_END
}
 

Functions

static void color_start (color_t color)
 
static void color_end ()
 
static void color_printf (color_t color, const char *fmt,...)
 
const char * escape_state_to_string (escape_state_t escape_state)
 
static s2 instruction_get_opcode (const instruction *iptr)
 
static bool instruction_is_unresolved (const instruction *iptr)
 
static s4 instruction_field_type (const instruction *iptr)
 
static s4 instruction_s1 (const instruction *iptr)
 
static s4 instruction_s2 (const instruction *iptr)
 
static s4 instruction_s3 (const instruction *iptr)
 
static s4 instruction_dst (const instruction *iptr)
 
static s4 instruction_arg (const instruction *iptr, int arg)
 
static bool instruction_is_class_constant (const instruction *iptr)
 
static classinfoinstruction_classinfo (const instruction *iptr)
 
static methodinfoinstruction_local_methodinfo (const instruction *iptr)
 
static int instruction_dst_type (const instruction *iptr, jitdata *jd)
 
static int instruction_return_type (const instruction *iptr)
 
static s4 instruction_arg_type (const instruction *iptr, int arg)
 
static int instruction_arg_count (const instruction *iptr)
 
void instruction_list_init (instruction_list_t *list)
 
void instruction_list_add (instruction_list_t *list, instruction *instr)
 
bool dependency_list_item_compare (const dependency_list_item_t *item, const instruction *load)
 
s4 dependency_list_item_get_dependency (const dependency_list_item_t *item)
 
void dependency_list_init (dependency_list_t *dl)
 
void dependency_list_add (dependency_list_t *dl, instruction *store)
 
void dependenCy_list_import (dependency_list_t *dl, dependency_list_t *other)
 
static void var_extra_init (var_extra_t *ve)
 
static var_extra_tvar_extra_get_no_alloc (const escape_analysis_t *e, s4 var)
 
static var_extra_tvar_extra_get (escape_analysis_t *e, s4 var)
 
static s4 var_extra_get_representant (escape_analysis_t *e, s4 var)
 
static escape_state_t var_extra_get_escape_state (escape_analysis_t *e, s4 var)
 
static void var_extra_set_escape_state (escape_analysis_t *e, s4 var, escape_state_t escape_state)
 
static dependency_list_tvar_extra_get_dependency_list (escape_analysis_t *e, s4 var)
 
static void escape_analysis_init (escape_analysis_t *e, jitdata *jd)
 
static void escape_analysis_set_allocation (escape_analysis_t *e, s4 var, instruction *iptr)
 
static instructionescape_analysis_get_allocation (const escape_analysis_t *e, s4 var)
 
static void escape_analysis_set_contains_argument (escape_analysis_t *e, s4 var)
 
static bool escape_analysis_get_contains_argument (escape_analysis_t *e, s4 var)
 
static void escape_analysis_set_contains_only_arguments (escape_analysis_t *e, s4 var)
 
static bool escape_analysis_get_contains_only_arguments (escape_analysis_t *e, s4 var)
 
static bool escape_analysis_in_same_set (escape_analysis_t *e, s4 var1, s4 var2)
 
static void escape_analysis_ensure_state (escape_analysis_t *e, s4 var, escape_state_t escape_state)
 
static escape_state_t escape_analysis_get_state (escape_analysis_t *e, s4 var)
 
static classinfoescape_analysis_classinfo_in_var (escape_analysis_t *e, s4 var)
 
static void escape_analysis_merge (escape_analysis_t *e, s4 var1, s4 var2)
 
static void escape_analysis_add_dependency (escape_analysis_t *e, instruction *store)
 
static void escape_analysis_process_instruction (escape_analysis_t *e, instruction *iptr)
 
static void escape_analysis_process_instructions (escape_analysis_t *e)
 
static void escape_analysis_post_process_returns (escape_analysis_t *e)
 
static void escape_analysis_post_process_getfields (escape_analysis_t *e)
 
static void escape_analysis_mark_monitors (escape_analysis_t *e)
 
static void escape_analysis_mark_allocations (escape_analysis_t *e)
 
static void escape_analysis_process_arguments (escape_analysis_t *e)
 
static void escape_analysis_export_arguments (escape_analysis_t *e)
 
static void escape_analysis_display (escape_analysis_t *e)
 
void escape_analysis_perform (jitdata *jd)
 
void escape_analysis_escape_check (void *vp)
 
bool escape_is_monomorphic (methodinfo *caller, methodinfo *callee)
 

Macro Definition Documentation

#define E (   why,
  which 
)    E2(why, instruction_ ## which (iptr))

Definition at line 52 of file escape.cpp.

#define E2 (   why,
  var 
)    I2(why, var, ESCAPE_GLOBAL)

Definition at line 51 of file escape.cpp.

#define ENABLE_COLOR

Definition at line 65 of file escape.cpp.

#define FOR_EACH_DEPENDENCY_LIST (   dl,
  it 
)    for ((it) = (dl)->first; (it) != NULL; (it) = (it)->next)

Definition at line 332 of file escape.cpp.

#define FOR_EACH_INSTRUCTION_LIST (   list,
  it 
)    for ((it) = (list)->first; (it) != NULL; (it) = (it)->next)

Definition at line 205 of file escape.cpp.

#define I (   why,
  to,
  from 
)    I2(why, instruction_ ## to (iptr), escape_analysis_get_state(e, instruction_ ## from (iptr)))

Definition at line 50 of file escape.cpp.

#define I2 (   why,
  tov,
  es 
)

Definition at line 48 of file escape.cpp.

#define str (   x)    case x: return #x;

Typedef Documentation

typedef struct var_extra var_extra_t

Enumeration Type Documentation

enum color_t
Enumerator
RED 
GREEN 
YELLOW 
BLUE 
MAGENTA 
CYAN 
WHITE 
COLOR_END 

Definition at line 54 of file escape.cpp.

Function Documentation

static void color_end ( )
static

Definition at line 75 of file escape.cpp.

static void color_printf ( color_t  color,
const char *  fmt,
  ... 
)
static

Definition at line 82 of file escape.cpp.

static void color_start ( color_t  color)
static

Definition at line 67 of file escape.cpp.

void dependency_list_add ( dependency_list_t dl,
instruction store 
)

Definition at line 299 of file escape.cpp.

void dependenCy_list_import ( dependency_list_t dl,
dependency_list_t other 
)

Definition at line 314 of file escape.cpp.

void dependency_list_init ( dependency_list_t dl)

Definition at line 294 of file escape.cpp.

bool dependency_list_item_compare ( const dependency_list_item_t item,
const instruction load 
)

Definition at line 235 of file escape.cpp.

s4 dependency_list_item_get_dependency ( const dependency_list_item_t item)

Definition at line 275 of file escape.cpp.

static void escape_analysis_add_dependency ( escape_analysis_t e,
instruction store 
)
static

Definition at line 682 of file escape.cpp.

static classinfo* escape_analysis_classinfo_in_var ( escape_analysis_t e,
s4  var 
)
static

Definition at line 575 of file escape.cpp.

static void escape_analysis_display ( escape_analysis_t e)
static

Definition at line 1247 of file escape.cpp.

static void escape_analysis_ensure_state ( escape_analysis_t e,
s4  var,
escape_state_t  escape_state 
)
static

Definition at line 534 of file escape.cpp.

void escape_analysis_escape_check ( void vp)

Definition at line 1319 of file escape.cpp.

static void escape_analysis_export_arguments ( escape_analysis_t e)
static

Definition at line 1166 of file escape.cpp.

static instruction* escape_analysis_get_allocation ( const escape_analysis_t e,
s4  var 
)
static

Definition at line 491 of file escape.cpp.

static bool escape_analysis_get_contains_argument ( escape_analysis_t e,
s4  var 
)
static

Definition at line 505 of file escape.cpp.

static bool escape_analysis_get_contains_only_arguments ( escape_analysis_t e,
s4  var 
)
static

Definition at line 515 of file escape.cpp.

static escape_state_t escape_analysis_get_state ( escape_analysis_t e,
s4  var 
)
static

Definition at line 571 of file escape.cpp.

static bool escape_analysis_in_same_set ( escape_analysis_t e,
s4  var1,
s4  var2 
)
static

Definition at line 530 of file escape.cpp.

static void escape_analysis_init ( escape_analysis_t e,
jitdata jd 
)
static

Definition at line 443 of file escape.cpp.

static void escape_analysis_mark_allocations ( escape_analysis_t e)
static

Definition at line 1102 of file escape.cpp.

static void escape_analysis_mark_monitors ( escape_analysis_t e)
static

Definition at line 1086 of file escape.cpp.

static void escape_analysis_merge ( escape_analysis_t e,
s4  var1,
s4  var2 
)
static

Definition at line 597 of file escape.cpp.

void escape_analysis_perform ( jitdata jd)

Definition at line 1277 of file escape.cpp.

static void escape_analysis_post_process_getfields ( escape_analysis_t e)
static

Definition at line 1048 of file escape.cpp.

static void escape_analysis_post_process_returns ( escape_analysis_t e)
static

Definition at line 1032 of file escape.cpp.

static void escape_analysis_process_arguments ( escape_analysis_t e)
static

Definition at line 1141 of file escape.cpp.

static void escape_analysis_process_instruction ( escape_analysis_t e,
instruction iptr 
)
static

Definition at line 697 of file escape.cpp.

static void escape_analysis_process_instructions ( escape_analysis_t e)
static

Definition at line 1011 of file escape.cpp.

static void escape_analysis_set_allocation ( escape_analysis_t e,
s4  var,
instruction iptr 
)
static

Definition at line 487 of file escape.cpp.

static void escape_analysis_set_contains_argument ( escape_analysis_t e,
s4  var 
)
static

Definition at line 500 of file escape.cpp.

static void escape_analysis_set_contains_only_arguments ( escape_analysis_t e,
s4  var 
)
static

Definition at line 510 of file escape.cpp.

bool escape_is_monomorphic ( methodinfo caller,
methodinfo callee 
)

Definition at line 1324 of file escape.cpp.

const char* escape_state_to_string ( escape_state_t  escape_state)

Definition at line 94 of file escape.cpp.

static s4 instruction_arg ( const instruction iptr,
int  arg 
)
inlinestatic

Definition at line 145 of file escape.cpp.

static int instruction_arg_count ( const instruction iptr)
inlinestatic

Definition at line 179 of file escape.cpp.

static s4 instruction_arg_type ( const instruction iptr,
int  arg 
)
inlinestatic

Definition at line 173 of file escape.cpp.

static classinfo* instruction_classinfo ( const instruction iptr)
inlinestatic

Definition at line 153 of file escape.cpp.

static s4 instruction_dst ( const instruction iptr)
inlinestatic

Definition at line 141 of file escape.cpp.

static int instruction_dst_type ( const instruction iptr,
jitdata jd 
)
inlinestatic

Definition at line 165 of file escape.cpp.

static s4 instruction_field_type ( const instruction iptr)
inlinestatic

Definition at line 121 of file escape.cpp.

static s2 instruction_get_opcode ( const instruction iptr)
inlinestatic

Definition at line 109 of file escape.cpp.

static bool instruction_is_class_constant ( const instruction iptr)
inlinestatic

Definition at line 149 of file escape.cpp.

static bool instruction_is_unresolved ( const instruction iptr)
inlinestatic

Definition at line 117 of file escape.cpp.

void instruction_list_add ( instruction_list_t list,
instruction instr 
)

Definition at line 198 of file escape.cpp.

void instruction_list_init ( instruction_list_t list)

Definition at line 194 of file escape.cpp.

static methodinfo* instruction_local_methodinfo ( const instruction iptr)
inlinestatic

Definition at line 157 of file escape.cpp.

static int instruction_return_type ( const instruction iptr)
inlinestatic

Definition at line 169 of file escape.cpp.

static s4 instruction_s1 ( const instruction iptr)
inlinestatic

Definition at line 129 of file escape.cpp.

static s4 instruction_s2 ( const instruction iptr)
inlinestatic

Definition at line 133 of file escape.cpp.

static s4 instruction_s3 ( const instruction iptr)
inlinestatic

Definition at line 137 of file escape.cpp.

static var_extra_t* var_extra_get ( escape_analysis_t e,
s4  var 
)
static

Definition at line 375 of file escape.cpp.

static dependency_list_t* var_extra_get_dependency_list ( escape_analysis_t e,
s4  var 
)
static

Definition at line 427 of file escape.cpp.

static escape_state_t var_extra_get_escape_state ( escape_analysis_t e,
s4  var 
)
static

Definition at line 409 of file escape.cpp.

static var_extra_t* var_extra_get_no_alloc ( const escape_analysis_t e,
s4  var 
)
inlinestatic

Definition at line 371 of file escape.cpp.

static s4 var_extra_get_representant ( escape_analysis_t e,
s4  var 
)
static

Definition at line 391 of file escape.cpp.

static void var_extra_init ( var_extra_t ve)
static

Definition at line 358 of file escape.cpp.

static void var_extra_set_escape_state ( escape_analysis_t e,
s4  var,
escape_state_t  escape_state 
)
static

Definition at line 418 of file escape.cpp.