CACAO
Data Structures | Namespaces | Macros | Functions | Variables
replace.cpp File Reference

Go to the source code of this file.

Data Structures

struct  replace_patch_data_t
 

Namespaces

 cacao
 This file contains the Instruction class.
 

Macros

#define DEBUG_NAME   "replace"
 
#define REPLACE_PATCH_DYNAMIC_CALL
 
#define TOP_IS_NORMAL   0
 
#define TOP_IS_ON_STACK   1
 
#define TOP_IS_IN_ITMP1   2
 
#define TOP_IS_VOID   3
 
#define REPLACE_IS_NATIVE_FRAME(frame)   ((frame)->sfi != NULL)
 Determines whether a given sourceframe represents a frame of a native method. More...
 
#define REPLACE_IS_CALL_SITE(rp)   ((rp)->callsize > 0)
 Determeines whether the given replacement point is at a call site. More...
 
#define TYPECHAR(t)   (((t) >= 0 && (t) <= TYPE_RET) ? show_jit_type_letters[t] : '?')
 

Functions

void replace_free_replacement_points (codeinfo *code)
 
void replace_activate_replacement_points (codeinfo *code, bool mappable)
 
void replace_deactivate_replacement_points (codeinfo *code)
 
static void replace_read_value (executionstate_t *es, rplalloc *ra, replace_val_t *javaval)
 
static void replace_write_value (executionstate_t *es, rplalloc *ra, replace_val_t *javaval)
 
static sourceframe_t * replace_new_sourceframe (sourcestate_t *ss)
 
static void replace_read_executionstate (rplpoint *rp, executionstate_t *es, sourcestate_t *ss)
 
static void replace_write_executionstate (rplpoint *rp, executionstate_t *es, sourcestate_t *ss)
 
void md_push_stackframe (executionstate_t *es, codeinfo *calleecode, u1 *ra)
 
void replace_pop_activation_record (executionstate_t *es, sourceframe_t *frame)
 
static void replace_patch_method_pointer (methodptr *mpp, methodptr entrypoint, const char *kind)
 
void replace_patch_class (vftbl_t *vftbl, methodinfo *m, u1 *oldentrypoint, u1 *entrypoint)
 
void replace_patch_callback (classinfo *c, struct replace_patch_data_t *pd)
 
void replace_patch_class_hierarchy (methodinfo *m, u1 *oldentrypoint, u1 *entrypoint)
 
void replace_patch_future_calls (u1 *ra, sourceframe_t *callerframe, sourceframe_t *calleeframe)
 
void replace_push_activation_record (executionstate_t *es, rplpoint *rpcall, sourceframe_t *callerframe, sourceframe_t *calleeframe)
 
rplpoint * replace_find_replacement_point_at_call_site (codeinfo *code, sourceframe_t *frame)
 
rplpoint * replace_find_replacement_point (codeinfo *code, sourceframe_t *frame)
 
rplpoint * replace_find_replacement_point_at_or_before_pc (codeinfo *code, u1 *pc, unsigned int desired_flags)
 
rplpoint * replace_find_replacement_point_for_pc (codeinfo *code, u1 *pc)
 
static void replace_pop_native_frame (executionstate_t *es, sourcestate_t *ss, stackframeinfo_t *sfi)
 
static void replace_push_native_frame (executionstate_t *es, sourcestate_t *ss)
 
rplpoint * replace_recover_source_frame (rplpoint *rp, executionstate_t *es, sourcestate_t *ss)
 
sourcestate_t * replace_recover_source_state (rplpoint *rp, executionstate_t *es)
 
static void replace_build_execution_state (sourcestate_t *ss, executionstate_t *es)
 
static void replace_optimize (codeinfo *code, rplpoint *rp, executionstate_t *es)
 
void replace_handle_countdown_trap (u1 *pc, executionstate_t *es)
 
bool replace_handle_replacement_trap (u1 *pc, executionstate_t *es)
 
void replace_handle_deoptimization_trap (u1 *pc, executionstate_t *es)
 
OStreamcacao::operator<< (OStream &OS, const rplpoint *rp)
 
OStreamcacao::operator<< (OStream &OS, const rplpoint &rp)
 
OStreamcacao::operator<< (OStream &OS, const rplalloc *ra)
 
OStreamcacao::operator<< (OStream &OS, const rplalloc &ra)
 
OStreamcacao::operator<< (OStream &OS, const sourceframe_t *frame)
 
static OStreamcacao::replace_val_print (OStream &OS, s4 type, replace_val_t value)
 
static OStreamcacao::print_replace_vals (OStream &OS, replace_val_t *values, u1 *types, s4 count)
 
OStreamcacao::operator<< (OStream &OS, const sourceframe_t &frame)
 
OStreamcacao::operator<< (OStream &OS, const sourcestate_t *ss)
 
OStreamcacao::operator<< (OStream &OS, const sourcestate_t &ss)
 

Variables

static s4 replace_normalize_type_map []
 

Macro Definition Documentation

#define DEBUG_NAME   "replace"

Definition at line 66 of file replace.cpp.

#define REPLACE_IS_CALL_SITE (   rp)    ((rp)->callsize > 0)

Determeines whether the given replacement point is at a call site.

Definition at line 89 of file replace.cpp.

#define REPLACE_IS_NATIVE_FRAME (   frame)    ((frame)->sfi != NULL)

Determines whether a given sourceframe represents a frame of a native method.

Definition at line 84 of file replace.cpp.

#define REPLACE_PATCH_DYNAMIC_CALL

Definition at line 70 of file replace.cpp.

#define TOP_IS_IN_ITMP1   2

Definition at line 77 of file replace.cpp.

#define TOP_IS_NORMAL   0

Definition at line 75 of file replace.cpp.

#define TOP_IS_ON_STACK   1

Definition at line 76 of file replace.cpp.

#define TOP_IS_VOID   3

Definition at line 78 of file replace.cpp.

#define TYPECHAR (   t)    (((t) >= 0 && (t) <= TYPE_RET) ? show_jit_type_letters[t] : '?')

Definition at line 2041 of file replace.cpp.

Function Documentation

void md_push_stackframe ( executionstate_t es,
codeinfo calleecode,
u1 ra 
)

Definition at line 814 of file replace.cpp.

void replace_activate_replacement_points ( codeinfo code,
bool  mappable 
)

Definition at line 132 of file replace.cpp.

static void replace_build_execution_state ( sourcestate_t *  ss,
executionstate_t es 
)
static

Definition at line 1771 of file replace.cpp.

void replace_deactivate_replacement_points ( codeinfo code)

Definition at line 202 of file replace.cpp.

rplpoint* replace_find_replacement_point ( codeinfo code,
sourceframe_t *  frame 
)

Definition at line 1386 of file replace.cpp.

rplpoint* replace_find_replacement_point_at_call_site ( codeinfo code,
sourceframe_t *  frame 
)

Definition at line 1348 of file replace.cpp.

rplpoint* replace_find_replacement_point_at_or_before_pc ( codeinfo code,
u1 pc,
unsigned int  desired_flags 
)

Definition at line 1444 of file replace.cpp.

rplpoint* replace_find_replacement_point_for_pc ( codeinfo code,
u1 pc 
)

Definition at line 1480 of file replace.cpp.

void replace_free_replacement_points ( codeinfo code)

Definition at line 100 of file replace.cpp.

void replace_handle_countdown_trap ( u1 pc,
executionstate_t es 
)

Definition at line 1887 of file replace.cpp.

void replace_handle_deoptimization_trap ( u1 pc,
executionstate_t es 
)

Definition at line 1974 of file replace.cpp.

bool replace_handle_replacement_trap ( u1 pc,
executionstate_t es 
)

Definition at line 1931 of file replace.cpp.

static sourceframe_t* replace_new_sourceframe ( sourcestate_t *  ss)
static

Definition at line 356 of file replace.cpp.

static void replace_optimize ( codeinfo code,
rplpoint *  rp,
executionstate_t es 
)
static

Definition at line 1830 of file replace.cpp.

void replace_patch_callback ( classinfo c,
struct replace_patch_data_t pd 
)

Definition at line 1106 of file replace.cpp.

void replace_patch_class ( vftbl_t vftbl,
methodinfo m,
u1 oldentrypoint,
u1 entrypoint 
)

Definition at line 1057 of file replace.cpp.

void replace_patch_class_hierarchy ( methodinfo m,
u1 oldentrypoint,
u1 entrypoint 
)

Definition at line 1120 of file replace.cpp.

void replace_patch_future_calls ( u1 ra,
sourceframe_t *  callerframe,
sourceframe_t *  calleeframe 
)

Definition at line 1150 of file replace.cpp.

static void replace_patch_method_pointer ( methodptr mpp,
methodptr  entrypoint,
const char *  kind 
)
static

Definition at line 1023 of file replace.cpp.

void replace_pop_activation_record ( executionstate_t es,
sourceframe_t *  frame 
)

Definition at line 957 of file replace.cpp.

static void replace_pop_native_frame ( executionstate_t es,
sourcestate_t *  ss,
stackframeinfo_t sfi 
)
static

Definition at line 1514 of file replace.cpp.

void replace_push_activation_record ( executionstate_t es,
rplpoint *  rpcall,
sourceframe_t *  callerframe,
sourceframe_t *  calleeframe 
)

Definition at line 1275 of file replace.cpp.

static void replace_push_native_frame ( executionstate_t es,
sourcestate_t *  ss 
)
static

Definition at line 1599 of file replace.cpp.

static void replace_read_executionstate ( rplpoint *  rp,
executionstate_t es,
sourcestate_t *  ss 
)
static

Definition at line 398 of file replace.cpp.

static void replace_read_value ( executionstate_t es,
rplalloc *  ra,
replace_val_t *  javaval 
)
static

Definition at line 252 of file replace.cpp.

rplpoint* replace_recover_source_frame ( rplpoint *  rp,
executionstate_t es,
sourcestate_t *  ss 
)

Definition at line 1671 of file replace.cpp.

sourcestate_t* replace_recover_source_state ( rplpoint *  rp,
executionstate_t es 
)

Definition at line 1733 of file replace.cpp.

static void replace_write_executionstate ( rplpoint *  rp,
executionstate_t es,
sourcestate_t *  ss 
)
static

Definition at line 638 of file replace.cpp.

static void replace_write_value ( executionstate_t es,
rplalloc *  ra,
replace_val_t *  javaval 
)
static

Definition at line 302 of file replace.cpp.

Variable Documentation

s4 replace_normalize_type_map[]
static
Initial value:
= {
rplpoint::TYPE_STD,
rplpoint::TYPE_STD,
rplpoint::TYPE_STD,
rplpoint::TYPE_CALL,
rplpoint::TYPE_CALL,
rplpoint::TYPE_RETURN,
rplpoint::TYPE_STD
}

Definition at line 387 of file replace.cpp.