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

Go to the source code of this file.

Data Structures

struct  _zend_jit_op_array_extension
 
struct  _zend_jit_op_array_hot_extension
 
union  _zend_op_trace_info
 
struct  _zend_jit_op_array_trace_extension
 
struct  _zend_jit_trace_rec
 
struct  _zend_jit_ref_snapshot
 
struct  _zend_jit_trace_exit_info
 
struct  _zend_jit_trace_stack
 
union  _zend_jit_exit_const
 
struct  _zend_jit_trace_info
 
struct  _zend_jit_trace_stack_frame
 

Macros

#define IS_CONST_ZVAL   0
 
#define IS_MEM_ZVAL   1
 
#define IS_REG   2 /* CPU register or PHP SSA variable number (for IR JIT) */
 
#define IS_REF_ZVAL   3 /* IR reference */
 
#define _ZEND_ADDR_MODE_MASK   0x3
 
#define _ZEND_ADDR_REG_SHIFT   2
 
#define _ZEND_ADDR_REG_MASK   0x3f /* no more than 64 registers */
 
#define _ZEND_ADDR_OFFSET_SHIFT   8
 
#define ZEND_ADDR_CONST_ZVAL(zv)
 
#define ZEND_ADDR_MEM_ZVAL(reg, offset)
 
#define ZEND_ADDR_REG(reg)
 
#define Z_MODE(addr)
 
#define Z_ZV(addr)
 
#define Z_OFFSET(addr)
 
#define Z_REG(addr)
 
#define ZEND_ADDR_REF_ZVAL(ref)
 
#define Z_SSA_VAR(addr)
 
#define Z_IR_REF(addr)
 
#define Z_STORE(addr)
 
#define Z_LOAD(addr)
 
#define OP_ADDR(opline, type, op)
 
#define OP_REG_ADDR(opline, ssa_op, type, op, _ssa_op)
 
#define OP1_ADDR()
 
#define OP2_ADDR()
 
#define RES_ADDR()
 
#define OP1_DATA_ADDR()
 
#define OP1_REG_ADDR()
 
#define OP2_REG_ADDR()
 
#define RES_REG_ADDR()
 
#define OP1_DATA_REG_ADDR()
 
#define OP1_DEF_REG_ADDR()
 
#define OP2_DEF_REG_ADDR()
 
#define RES_USE_REG_ADDR()
 
#define OP1_DATA_DEF_REG_ADDR()
 
#define ZEND_COUNTER_INFO(op_array)
 
#define ZEND_HOT_COUNTERS_COUNT   128
 
#define zend_jit_op_array_hash(op_array)
 
#define EXECUTE_DATA_D   zend_execute_data* execute_data
 
#define EXECUTE_DATA_C   execute_data
 
#define EXECUTE_DATA_DC   , EXECUTE_DATA_D
 
#define EXECUTE_DATA_CC   , EXECUTE_DATA_C
 
#define OPLINE_D   const zend_op* opline
 
#define OPLINE_C   opline
 
#define OPLINE_DC   , OPLINE_D
 
#define OPLINE_CC   , OPLINE_C
 
#define ZEND_OPCODE_HANDLER_RET   int
 
#define ZEND_OPCODE_HANDLER_ARGS   EXECUTE_DATA_D
 
#define ZEND_OPCODE_HANDLER_ARGS_PASSTHRU   EXECUTE_DATA_C
 
#define ZEND_OPCODE_HANDLER_ARGS_DC   EXECUTE_DATA_DC
 
#define ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC   EXECUTE_DATA_CC
 
#define ZEND_OPCODE_RETURN()
 
#define ZEND_OPCODE_TAIL_CALL(handler)
 
#define ZEND_OPCODE_TAIL_CALL_EX(handler, arg)
 
#define zend_jit_opline_hash(opline)
 
#define ZEND_JIT_TRACE_STOP(_)
 
#define ZEND_JIT_TRACE_STOP_NAME(name, description)
 
#define ZEND_JIT_TRACE_STOP_OK(ret)
 
#define ZEND_JIT_TRACE_STOP_DONE(ret)
 
#define ZEND_JIT_TRACE_STOP_REPEAT(ret)
 
#define ZEND_JIT_TRACE_STOP_MAY_RECOVER(ret)
 
#define ZEND_JIT_TRACE_START_MASK   0xf
 
#define ZEND_JIT_TRACE_START_LOOP   (1<<0)
 
#define ZEND_JIT_TRACE_START_ENTER   (1<<1)
 
#define ZEND_JIT_TRACE_START_RETURN   (1<<2)
 
#define ZEND_JIT_TRACE_START_SIDE   (1<<3) /* used for side traces */
 
#define ZEND_JIT_TRACE_JITED   (1<<4)
 
#define ZEND_JIT_TRACE_BLACKLISTED   (1<<5)
 
#define ZEND_JIT_TRACE_UNSUPPORTED   (1<<6)
 
#define ZEND_JIT_TRACE_SUPPORTED   0
 
#define ZEND_JIT_EXIT_JITED   (1<<0)
 
#define ZEND_JIT_EXIT_BLACKLISTED   (1<<1)
 
#define ZEND_JIT_EXIT_TO_VM   (1<<2) /* exit to VM without attempt to create a side trace */
 
#define ZEND_JIT_EXIT_RESTORE_CALL   (1<<3) /* deoptimizer should restore EX(call) chain */
 
#define ZEND_JIT_EXIT_POLYMORPHISM   (1<<4) /* exit because of polymorphic call */
 
#define ZEND_JIT_EXIT_FREE_OP1   (1<<5)
 
#define ZEND_JIT_EXIT_FREE_OP2   (1<<6)
 
#define ZEND_JIT_EXIT_PACKED_GUARD   (1<<7)
 
#define ZEND_JIT_EXIT_CLOSURE_CALL   (1<<8) /* exit because of polymorphic INIT_DYNAMIC_CALL call */
 
#define ZEND_JIT_EXIT_METHOD_CALL   (1<<9) /* exit because of polymorphic INIT_METHOD_CALL call */
 
#define ZEND_JIT_EXIT_INVALIDATE   (1<<10) /* invalidate current trace */
 
#define ZEND_JIT_EXIT_CHECK_EXCEPTION   (1<<11)
 
#define ZEND_JIT_EXIT_FIXED   (1U<<31) /* the exit_info can't be changed by zend_jit_snapshot_handler() */
 
#define ZEND_OP_TRACE_INFO(opline, offset)
 
#define IS_UNKNOWN   255 /* may be used for zend_jit_trace_rec.op?_type */
 
#define IS_TRACE_PACKED   (1<<4)
 
#define IS_TRACE_REFERENCE   (1<<5)
 
#define IS_TRACE_INDIRECT   (1<<6)
 
#define IS_TRACE_TYPE_MASK   0xf
 
#define ZEND_JIT_TRACE_FAKE_INIT_CALL   0x00000100
 
#define ZEND_JIT_TRACE_RETURN_VALUE_USED   0x00000100
 
#define ZEND_JIT_TRACE_MAX_SSA_VAR   0x7ffffe
 
#define ZEND_JIT_TRACE_SSA_VAR_SHIFT   9
 
#define ZEND_JIT_TRACE_FAKE_LEVEL_MASK   0xffff0000
 
#define ZEND_JIT_TRACE_FAKE_LEVEL_SHIFT   16
 
#define ZEND_JIT_TRACE_FAKE_LEVEL(info)
 
#define ZEND_JIT_TRACE_FAKE_INFO(level)
 
#define ZEND_JIT_TRACE_SET_FIRST_SSA_VAR(_info, var)
 
#define ZEND_JIT_TRACE_GET_FIRST_SSA_VAR(_info)
 
#define ZEND_JIT_TRACE_START_REC_SIZE   2
 
#define STACK_VAR(_stack, _slot)
 
#define SET_STACK_VAR(_stack, _slot, _ssa_var)
 
#define CLEAR_STACK_REF(_stack, _slot)
 
#define STACK_REF(_stack, _slot)
 
#define SET_STACK_REF(_stack, _slot, _ref)
 
#define SET_STACK_REF_EX(_stack, _slot, _ref, _flags)
 
#define STACK_INFO(_stack, _slot)
 
#define STACK_TYPE(_stack, _slot)
 
#define STACK_MEM_TYPE(_stack, _slot)
 
#define STACK_REG(_stack, _slot)
 
#define STACK_FLAGS(_stack, _slot)
 
#define SET_STACK_INFO(_stack, _slot, _info)
 
#define SET_STACK_TYPE(_stack, _slot, _type, _set_mem_type)
 
#define SET_STACK_REG(_stack, _slot, _reg)
 
#define SET_STACK_REG_EX(_stack, _slot, _reg, _flags)
 
#define RESET_STACK_MEM_TYPE(_stack, _slot)
 
#define ZEND_JIT_TRACE_CHECK_INTERRUPT   (1<<0)
 
#define ZEND_JIT_TRACE_LOOP   (1<<1)
 
#define ZEND_JIT_TRACE_USES_INITIAL_IP   (1<<2)
 
#define TRACE_FRAME_SHIFT_NUM_ARGS   16
 
#define TRACE_FRAME_MAX_NUM_ARGS   32767
 
#define TRACE_FRAME_MASK_NUM_ARGS   0xffff0000
 
#define TRACE_FRAME_MASK_NESTED   0x00000001
 
#define TRACE_FRAME_MASK_LAST_SEND_BY_REF   0x00000002
 
#define TRACE_FRAME_MASK_LAST_SEND_BY_VAL   0x00000004
 
#define TRACE_FRAME_MASK_RETURN_VALUE_USED   0x00000008
 
#define TRACE_FRAME_MASK_RETURN_VALUE_UNUSED   0x00000010
 
#define TRACE_FRAME_MASK_THIS_CHECKED   0x00000020
 
#define TRACE_FRAME_MASK_UNKNOWN_RETURN   0x00000040
 
#define TRACE_FRAME_MASK_NO_NEED_RELEASE_THIS   0x00000080
 
#define TRACE_FRAME_MASK_THIS_CLASS_CHECKED   0x00000100
 
#define TRACE_FRAME_MASK_CLOSURE_CALL   0x00000200
 
#define TRACE_FRAME_MASK_ALWAYS_RELEASE_THIS   0x00000400
 
#define TRACE_FRAME_INIT(frame, _func, _flags, num_args)
 
#define TRACE_FRAME_RETURN_SSA_VAR(frame)
 
#define TRACE_FRAME_NUM_ARGS(frame)
 
#define TRACE_FRAME_IS_NESTED(frame)
 
#define TRACE_FRAME_IS_LAST_SEND_BY_REF(frame)
 
#define TRACE_FRAME_IS_LAST_SEND_BY_VAL(frame)
 
#define TRACE_FRAME_IS_RETURN_VALUE_USED(frame)
 
#define TRACE_FRAME_IS_RETURN_VALUE_UNUSED(frame)
 
#define TRACE_FRAME_IS_THIS_CHECKED(frame)
 
#define TRACE_FRAME_IS_UNKNOWN_RETURN(frame)
 
#define TRACE_FRAME_NO_NEED_RELEASE_THIS(frame)
 
#define TRACE_FRAME_IS_THIS_CLASS_CHECKED(frame)
 
#define TRACE_FRAME_IS_CLOSURE_CALL(frame)
 
#define TRACE_FRAME_ALWAYS_RELEASE_THIS(frame)
 
#define TRACE_FRAME_SET_UNKNOWN_NUM_ARGS(frame)
 
#define TRACE_FRAME_SET_RETURN_SSA_VAR(frame, var)
 
#define TRACE_FRAME_SET_LAST_SEND_BY_REF(frame)
 
#define TRACE_FRAME_SET_LAST_SEND_BY_VAL(frame)
 
#define TRACE_FRAME_SET_LAST_SEND_UNKNOWN(frame)
 
#define TRACE_FRAME_SET_RETURN_VALUE_USED(frame)
 
#define TRACE_FRAME_SET_RETURN_VALUE_UNUSED(frame)
 
#define TRACE_FRAME_SET_THIS_CHECKED(frame)
 
#define TRACE_FRAME_SET_NO_NEED_RELEASE_THIS(frame)
 
#define TRACE_FRAME_SET_THIS_CLASS_CHECKED(frame)
 
#define TRACE_FRAME_SET_CLOSURE_CALL(frame)
 
#define TRACE_FRAME_SET_ALWAYS_RELEASE_THIS(frame)
 
#define JIT_CACHE_FLUSH(from, to)
 

Typedefs

typedef uintptr_t zend_jit_addr
 
typedef struct _zend_jit_op_array_extension zend_jit_op_array_extension
 
typedef struct _zend_jit_op_array_hot_extension zend_jit_op_array_hot_extension
 
typedef ZEND_OPCODE_HANDLER_RET(ZEND_FASTCALLzend_vm_opcode_handler_t) (ZEND_OPCODE_HANDLER_ARGS)
 
typedef enum _zend_jit_trace_stop zend_jit_trace_stop
 
typedef union _zend_op_trace_info zend_op_trace_info
 
typedef struct _zend_jit_op_array_trace_extension zend_jit_op_array_trace_extension
 
typedef enum _zend_jit_trace_op zend_jit_trace_op
 
typedef struct _zend_jit_ref_snapshot zend_jit_ref_snapshot
 
typedef struct _zend_jit_trace_exit_info zend_jit_trace_exit_info
 
typedef struct _zend_jit_trace_stack zend_jit_trace_stack
 
typedef union _zend_jit_exit_const zend_jit_exit_const
 
typedef struct _zend_jit_trace_info zend_jit_trace_info
 

Enumerations

enum  _zend_jit_trace_stop { ZEND_JIT_TRACE_HALT = 0x40 }
 
enum  _zend_jit_trace_op {
  ZEND_JIT_TRACE_VM , ZEND_JIT_TRACE_OP1_TYPE , ZEND_JIT_TRACE_OP2_TYPE , ZEND_JIT_TRACE_VAL_INFO ,
  ZEND_JIT_TRACE_INIT_CALL , ZEND_JIT_TRACE_DO_ICALL , ZEND_JIT_TRACE_ENTER , ZEND_JIT_TRACE_BACK ,
  ZEND_JIT_TRACE_END , ZEND_JIT_TRACE_START
}
 

Functions

void ZEND_FASTCALL zend_jit_hot_func (zend_execute_data *execute_data, const zend_op *opline)
 
ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_jit_leave_nested_func_helper (uint32_t call_info EXECUTE_DATA_DC)
 
ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_jit_leave_top_func_helper (uint32_t call_info EXECUTE_DATA_DC)
 
ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_jit_leave_func_helper (EXECUTE_DATA_D)
 
ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_jit_profile_helper (ZEND_OPCODE_HANDLER_ARGS)
 
ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_jit_func_counter_helper (ZEND_OPCODE_HANDLER_ARGS)
 
ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_jit_loop_counter_helper (ZEND_OPCODE_HANDLER_ARGS)
 
void ZEND_FASTCALL zend_jit_copy_extra_args_helper (EXECUTE_DATA_D)
 
void ZEND_FASTCALL zend_jit_copy_extra_args_helper_no_skip_recv (EXECUTE_DATA_D)
 
bool ZEND_FASTCALL zend_jit_deprecated_helper (OPLINE_D)
 
void ZEND_FASTCALL zend_jit_undefined_long_key (EXECUTE_DATA_D)
 
void ZEND_FASTCALL zend_jit_undefined_long_key_ex (zend_long key EXECUTE_DATA_DC)
 
void ZEND_FASTCALL zend_jit_undefined_string_key (EXECUTE_DATA_D)
 
zend_constant *ZEND_FASTCALL zend_jit_get_constant (const zval *key, uint32_t flags)
 
zend_constant *ZEND_FASTCALL zend_jit_check_constant (const zval *key)
 
ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_jit_func_trace_helper (ZEND_OPCODE_HANDLER_ARGS)
 
ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_jit_ret_trace_helper (ZEND_OPCODE_HANDLER_ARGS)
 
ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_jit_loop_trace_helper (ZEND_OPCODE_HANDLER_ARGS)
 
int ZEND_FASTCALL zend_jit_trace_hot_root (zend_execute_data *execute_data, const zend_op *opline)
 
zend_jit_trace_stop ZEND_FASTCALL zend_jit_trace_execute (zend_execute_data *execute_data, const zend_op *opline, zend_jit_trace_rec *trace_buffer, uint8_t start, uint32_t is_megamorphc, int ret_depth)
 

Variables

zend_ulong zend_jit_profile_counter
 
int zend_jit_profile_counter_rid
 
int16_t zend_jit_hot_counters [ZEND_HOT_COUNTERS_COUNT]
 
const zend_opzend_jit_halt_op
 

Macro Definition Documentation

◆ _ZEND_ADDR_MODE_MASK

#define _ZEND_ADDR_MODE_MASK   0x3

Definition at line 32 of file zend_jit_internal.h.

◆ _ZEND_ADDR_OFFSET_SHIFT

#define _ZEND_ADDR_OFFSET_SHIFT   8

Definition at line 35 of file zend_jit_internal.h.

◆ _ZEND_ADDR_REG_MASK

#define _ZEND_ADDR_REG_MASK   0x3f /* no more than 64 registers */

Definition at line 34 of file zend_jit_internal.h.

◆ _ZEND_ADDR_REG_SHIFT

#define _ZEND_ADDR_REG_SHIFT   2

Definition at line 33 of file zend_jit_internal.h.

◆ CLEAR_STACK_REF

#define CLEAR_STACK_REF ( _stack,
_slot )
Value:
do { \
(_stack)[_slot].ref = IR_UNUSED; \
(_stack)[_slot].flags = 0; \
} while (0)
#define IR_UNUSED
Definition ir.h:395

Definition at line 461 of file zend_jit_internal.h.

◆ EXECUTE_DATA_C

#define EXECUTE_DATA_C   execute_data

Definition at line 199 of file zend_jit_internal.h.

◆ EXECUTE_DATA_CC

#define EXECUTE_DATA_CC   , EXECUTE_DATA_C

Definition at line 201 of file zend_jit_internal.h.

◆ EXECUTE_DATA_D

#define EXECUTE_DATA_D   zend_execute_data* execute_data

Definition at line 198 of file zend_jit_internal.h.

◆ EXECUTE_DATA_DC

#define EXECUTE_DATA_DC   , EXECUTE_DATA_D

Definition at line 200 of file zend_jit_internal.h.

◆ IS_CONST_ZVAL

#define IS_CONST_ZVAL   0

Definition at line 27 of file zend_jit_internal.h.

◆ IS_MEM_ZVAL

#define IS_MEM_ZVAL   1

Definition at line 28 of file zend_jit_internal.h.

◆ IS_REF_ZVAL

#define IS_REF_ZVAL   3 /* IR reference */

Definition at line 30 of file zend_jit_internal.h.

◆ IS_REG

#define IS_REG   2 /* CPU register or PHP SSA variable number (for IR JIT) */

Definition at line 29 of file zend_jit_internal.h.

◆ IS_TRACE_INDIRECT

#define IS_TRACE_INDIRECT   (1<<6)

Definition at line 366 of file zend_jit_internal.h.

◆ IS_TRACE_PACKED

#define IS_TRACE_PACKED   (1<<4)

Definition at line 364 of file zend_jit_internal.h.

◆ IS_TRACE_REFERENCE

#define IS_TRACE_REFERENCE   (1<<5)

Definition at line 365 of file zend_jit_internal.h.

◆ IS_TRACE_TYPE_MASK

#define IS_TRACE_TYPE_MASK   0xf

Definition at line 368 of file zend_jit_internal.h.

◆ IS_UNKNOWN

#define IS_UNKNOWN   255 /* may be used for zend_jit_trace_rec.op?_type */

Definition at line 363 of file zend_jit_internal.h.

◆ JIT_CACHE_FLUSH

#define JIT_CACHE_FLUSH ( from,
to )

Definition at line 739 of file zend_jit_internal.h.

◆ OP1_ADDR

#define OP1_ADDR ( )
Value:
OP_ADDR(opline, op1_type, op1)
#define OP_ADDR(opline, type, op)
op1

Definition at line 85 of file zend_jit_internal.h.

◆ OP1_DATA_ADDR

#define OP1_DATA_ADDR ( )
Value:
OP_ADDR(opline + 1, op1_type, op1)

Definition at line 91 of file zend_jit_internal.h.

◆ OP1_DATA_DEF_REG_ADDR

#define OP1_DATA_DEF_REG_ADDR ( )
Value:
OP_REG_ADDR(opline + 1, ssa_op + 1, op1_type, op1, op1_def)
#define OP_REG_ADDR(opline, ssa_op, type, op, _ssa_op)

Definition at line 109 of file zend_jit_internal.h.

◆ OP1_DATA_REG_ADDR

#define OP1_DATA_REG_ADDR ( )
Value:
OP_REG_ADDR(opline + 1, ssa_op + 1, op1_type, op1, op1_use)

Definition at line 100 of file zend_jit_internal.h.

◆ OP1_DEF_REG_ADDR

#define OP1_DEF_REG_ADDR ( )
Value:
OP_REG_ADDR(opline, ssa_op, op1_type, op1, op1_def)

Definition at line 103 of file zend_jit_internal.h.

◆ OP1_REG_ADDR

#define OP1_REG_ADDR ( )
Value:
OP_REG_ADDR(opline, ssa_op, op1_type, op1, op1_use)

Definition at line 94 of file zend_jit_internal.h.

◆ OP2_ADDR

#define OP2_ADDR ( )
Value:
OP_ADDR(opline, op2_type, op2)
op2

Definition at line 87 of file zend_jit_internal.h.

◆ OP2_DEF_REG_ADDR

#define OP2_DEF_REG_ADDR ( )
Value:
OP_REG_ADDR(opline, ssa_op, op2_type, op2, op2_def)

Definition at line 105 of file zend_jit_internal.h.

◆ OP2_REG_ADDR

#define OP2_REG_ADDR ( )
Value:
OP_REG_ADDR(opline, ssa_op, op2_type, op2, op2_use)

Definition at line 96 of file zend_jit_internal.h.

◆ OP_ADDR

#define OP_ADDR ( opline,
type,
op )
Value:
(((opline)->type == IS_CONST) ? \
ZEND_ADDR_CONST_ZVAL(RT_CONSTANT(opline, (opline)->op)) : \
ZEND_ADDR_MEM_ZVAL(ZREG_FP, (opline)->op.var))
#define IS_CONST
#define RT_CONSTANT(opline, node)
#define ZEND_ADDR_MEM_ZVAL(reg, offset)

Definition at line 74 of file zend_jit_internal.h.

◆ OP_REG_ADDR

#define OP_REG_ADDR ( opline,
ssa_op,
type,
op,
_ssa_op )
Value:
((ctx.ra && (ssa_op)->_ssa_op >= 0 && ctx.ra[(ssa_op)->_ssa_op].ref) ? \
ZEND_ADDR_REG((ssa_op)->_ssa_op) : \
OP_ADDR(opline, type, op))
zend_ffi_type * type
Definition ffi.c:3812

Definition at line 80 of file zend_jit_internal.h.

◆ OPLINE_C

#define OPLINE_C   opline

Definition at line 203 of file zend_jit_internal.h.

◆ OPLINE_CC

#define OPLINE_CC   , OPLINE_C

Definition at line 205 of file zend_jit_internal.h.

◆ OPLINE_D

#define OPLINE_D   const zend_op* opline

Definition at line 202 of file zend_jit_internal.h.

◆ OPLINE_DC

#define OPLINE_DC   , OPLINE_D

Definition at line 204 of file zend_jit_internal.h.

◆ RES_ADDR

#define RES_ADDR ( )
Value:
OP_ADDR(opline, result_type, result)
bool result

Definition at line 89 of file zend_jit_internal.h.

◆ RES_REG_ADDR

#define RES_REG_ADDR ( )
Value:
OP_REG_ADDR(opline, ssa_op, result_type, result, result_def)

Definition at line 98 of file zend_jit_internal.h.

◆ RES_USE_REG_ADDR

#define RES_USE_REG_ADDR ( )
Value:
OP_REG_ADDR(opline, ssa_op, result_type, result, result_use)

Definition at line 107 of file zend_jit_internal.h.

◆ RESET_STACK_MEM_TYPE

#define RESET_STACK_MEM_TYPE ( _stack,
_slot )
Value:
do { \
(_stack)[_slot].mem_type = IS_UNKNOWN; \
} while (0)
#define IS_UNKNOWN

Definition at line 507 of file zend_jit_internal.h.

◆ SET_STACK_INFO

#define SET_STACK_INFO ( _stack,
_slot,
_info )
Value:
do { \
(_stack)[_slot].info = _info; \
} while (0)

Definition at line 486 of file zend_jit_internal.h.

◆ SET_STACK_REF

#define SET_STACK_REF ( _stack,
_slot,
_ref )
Value:
do { \
(_stack)[_slot].ref = (_ref); \
(_stack)[_slot].flags = 0; \
} while (0)

Definition at line 467 of file zend_jit_internal.h.

◆ SET_STACK_REF_EX

#define SET_STACK_REF_EX ( _stack,
_slot,
_ref,
_flags )
Value:
do { \
(_stack)[_slot].ref = (_ref); \
(_stack)[_slot].flags = _flags; \
} while (0)

Definition at line 471 of file zend_jit_internal.h.

◆ SET_STACK_REG

#define SET_STACK_REG ( _stack,
_slot,
_reg )
Value:
do { \
(_stack)[_slot].reg = _reg; \
(_stack)[_slot].flags = 0; \
} while (0)

Definition at line 499 of file zend_jit_internal.h.

◆ SET_STACK_REG_EX

#define SET_STACK_REG_EX ( _stack,
_slot,
_reg,
_flags )
Value:
do { \
(_stack)[_slot].reg = _reg; \
(_stack)[_slot].flags = _flags; \
} while (0)

Definition at line 503 of file zend_jit_internal.h.

◆ SET_STACK_TYPE

#define SET_STACK_TYPE ( _stack,
_slot,
_type,
_set_mem_type )
Value:
do { \
uint8_t __type = (_type); \
(_stack)[_slot].type = __type; \
if (_set_mem_type) { \
(_stack)[_slot].mem_type = __type; \
} \
(_stack)[_slot].reg = ZREG_NONE; \
(_stack)[_slot].flags = 0; \
CLEAR_STACK_REF(_stack, _slot); \
} while (0)
#define ZREG_NONE
Definition zend_jit.h:187

Definition at line 489 of file zend_jit_internal.h.

◆ SET_STACK_VAR

#define SET_STACK_VAR ( _stack,
_slot,
_ssa_var )
Value:
do { \
((int32_t*)(_stack))[_slot] = _ssa_var; \
} while (0)

Definition at line 457 of file zend_jit_internal.h.

◆ STACK_FLAGS

#define STACK_FLAGS ( _stack,
_slot )
Value:
(_stack)[_slot].flags

Definition at line 484 of file zend_jit_internal.h.

◆ STACK_INFO

#define STACK_INFO ( _stack,
_slot )
Value:
(_stack)[_slot].info

Definition at line 476 of file zend_jit_internal.h.

◆ STACK_MEM_TYPE

#define STACK_MEM_TYPE ( _stack,
_slot )
Value:
(_stack)[_slot].mem_type

Definition at line 480 of file zend_jit_internal.h.

◆ STACK_REF

#define STACK_REF ( _stack,
_slot )
Value:
(_stack)[_slot].ref

Definition at line 465 of file zend_jit_internal.h.

◆ STACK_REG

#define STACK_REG ( _stack,
_slot )
Value:
(_stack)[_slot].reg

Definition at line 482 of file zend_jit_internal.h.

◆ STACK_TYPE

#define STACK_TYPE ( _stack,
_slot )
Value:
(_stack)[_slot].type

Definition at line 478 of file zend_jit_internal.h.

◆ STACK_VAR

#define STACK_VAR ( _stack,
_slot )
Value:
((int32_t*)(_stack))[_slot]

Definition at line 455 of file zend_jit_internal.h.

◆ TRACE_FRAME_ALWAYS_RELEASE_THIS

#define TRACE_FRAME_ALWAYS_RELEASE_THIS ( frame)
Value:
phpdbg_frame_t frame
Definition phpdbg.h:236
#define TRACE_FRAME_MASK_ALWAYS_RELEASE_THIS

Definition at line 610 of file zend_jit_internal.h.

◆ TRACE_FRAME_INIT

#define TRACE_FRAME_INIT ( frame,
_func,
_flags,
num_args )
Value:
do { \
_frame->call = NULL; \
_frame->prev = NULL; \
_frame->func = (const zend_function*)_func; \
_frame->call_opline = NULL; \
_frame->call_level = 0; \
_frame->_info |= _flags; \
} while (0)
#define NULL
Definition gdcache.h:45
zend_jit_trace_stack_frame * prev
zend_jit_trace_stack_frame * call
uint32_t num_args
union _zend_function zend_function
struct _zend_jit_trace_stack_frame zend_jit_trace_stack_frame
Definition zend_jit.h:100
#define TRACE_FRAME_MASK_NUM_ARGS
#define TRACE_FRAME_SHIFT_NUM_ARGS

Definition at line 575 of file zend_jit_internal.h.

◆ TRACE_FRAME_IS_CLOSURE_CALL

#define TRACE_FRAME_IS_CLOSURE_CALL ( frame)
Value:
#define TRACE_FRAME_MASK_CLOSURE_CALL

Definition at line 608 of file zend_jit_internal.h.

◆ TRACE_FRAME_IS_LAST_SEND_BY_REF

#define TRACE_FRAME_IS_LAST_SEND_BY_REF ( frame)
Value:
#define TRACE_FRAME_MASK_LAST_SEND_BY_REF

Definition at line 592 of file zend_jit_internal.h.

◆ TRACE_FRAME_IS_LAST_SEND_BY_VAL

#define TRACE_FRAME_IS_LAST_SEND_BY_VAL ( frame)
Value:
#define TRACE_FRAME_MASK_LAST_SEND_BY_VAL

Definition at line 594 of file zend_jit_internal.h.

◆ TRACE_FRAME_IS_NESTED

#define TRACE_FRAME_IS_NESTED ( frame)
Value:
#define TRACE_FRAME_MASK_NESTED

Definition at line 590 of file zend_jit_internal.h.

◆ TRACE_FRAME_IS_RETURN_VALUE_UNUSED

#define TRACE_FRAME_IS_RETURN_VALUE_UNUSED ( frame)
Value:
#define TRACE_FRAME_MASK_RETURN_VALUE_UNUSED

Definition at line 598 of file zend_jit_internal.h.

◆ TRACE_FRAME_IS_RETURN_VALUE_USED

#define TRACE_FRAME_IS_RETURN_VALUE_USED ( frame)
Value:
#define TRACE_FRAME_MASK_RETURN_VALUE_USED

Definition at line 596 of file zend_jit_internal.h.

◆ TRACE_FRAME_IS_THIS_CHECKED

#define TRACE_FRAME_IS_THIS_CHECKED ( frame)
Value:
#define TRACE_FRAME_MASK_THIS_CHECKED

Definition at line 600 of file zend_jit_internal.h.

◆ TRACE_FRAME_IS_THIS_CLASS_CHECKED

#define TRACE_FRAME_IS_THIS_CLASS_CHECKED ( frame)
Value:
#define TRACE_FRAME_MASK_THIS_CLASS_CHECKED

Definition at line 606 of file zend_jit_internal.h.

◆ TRACE_FRAME_IS_UNKNOWN_RETURN

#define TRACE_FRAME_IS_UNKNOWN_RETURN ( frame)
Value:
#define TRACE_FRAME_MASK_UNKNOWN_RETURN

Definition at line 602 of file zend_jit_internal.h.

◆ TRACE_FRAME_MASK_ALWAYS_RELEASE_THIS

#define TRACE_FRAME_MASK_ALWAYS_RELEASE_THIS   0x00000400

Definition at line 572 of file zend_jit_internal.h.

◆ TRACE_FRAME_MASK_CLOSURE_CALL

#define TRACE_FRAME_MASK_CLOSURE_CALL   0x00000200

Definition at line 571 of file zend_jit_internal.h.

◆ TRACE_FRAME_MASK_LAST_SEND_BY_REF

#define TRACE_FRAME_MASK_LAST_SEND_BY_REF   0x00000002

Definition at line 563 of file zend_jit_internal.h.

◆ TRACE_FRAME_MASK_LAST_SEND_BY_VAL

#define TRACE_FRAME_MASK_LAST_SEND_BY_VAL   0x00000004

Definition at line 564 of file zend_jit_internal.h.

◆ TRACE_FRAME_MASK_NESTED

#define TRACE_FRAME_MASK_NESTED   0x00000001

Definition at line 562 of file zend_jit_internal.h.

◆ TRACE_FRAME_MASK_NO_NEED_RELEASE_THIS

#define TRACE_FRAME_MASK_NO_NEED_RELEASE_THIS   0x00000080

Definition at line 569 of file zend_jit_internal.h.

◆ TRACE_FRAME_MASK_NUM_ARGS

#define TRACE_FRAME_MASK_NUM_ARGS   0xffff0000

Definition at line 561 of file zend_jit_internal.h.

◆ TRACE_FRAME_MASK_RETURN_VALUE_UNUSED

#define TRACE_FRAME_MASK_RETURN_VALUE_UNUSED   0x00000010

Definition at line 566 of file zend_jit_internal.h.

◆ TRACE_FRAME_MASK_RETURN_VALUE_USED

#define TRACE_FRAME_MASK_RETURN_VALUE_USED   0x00000008

Definition at line 565 of file zend_jit_internal.h.

◆ TRACE_FRAME_MASK_THIS_CHECKED

#define TRACE_FRAME_MASK_THIS_CHECKED   0x00000020

Definition at line 567 of file zend_jit_internal.h.

◆ TRACE_FRAME_MASK_THIS_CLASS_CHECKED

#define TRACE_FRAME_MASK_THIS_CLASS_CHECKED   0x00000100

Definition at line 570 of file zend_jit_internal.h.

◆ TRACE_FRAME_MASK_UNKNOWN_RETURN

#define TRACE_FRAME_MASK_UNKNOWN_RETURN   0x00000040

Definition at line 568 of file zend_jit_internal.h.

◆ TRACE_FRAME_MAX_NUM_ARGS

#define TRACE_FRAME_MAX_NUM_ARGS   32767

Definition at line 559 of file zend_jit_internal.h.

◆ TRACE_FRAME_NO_NEED_RELEASE_THIS

#define TRACE_FRAME_NO_NEED_RELEASE_THIS ( frame)
Value:
#define TRACE_FRAME_MASK_NO_NEED_RELEASE_THIS

Definition at line 604 of file zend_jit_internal.h.

◆ TRACE_FRAME_NUM_ARGS

#define TRACE_FRAME_NUM_ARGS ( frame)
Value:
((int)((frame)->_info) >> TRACE_FRAME_SHIFT_NUM_ARGS)

Definition at line 588 of file zend_jit_internal.h.

◆ TRACE_FRAME_RETURN_SSA_VAR

#define TRACE_FRAME_RETURN_SSA_VAR ( frame)
Value:
((int)(frame)->_info)

Definition at line 586 of file zend_jit_internal.h.

◆ TRACE_FRAME_SET_ALWAYS_RELEASE_THIS

#define TRACE_FRAME_SET_ALWAYS_RELEASE_THIS ( frame)
Value:
do { \
} while (0)

Definition at line 651 of file zend_jit_internal.h.

◆ TRACE_FRAME_SET_CLOSURE_CALL

#define TRACE_FRAME_SET_CLOSURE_CALL ( frame)
Value:
do { \
} while (0)

Definition at line 648 of file zend_jit_internal.h.

◆ TRACE_FRAME_SET_LAST_SEND_BY_REF

#define TRACE_FRAME_SET_LAST_SEND_BY_REF ( frame)
Value:
do { \
} while (0)

Definition at line 619 of file zend_jit_internal.h.

◆ TRACE_FRAME_SET_LAST_SEND_BY_VAL

#define TRACE_FRAME_SET_LAST_SEND_BY_VAL ( frame)
Value:
do { \
} while (0)

Definition at line 623 of file zend_jit_internal.h.

◆ TRACE_FRAME_SET_LAST_SEND_UNKNOWN

#define TRACE_FRAME_SET_LAST_SEND_UNKNOWN ( frame)
Value:
do { \
} while (0)

Definition at line 627 of file zend_jit_internal.h.

◆ TRACE_FRAME_SET_NO_NEED_RELEASE_THIS

#define TRACE_FRAME_SET_NO_NEED_RELEASE_THIS ( frame)
Value:
do { \
} while (0)

Definition at line 642 of file zend_jit_internal.h.

◆ TRACE_FRAME_SET_RETURN_SSA_VAR

#define TRACE_FRAME_SET_RETURN_SSA_VAR ( frame,
var )
Value:
do { \
(frame)->_info = var; \
} while (0)

Definition at line 616 of file zend_jit_internal.h.

◆ TRACE_FRAME_SET_RETURN_VALUE_UNUSED

#define TRACE_FRAME_SET_RETURN_VALUE_UNUSED ( frame)
Value:
do { \
} while (0)

Definition at line 635 of file zend_jit_internal.h.

◆ TRACE_FRAME_SET_RETURN_VALUE_USED

#define TRACE_FRAME_SET_RETURN_VALUE_USED ( frame)
Value:
do { \
} while (0)

Definition at line 631 of file zend_jit_internal.h.

◆ TRACE_FRAME_SET_THIS_CHECKED

#define TRACE_FRAME_SET_THIS_CHECKED ( frame)
Value:
do { \
} while (0)

Definition at line 639 of file zend_jit_internal.h.

◆ TRACE_FRAME_SET_THIS_CLASS_CHECKED

#define TRACE_FRAME_SET_THIS_CLASS_CHECKED ( frame)
Value:
do { \
} while (0)

Definition at line 645 of file zend_jit_internal.h.

◆ TRACE_FRAME_SET_UNKNOWN_NUM_ARGS

#define TRACE_FRAME_SET_UNKNOWN_NUM_ARGS ( frame)
Value:
do { \
(frame)->_info |= (0xffffu << TRACE_FRAME_SHIFT_NUM_ARGS); \
} while (0)

Definition at line 613 of file zend_jit_internal.h.

◆ TRACE_FRAME_SHIFT_NUM_ARGS

#define TRACE_FRAME_SHIFT_NUM_ARGS   16

Definition at line 558 of file zend_jit_internal.h.

◆ Z_IR_REF

#define Z_IR_REF ( addr)
Value:

Definition at line 57 of file zend_jit_internal.h.

◆ Z_LOAD

#define Z_LOAD ( addr)
Value:
((jit->ra && jit->ra[Z_SSA_VAR(addr)].ref) ? \
(jit->ra[Z_SSA_VAR(addr)].flags & ZREG_LOAD) : \
0)
#define ZREG_LOAD
Definition zend_jit.h:171
#define Z_SSA_VAR(addr)

Definition at line 63 of file zend_jit_internal.h.

◆ Z_MODE

#define Z_MODE ( addr)
Value:
#define _ZEND_ADDR_MODE_MASK

Definition at line 47 of file zend_jit_internal.h.

◆ Z_OFFSET

#define Z_OFFSET ( addr)
Value:
((uint32_t)((addr)>>_ZEND_ADDR_OFFSET_SHIFT))
#define _ZEND_ADDR_OFFSET_SHIFT

Definition at line 49 of file zend_jit_internal.h.

◆ Z_REG

#define Z_REG ( addr)
Value:
#define _ZEND_ADDR_REG_MASK
int8_t zend_reg

Definition at line 50 of file zend_jit_internal.h.

◆ Z_SSA_VAR

#define Z_SSA_VAR ( addr)
Value:

Definition at line 56 of file zend_jit_internal.h.

◆ Z_STORE

#define Z_STORE ( addr)
Value:
((jit->ra && jit->ra[Z_SSA_VAR(addr)].ref) ? \
(jit->ra[Z_SSA_VAR(addr)].flags & ZREG_STORE) : \
0)
#define ZREG_STORE
Definition zend_jit.h:172

Definition at line 59 of file zend_jit_internal.h.

◆ Z_ZV

#define Z_ZV ( addr)
Value:
((zval*)(addr))
struct _zval_struct zval

Definition at line 48 of file zend_jit_internal.h.

◆ ZEND_ADDR_CONST_ZVAL

#define ZEND_ADDR_CONST_ZVAL ( zv)
Value:
(((zend_jit_addr)(uintptr_t)(zv)) | IS_CONST_ZVAL)
zval * zv
Definition ffi.c:3975
uintptr_t zend_jit_addr
#define IS_CONST_ZVAL

Definition at line 37 of file zend_jit_internal.h.

◆ ZEND_ADDR_MEM_ZVAL

#define ZEND_ADDR_MEM_ZVAL ( reg,
offset )
Value:
((((zend_jit_addr)(uintptr_t)(offset)) << _ZEND_ADDR_OFFSET_SHIFT) | \
(((zend_jit_addr)(uintptr_t)(reg)) << _ZEND_ADDR_REG_SHIFT) | \
zend_long offset
#define IS_MEM_ZVAL

Definition at line 39 of file zend_jit_internal.h.

◆ ZEND_ADDR_REF_ZVAL

#define ZEND_ADDR_REF_ZVAL ( ref)
Value:
((((zend_jit_addr)(uintptr_t)(ref)) << _ZEND_ADDR_REG_SHIFT) | \
#define IS_REF_ZVAL

Definition at line 52 of file zend_jit_internal.h.

◆ ZEND_ADDR_REG

#define ZEND_ADDR_REG ( reg)
Value:
((((zend_jit_addr)(uintptr_t)(reg)) << _ZEND_ADDR_REG_SHIFT) | \
#define IS_REG

Definition at line 43 of file zend_jit_internal.h.

◆ ZEND_COUNTER_INFO

#define ZEND_COUNTER_INFO ( op_array)
Value:
#define ZEND_OP_ARRAY_EXTENSION(op_array, handle)
int zend_jit_profile_counter_rid

Definition at line 134 of file zend_jit_internal.h.

◆ ZEND_HOT_COUNTERS_COUNT

#define ZEND_HOT_COUNTERS_COUNT   128

Definition at line 139 of file zend_jit_internal.h.

◆ ZEND_JIT_EXIT_BLACKLISTED

#define ZEND_JIT_EXIT_BLACKLISTED   (1<<1)

Definition at line 315 of file zend_jit_internal.h.

◆ ZEND_JIT_EXIT_CHECK_EXCEPTION

#define ZEND_JIT_EXIT_CHECK_EXCEPTION   (1<<11)

Definition at line 325 of file zend_jit_internal.h.

◆ ZEND_JIT_EXIT_CLOSURE_CALL

#define ZEND_JIT_EXIT_CLOSURE_CALL   (1<<8) /* exit because of polymorphic INIT_DYNAMIC_CALL call */

Definition at line 322 of file zend_jit_internal.h.

◆ ZEND_JIT_EXIT_FIXED

#define ZEND_JIT_EXIT_FIXED   (1U<<31) /* the exit_info can't be changed by zend_jit_snapshot_handler() */

Definition at line 327 of file zend_jit_internal.h.

◆ ZEND_JIT_EXIT_FREE_OP1

#define ZEND_JIT_EXIT_FREE_OP1   (1<<5)

Definition at line 319 of file zend_jit_internal.h.

◆ ZEND_JIT_EXIT_FREE_OP2

#define ZEND_JIT_EXIT_FREE_OP2   (1<<6)

Definition at line 320 of file zend_jit_internal.h.

◆ ZEND_JIT_EXIT_INVALIDATE

#define ZEND_JIT_EXIT_INVALIDATE   (1<<10) /* invalidate current trace */

Definition at line 324 of file zend_jit_internal.h.

◆ ZEND_JIT_EXIT_JITED

#define ZEND_JIT_EXIT_JITED   (1<<0)

Definition at line 314 of file zend_jit_internal.h.

◆ ZEND_JIT_EXIT_METHOD_CALL

#define ZEND_JIT_EXIT_METHOD_CALL   (1<<9) /* exit because of polymorphic INIT_METHOD_CALL call */

Definition at line 323 of file zend_jit_internal.h.

◆ ZEND_JIT_EXIT_PACKED_GUARD

#define ZEND_JIT_EXIT_PACKED_GUARD   (1<<7)

Definition at line 321 of file zend_jit_internal.h.

◆ ZEND_JIT_EXIT_POLYMORPHISM

#define ZEND_JIT_EXIT_POLYMORPHISM   (1<<4) /* exit because of polymorphic call */

Definition at line 318 of file zend_jit_internal.h.

◆ ZEND_JIT_EXIT_RESTORE_CALL

#define ZEND_JIT_EXIT_RESTORE_CALL   (1<<3) /* deoptimizer should restore EX(call) chain */

Definition at line 317 of file zend_jit_internal.h.

◆ ZEND_JIT_EXIT_TO_VM

#define ZEND_JIT_EXIT_TO_VM   (1<<2) /* exit to VM without attempt to create a side trace */

Definition at line 316 of file zend_jit_internal.h.

◆ zend_jit_op_array_hash

#define zend_jit_op_array_hash ( op_array)
Value:
zend_jit_hash((op_array)->opcodes)

Definition at line 169 of file zend_jit_internal.h.

◆ zend_jit_opline_hash

#define zend_jit_opline_hash ( opline)
Value:
zend_jit_hash(opline)

Definition at line 244 of file zend_jit_internal.h.

◆ ZEND_JIT_TRACE_BLACKLISTED

#define ZEND_JIT_TRACE_BLACKLISTED   (1<<5)

Definition at line 309 of file zend_jit_internal.h.

◆ ZEND_JIT_TRACE_CHECK_INTERRUPT

#define ZEND_JIT_TRACE_CHECK_INTERRUPT   (1<<0)

Definition at line 512 of file zend_jit_internal.h.

◆ ZEND_JIT_TRACE_FAKE_INFO

#define ZEND_JIT_TRACE_FAKE_INFO ( level)
Value:
#define ZEND_JIT_TRACE_FAKE_LEVEL_SHIFT
#define ZEND_JIT_TRACE_FAKE_INIT_CALL

Definition at line 382 of file zend_jit_internal.h.

◆ ZEND_JIT_TRACE_FAKE_INIT_CALL

#define ZEND_JIT_TRACE_FAKE_INIT_CALL   0x00000100

Definition at line 370 of file zend_jit_internal.h.

◆ ZEND_JIT_TRACE_FAKE_LEVEL

#define ZEND_JIT_TRACE_FAKE_LEVEL ( info)
Value:

Definition at line 379 of file zend_jit_internal.h.

◆ ZEND_JIT_TRACE_FAKE_LEVEL_MASK

#define ZEND_JIT_TRACE_FAKE_LEVEL_MASK   0xffff0000

Definition at line 376 of file zend_jit_internal.h.

◆ ZEND_JIT_TRACE_FAKE_LEVEL_SHIFT

#define ZEND_JIT_TRACE_FAKE_LEVEL_SHIFT   16

Definition at line 377 of file zend_jit_internal.h.

◆ ZEND_JIT_TRACE_GET_FIRST_SSA_VAR

#define ZEND_JIT_TRACE_GET_FIRST_SSA_VAR ( _info)
Value:
#define ZEND_JIT_TRACE_SSA_VAR_SHIFT

Definition at line 388 of file zend_jit_internal.h.

◆ ZEND_JIT_TRACE_JITED

#define ZEND_JIT_TRACE_JITED   (1<<4)

Definition at line 308 of file zend_jit_internal.h.

◆ ZEND_JIT_TRACE_LOOP

#define ZEND_JIT_TRACE_LOOP   (1<<1)

Definition at line 513 of file zend_jit_internal.h.

◆ ZEND_JIT_TRACE_MAX_SSA_VAR

#define ZEND_JIT_TRACE_MAX_SSA_VAR   0x7ffffe

Definition at line 373 of file zend_jit_internal.h.

◆ ZEND_JIT_TRACE_RETURN_VALUE_USED

#define ZEND_JIT_TRACE_RETURN_VALUE_USED   0x00000100

Definition at line 371 of file zend_jit_internal.h.

◆ ZEND_JIT_TRACE_SET_FIRST_SSA_VAR

#define ZEND_JIT_TRACE_SET_FIRST_SSA_VAR ( _info,
var )
Value:
do { \
_info |= (var << ZEND_JIT_TRACE_SSA_VAR_SHIFT); \
} while (0)

Definition at line 385 of file zend_jit_internal.h.

◆ ZEND_JIT_TRACE_SSA_VAR_SHIFT

#define ZEND_JIT_TRACE_SSA_VAR_SHIFT   9

Definition at line 374 of file zend_jit_internal.h.

◆ ZEND_JIT_TRACE_START_ENTER

#define ZEND_JIT_TRACE_START_ENTER   (1<<1)

Definition at line 304 of file zend_jit_internal.h.

◆ ZEND_JIT_TRACE_START_LOOP

#define ZEND_JIT_TRACE_START_LOOP   (1<<0)

Definition at line 303 of file zend_jit_internal.h.

◆ ZEND_JIT_TRACE_START_MASK

#define ZEND_JIT_TRACE_START_MASK   0xf

Definition at line 301 of file zend_jit_internal.h.

◆ ZEND_JIT_TRACE_START_REC_SIZE

#define ZEND_JIT_TRACE_START_REC_SIZE   2

Definition at line 422 of file zend_jit_internal.h.

◆ ZEND_JIT_TRACE_START_RETURN

#define ZEND_JIT_TRACE_START_RETURN   (1<<2)

Definition at line 305 of file zend_jit_internal.h.

◆ ZEND_JIT_TRACE_START_SIDE

#define ZEND_JIT_TRACE_START_SIDE   (1<<3) /* used for side traces */

Definition at line 306 of file zend_jit_internal.h.

◆ ZEND_JIT_TRACE_STOP

#define ZEND_JIT_TRACE_STOP ( _)

Definition at line 247 of file zend_jit_internal.h.

◆ ZEND_JIT_TRACE_STOP_DONE

#define ZEND_JIT_TRACE_STOP_DONE ( ret)
Value:
(ret < ZEND_JIT_TRACE_STOP_ERROR)
zval * ret

Definition at line 292 of file zend_jit_internal.h.

◆ ZEND_JIT_TRACE_STOP_MAY_RECOVER

#define ZEND_JIT_TRACE_STOP_MAY_RECOVER ( ret)
Value:
(ret <= ZEND_JIT_TRACE_STOP_COMPILER_ERROR)

Definition at line 298 of file zend_jit_internal.h.

◆ ZEND_JIT_TRACE_STOP_NAME

#define ZEND_JIT_TRACE_STOP_NAME ( name,
description )
Value:
ZEND_JIT_TRACE_STOP_ ## name,
zend_string * name

Definition at line 281 of file zend_jit_internal.h.

◆ ZEND_JIT_TRACE_STOP_OK

#define ZEND_JIT_TRACE_STOP_OK ( ret)
Value:
(ret < ZEND_JIT_TRACE_STOP_COMPILED)

Definition at line 289 of file zend_jit_internal.h.

◆ ZEND_JIT_TRACE_STOP_REPEAT

#define ZEND_JIT_TRACE_STOP_REPEAT ( ret)
Value:
(ret == ZEND_JIT_TRACE_STOP_INNER_LOOP)

Definition at line 295 of file zend_jit_internal.h.

◆ ZEND_JIT_TRACE_SUPPORTED

#define ZEND_JIT_TRACE_SUPPORTED   0

Definition at line 312 of file zend_jit_internal.h.

◆ ZEND_JIT_TRACE_UNSUPPORTED

#define ZEND_JIT_TRACE_UNSUPPORTED   (1<<6)

Definition at line 310 of file zend_jit_internal.h.

◆ ZEND_JIT_TRACE_USES_INITIAL_IP

#define ZEND_JIT_TRACE_USES_INITIAL_IP   (1<<2)

Definition at line 514 of file zend_jit_internal.h.

◆ ZEND_OP_TRACE_INFO

#define ZEND_OP_TRACE_INFO ( opline,
offset )
Value:
((zend_op_trace_info*)(((char*)opline) + offset))
union _zend_op_trace_info zend_op_trace_info

Definition at line 346 of file zend_jit_internal.h.

◆ ZEND_OPCODE_HANDLER_ARGS

#define ZEND_OPCODE_HANDLER_ARGS   EXECUTE_DATA_D

Definition at line 207 of file zend_jit_internal.h.

◆ ZEND_OPCODE_HANDLER_ARGS_DC

#define ZEND_OPCODE_HANDLER_ARGS_DC   EXECUTE_DATA_DC

Definition at line 209 of file zend_jit_internal.h.

◆ ZEND_OPCODE_HANDLER_ARGS_PASSTHRU

#define ZEND_OPCODE_HANDLER_ARGS_PASSTHRU   EXECUTE_DATA_C

Definition at line 208 of file zend_jit_internal.h.

◆ ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC

#define ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC   EXECUTE_DATA_CC

Definition at line 210 of file zend_jit_internal.h.

◆ ZEND_OPCODE_HANDLER_RET

#define ZEND_OPCODE_HANDLER_RET   int

Definition at line 206 of file zend_jit_internal.h.

◆ ZEND_OPCODE_RETURN

#define ZEND_OPCODE_RETURN ( )
Value:
return 0

Definition at line 211 of file zend_jit_internal.h.

◆ ZEND_OPCODE_TAIL_CALL

#define ZEND_OPCODE_TAIL_CALL ( handler)
Value:
do { \
} while(0)
fbc internal_function handler(call, ret)
#define ZEND_OPCODE_HANDLER_ARGS_PASSTHRU

Definition at line 212 of file zend_jit_internal.h.

◆ ZEND_OPCODE_TAIL_CALL_EX

#define ZEND_OPCODE_TAIL_CALL_EX ( handler,
arg )
Value:
do { \
} while(0)
zval * arg
Definition ffi.c:3975
#define ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC

Definition at line 215 of file zend_jit_internal.h.

Typedef Documentation

◆ zend_jit_addr

typedef uintptr_t zend_jit_addr

Definition at line 25 of file zend_jit_internal.h.

◆ zend_jit_exit_const

◆ zend_jit_op_array_extension

◆ zend_jit_op_array_hot_extension

◆ zend_jit_op_array_trace_extension

◆ zend_jit_ref_snapshot

◆ zend_jit_trace_exit_info

◆ zend_jit_trace_info

◆ zend_jit_trace_op

◆ zend_jit_trace_stack

◆ zend_jit_trace_stop

◆ zend_op_trace_info

◆ zend_vm_opcode_handler_t

typedef ZEND_OPCODE_HANDLER_RET(ZEND_FASTCALL * zend_vm_opcode_handler_t) (ZEND_OPCODE_HANDLER_ARGS)

Definition at line 221 of file zend_jit_internal.h.

Enumeration Type Documentation

◆ _zend_jit_trace_op

Enumerator
ZEND_JIT_TRACE_VM 
ZEND_JIT_TRACE_OP1_TYPE 
ZEND_JIT_TRACE_OP2_TYPE 
ZEND_JIT_TRACE_VAL_INFO 
ZEND_JIT_TRACE_INIT_CALL 
ZEND_JIT_TRACE_DO_ICALL 
ZEND_JIT_TRACE_ENTER 
ZEND_JIT_TRACE_BACK 
ZEND_JIT_TRACE_END 
ZEND_JIT_TRACE_START 

Definition at line 350 of file zend_jit_internal.h.

◆ _zend_jit_trace_stop

Enumerator
ZEND_JIT_TRACE_HALT 

Definition at line 284 of file zend_jit_internal.h.

Function Documentation

◆ zend_jit_check_constant()

zend_constant *ZEND_FASTCALL zend_jit_check_constant ( const zval * key)

Definition at line 353 of file zend_jit_vm_helpers.c.

◆ zend_jit_copy_extra_args_helper()

void ZEND_FASTCALL zend_jit_copy_extra_args_helper ( EXECUTE_DATA_D )

Definition at line 169 of file zend_jit_vm_helpers.c.

◆ zend_jit_copy_extra_args_helper_no_skip_recv()

void ZEND_FASTCALL zend_jit_copy_extra_args_helper_no_skip_recv ( EXECUTE_DATA_D )

Definition at line 174 of file zend_jit_vm_helpers.c.

◆ zend_jit_deprecated_helper()

bool ZEND_FASTCALL zend_jit_deprecated_helper ( OPLINE_D )

Definition at line 179 of file zend_jit_vm_helpers.c.

◆ zend_jit_func_counter_helper()

Definition at line 263 of file zend_jit_vm_helpers.c.

◆ zend_jit_func_trace_helper()

Definition at line 392 of file zend_jit_vm_helpers.c.

◆ zend_jit_get_constant()

zend_constant *ZEND_FASTCALL zend_jit_get_constant ( const zval * key,
uint32_t flags )

Definition at line 348 of file zend_jit_vm_helpers.c.

◆ zend_jit_hot_func()

void ZEND_FASTCALL zend_jit_hot_func ( zend_execute_data * execute_data,
const zend_op * opline )

◆ zend_jit_leave_func_helper()

ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_jit_leave_func_helper ( EXECUTE_DATA_D )

Definition at line 112 of file zend_jit_vm_helpers.c.

◆ zend_jit_leave_nested_func_helper()

ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_jit_leave_nested_func_helper ( uint32_t call_info EXECUTE_DATA_DC)

Definition at line 49 of file zend_jit_vm_helpers.c.

◆ zend_jit_leave_top_func_helper()

ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_jit_leave_top_func_helper ( uint32_t call_info EXECUTE_DATA_DC)

Definition at line 90 of file zend_jit_vm_helpers.c.

◆ zend_jit_loop_counter_helper()

Definition at line 283 of file zend_jit_vm_helpers.c.

◆ zend_jit_loop_trace_helper()

Definition at line 404 of file zend_jit_vm_helpers.c.

◆ zend_jit_profile_helper()

Definition at line 253 of file zend_jit_vm_helpers.c.

◆ zend_jit_ret_trace_helper()

Definition at line 398 of file zend_jit_vm_helpers.c.

◆ zend_jit_trace_execute()

zend_jit_trace_stop ZEND_FASTCALL zend_jit_trace_execute ( zend_execute_data * execute_data,
const zend_op * opline,
zend_jit_trace_rec * trace_buffer,
uint8_t start,
uint32_t is_megamorphc,
int ret_depth )

Definition at line 603 of file zend_jit_vm_helpers.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_undefined_long_key()

void ZEND_FASTCALL zend_jit_undefined_long_key ( EXECUTE_DATA_D )

Definition at line 207 of file zend_jit_vm_helpers.c.

◆ zend_jit_undefined_long_key_ex()

void ZEND_FASTCALL zend_jit_undefined_long_key_ex ( zend_long key EXECUTE_DATA_DC)

Definition at line 223 of file zend_jit_vm_helpers.c.

◆ zend_jit_undefined_string_key()

void ZEND_FASTCALL zend_jit_undefined_string_key ( EXECUTE_DATA_D )

Definition at line 232 of file zend_jit_vm_helpers.c.

Variable Documentation

◆ zend_jit_halt_op

const zend_op* zend_jit_halt_op
extern

◆ zend_jit_hot_counters

int16_t zend_jit_hot_counters[ZEND_HOT_COUNTERS_COUNT]
extern

◆ zend_jit_profile_counter

zend_ulong zend_jit_profile_counter
extern

◆ zend_jit_profile_counter_rid

int zend_jit_profile_counter_rid
extern