php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
zend_jit_trace.c File Reference

Go to the source code of this file.

Data Structures

struct  _zend_tssa
 

Macros

#define ZEND_JIT_COUNTER_NUM   zend_jit_traces[0].root
 
#define ZEND_JIT_TRACE_NUM   zend_jit_traces[0].id
 
#define ZEND_JIT_EXIT_NUM   zend_jit_traces[0].exit_count
 
#define ZEND_JIT_EXIT_COUNTERS   zend_jit_traces[0].exit_counters
 
#define ZEND_JIT_TRACE_STOP_DESCRIPTION(name, description)
 
#define ADD_OP_GUARD(_ssa_var, _op_type)
 
#define CHECK_OP_TRACE_TYPE(_var, _ssa_var, op_info, op_type)
 
#define ADD_OP1_TRACE_GUARD()
 
#define ADD_OP2_TRACE_GUARD()
 
#define ADD_OP1_DATA_TRACE_GUARD()
 
#define CHECK_OP1_TRACE_TYPE()
 
#define CHECK_OP2_TRACE_TYPE()
 
#define CHECK_OP1_DATA_TRACE_TYPE()
 
#define RA_HAS_IVAL(var)
 
#define RA_IVAL_FLAGS(var)
 
#define RA_IVAL_START(var, line)
 
#define RA_IVAL_END(var, line)
 
#define RA_IVAL_CLOSE(var, line)
 
#define RA_IVAL_DEL(var)
 
#define RA_HAS_REG(var)
 
#define RA_REG_FLAGS(var)
 
#define RA_REG_START(var, line)
 
#define RA_REG_DEL(var)
 

Typedefs

typedef struct _zend_tssa zend_tssa
 

Functions

ZEND_EXT_API void zend_jit_blacklist_function (zend_op_array *op_array)
 
int ZEND_FASTCALL zend_jit_trace_hot_root (zend_execute_data *execute_data, const zend_op *opline)
 
int ZEND_FASTCALL zend_jit_trace_hot_side (zend_execute_data *execute_data, uint32_t parent_num, uint32_t exit_num)
 
int ZEND_FASTCALL zend_jit_trace_exit (uint32_t exit_num, zend_jit_registers_buf *regs)
 

Macro Definition Documentation

◆ ADD_OP1_DATA_TRACE_GUARD

#define ADD_OP1_DATA_TRACE_GUARD ( )
Value:
ADD_OP_GUARD(tssa->ops[idx+1].op1_use, op3_type)
#define ADD_OP_GUARD(_ssa_var, _op_type)

Definition at line 418 of file zend_jit_trace.c.

◆ ADD_OP1_TRACE_GUARD

#define ADD_OP1_TRACE_GUARD ( )
Value:
ADD_OP_GUARD(tssa->ops[idx].op1_use, op1_type)

Definition at line 414 of file zend_jit_trace.c.

◆ ADD_OP2_TRACE_GUARD

#define ADD_OP2_TRACE_GUARD ( )
Value:
ADD_OP_GUARD(tssa->ops[idx].op2_use, op2_type)

Definition at line 416 of file zend_jit_trace.c.

◆ ADD_OP_GUARD

#define ADD_OP_GUARD ( _ssa_var,
_op_type )
Value:
do { \
if (_ssa_var >= 0 && _op_type != IS_UNKNOWN) { \
zend_jit_trace_add_op_guard(tssa, _ssa_var, _op_type); \
} \
} while (0)
#define IS_UNKNOWN

Definition at line 390 of file zend_jit_trace.c.

◆ CHECK_OP1_DATA_TRACE_TYPE

#define CHECK_OP1_DATA_TRACE_TYPE ( )
Value:
CHECK_OP_TRACE_TYPE((opline+1)->op1.var, (ssa_op+1)->op1_use, op1_data_info, op3_type)
#define CHECK_OP_TRACE_TYPE(_var, _ssa_var, op_info, op_type)
op1

Definition at line 425 of file zend_jit_trace.c.

◆ CHECK_OP1_TRACE_TYPE

#define CHECK_OP1_TRACE_TYPE ( )
Value:
CHECK_OP_TRACE_TYPE(opline->op1.var, ssa_op->op1_use, op1_info, op1_type)

Definition at line 421 of file zend_jit_trace.c.

◆ CHECK_OP2_TRACE_TYPE

#define CHECK_OP2_TRACE_TYPE ( )
Value:
CHECK_OP_TRACE_TYPE(opline->op2.var, ssa_op->op2_use, op2_info, op2_type)

Definition at line 423 of file zend_jit_trace.c.

◆ CHECK_OP_TRACE_TYPE

#define CHECK_OP_TRACE_TYPE ( _var,
_ssa_var,
op_info,
op_type )
Value:
do { \
if (op_type != IS_UNKNOWN) { \
if ((op_info & MAY_BE_GUARD) != 0) { \
if (!zend_jit_type_guard(&ctx, opline, _var, op_type)) { \
goto jit_failure; \
} \
if (ssa->vars[_ssa_var].alias != NO_ALIAS) { \
SET_STACK_TYPE(stack, EX_VAR_TO_NUM(_var), IS_UNKNOWN, 1); \
op_info = zend_jit_trace_type_to_info(op_type); \
} else { \
SET_STACK_TYPE(stack, EX_VAR_TO_NUM(_var), op_type, 1); \
op_info &= ~MAY_BE_GUARD; \
ssa->var_info[_ssa_var].type &= op_info; \
} \
} \
} \
} while (0)
#define EX_VAR_TO_NUM(n)
#define MAY_BE_GUARD
@ NO_ALIAS
Definition zend_ssa.h:95

Definition at line 396 of file zend_jit_trace.c.

◆ RA_HAS_IVAL

#define RA_HAS_IVAL ( var)
Value:
(ra[var].ref != 0)

Definition at line 2771 of file zend_jit_trace.c.

◆ RA_HAS_REG

#define RA_HAS_REG ( var)
Value:
(ra[var].ref != 0)

Definition at line 2777 of file zend_jit_trace.c.

◆ RA_IVAL_CLOSE

#define RA_IVAL_CLOSE ( var,
line )

Definition at line 2775 of file zend_jit_trace.c.

◆ RA_IVAL_DEL

#define RA_IVAL_DEL ( var)
Value:
do {ra[var].ref = IR_UNUSED;} while (0)
#define IR_UNUSED
Definition ir.h:395

Definition at line 2776 of file zend_jit_trace.c.

◆ RA_IVAL_END

#define RA_IVAL_END ( var,
line )

Definition at line 2774 of file zend_jit_trace.c.

◆ RA_IVAL_FLAGS

#define RA_IVAL_FLAGS ( var)
Value:
ra[var].flags

Definition at line 2772 of file zend_jit_trace.c.

◆ RA_IVAL_START

#define RA_IVAL_START ( var,
line )
Value:
do {ra[var].ref = IR_NULL;} while (0)
#define IR_NULL
Definition ir.h:396

Definition at line 2773 of file zend_jit_trace.c.

◆ RA_REG_DEL

#define RA_REG_DEL ( var)
Value:
do {ra[var].ref = IR_UNUSED;} while (0)

Definition at line 2780 of file zend_jit_trace.c.

◆ RA_REG_FLAGS

#define RA_REG_FLAGS ( var)
Value:
ra[var].flags

Definition at line 2778 of file zend_jit_trace.c.

◆ RA_REG_START

#define RA_REG_START ( var,
line )
Value:
do {ra[var].ref = IR_NULL;} while (0)

Definition at line 2779 of file zend_jit_trace.c.

◆ ZEND_JIT_COUNTER_NUM

#define ZEND_JIT_COUNTER_NUM   zend_jit_traces[0].root

Definition at line 23 of file zend_jit_trace.c.

◆ ZEND_JIT_EXIT_COUNTERS

#define ZEND_JIT_EXIT_COUNTERS   zend_jit_traces[0].exit_counters

Definition at line 26 of file zend_jit_trace.c.

◆ ZEND_JIT_EXIT_NUM

#define ZEND_JIT_EXIT_NUM   zend_jit_traces[0].exit_count

Definition at line 25 of file zend_jit_trace.c.

◆ ZEND_JIT_TRACE_NUM

#define ZEND_JIT_TRACE_NUM   zend_jit_traces[0].id

Definition at line 24 of file zend_jit_trace.c.

◆ ZEND_JIT_TRACE_STOP_DESCRIPTION

#define ZEND_JIT_TRACE_STOP_DESCRIPTION ( name,
description )
Value:
description,

Definition at line 28 of file zend_jit_trace.c.

Typedef Documentation

◆ zend_tssa

typedef struct _zend_tssa zend_tssa

Function Documentation

◆ zend_jit_blacklist_function()

ZEND_EXT_API void zend_jit_blacklist_function ( zend_op_array * op_array)

Definition at line 7649 of file zend_jit_trace.c.

◆ zend_jit_trace_exit()

int ZEND_FASTCALL zend_jit_trace_exit ( uint32_t exit_num,
zend_jit_registers_buf * regs )

Definition at line 8560 of file zend_jit_trace.c.

◆ zend_jit_trace_hot_root()

int ZEND_FASTCALL zend_jit_trace_hot_root ( zend_execute_data * execute_data,
const zend_op * opline )

Definition at line 8020 of file zend_jit_trace.c.

◆ zend_jit_trace_hot_side()

int ZEND_FASTCALL zend_jit_trace_hot_side ( zend_execute_data * execute_data,
uint32_t parent_num,
uint32_t exit_num )

Definition at line 8390 of file zend_jit_trace.c.