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

Go to the source code of this file.

Macros

#define SPEC_START_MASK   0x0000ffff
 
#define SPEC_EXTRA_MASK   0xfffc0000
 
#define SPEC_RULE_OP1   0x00010000
 
#define SPEC_RULE_OP2   0x00020000
 
#define SPEC_RULE_OP_DATA   0x00040000
 
#define SPEC_RULE_RETVAL   0x00080000
 
#define SPEC_RULE_QUICK_ARG   0x00100000
 
#define SPEC_RULE_SMART_BRANCH   0x00200000
 
#define SPEC_RULE_COMMUTATIVE   0x00800000
 
#define SPEC_RULE_ISSET   0x01000000
 
#define SPEC_RULE_OBSERVER   0x02000000
 
#define VM_TRACE(op)
 
#define VM_TRACE_OP_END(op)
 
#define VM_TRACE_START()
 
#define VM_TRACE_END()
 
#define HYBRID_JIT_GUARD()
 
#define HYBRID_NEXT()
 
#define HYBRID_SWITCH()
 
#define HYBRID_CASE(op)
 
#define HYBRID_BREAK()
 
#define HYBRID_DEFAULT   ZEND_NULL_LABEL
 
#define ZEND_OPCODE_HANDLER_ARGS   zend_execute_data *execute_data
 
#define ZEND_OPCODE_HANDLER_ARGS_PASSTHRU   execute_data
 
#define ZEND_OPCODE_HANDLER_ARGS_DC   , ZEND_OPCODE_HANDLER_ARGS
 
#define ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC   , ZEND_OPCODE_HANDLER_ARGS_PASSTHRU
 
#define ZEND_OPCODE_HANDLER_RET   int
 
#define ZEND_VM_TAIL_CALL(call)
 
#define ZEND_VM_CONTINUE()
 
#define ZEND_VM_RETURN()
 
#define ZEND_VM_HOT
 
#define ZEND_VM_COLD   ZEND_COLD ZEND_OPT_SIZE
 
#define DCL_OPLINE
 
#define OPLINE   EX(opline)
 
#define USE_OPLINE   const zend_op *opline = EX(opline);
 
#define LOAD_OPLINE()
 
#define LOAD_OPLINE_EX()
 
#define LOAD_NEXT_OPLINE()
 
#define SAVE_OPLINE()
 
#define SAVE_OPLINE_EX()
 
#define HANDLE_EXCEPTION()
 
#define HANDLE_EXCEPTION_LEAVE()
 
#define ZEND_VM_ENTER_EX()
 
#define ZEND_VM_ENTER()
 
#define ZEND_VM_LEAVE()
 
#define ZEND_VM_INTERRUPT()
 
#define ZEND_VM_LOOP_INTERRUPT()
 
#define ZEND_VM_DISPATCH(opcode, opline)
 
#define ZEND_VM_TAIL_CALL(call)
 
#define ZEND_VM_CONTINUE()
 
#define ZEND_VM_RETURN()
 

Typedefs

typedef ZEND_OPCODE_HANDLER_RET(ZEND_FASTCALLopcode_handler_t) (ZEND_OPCODE_HANDLER_ARGS)
 

Functions

ZEND_API void execute_ex (zend_execute_data *ex)
 
ZEND_API void zend_execute (zend_op_array *op_array, zval *return_value)
 
void zend_vm_init (void)
 
void zend_vm_dtor (void)
 
ZEND_API void ZEND_FASTCALL zend_serialize_opcode_handler (zend_op *op)
 
ZEND_API void ZEND_FASTCALL zend_deserialize_opcode_handler (zend_op *op)
 
ZEND_API const void *ZEND_FASTCALL zend_get_opcode_handler_func (const zend_op *op)
 
ZEND_API const zend_opzend_get_halt_op (void)
 
ZEND_API int zend_vm_kind (void)
 
ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler (zend_op *op)
 
ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler_ex (zend_op *op, uint32_t op1_info, uint32_t op2_info, uint32_t res_info)
 
ZEND_API int ZEND_FASTCALL zend_vm_call_opcode_handler (zend_execute_data *ex)
 

Macro Definition Documentation

◆ DCL_OPLINE

#define DCL_OPLINE

Definition at line 407 of file zend_vm_execute.h.

◆ HANDLE_EXCEPTION

#define HANDLE_EXCEPTION ( )
Value:
bool exception
Definition assert.c:30
#define EG(v)
#define ZEND_ASSERT(c)
#define LOAD_OPLINE()
#define ZEND_VM_CONTINUE()

Definition at line 425 of file zend_vm_execute.h.

◆ HANDLE_EXCEPTION_LEAVE

#define HANDLE_EXCEPTION_LEAVE ( )
Value:

Definition at line 426 of file zend_vm_execute.h.

◆ HYBRID_BREAK

#define HYBRID_BREAK ( )
Value:
#define HYBRID_NEXT()

Definition at line 363 of file zend_vm_execute.h.

◆ HYBRID_CASE

#define HYBRID_CASE ( op)
Value:
op ## _LABEL

Definition at line 362 of file zend_vm_execute.h.

◆ HYBRID_DEFAULT

#define HYBRID_DEFAULT   ZEND_NULL_LABEL

Definition at line 364 of file zend_vm_execute.h.

◆ HYBRID_JIT_GUARD

#define HYBRID_JIT_GUARD ( )

Definition at line 358 of file zend_vm_execute.h.

◆ HYBRID_NEXT

#define HYBRID_NEXT ( )
Value:
HYBRID_JIT_GUARD(); goto *(void**)(OPLINE->handler)
#define OPLINE
#define HYBRID_JIT_GUARD()

Definition at line 360 of file zend_vm_execute.h.

◆ HYBRID_SWITCH

#define HYBRID_SWITCH ( )
Value:

Definition at line 361 of file zend_vm_execute.h.

◆ LOAD_NEXT_OPLINE

#define LOAD_NEXT_OPLINE ( )
Value:
#define ZEND_VM_INC_OPCODE()

Definition at line 421 of file zend_vm_execute.h.

◆ LOAD_OPLINE

#define LOAD_OPLINE ( )

Definition at line 419 of file zend_vm_execute.h.

◆ LOAD_OPLINE_EX

#define LOAD_OPLINE_EX ( )

Definition at line 420 of file zend_vm_execute.h.

◆ OPLINE

#define OPLINE   EX(opline)

Definition at line 417 of file zend_vm_execute.h.

◆ SAVE_OPLINE

SAVE_OPLINE ( )
Value:
{
struct _zval_struct zval
op2
op1
#define USE_OPLINE

Definition at line 422 of file zend_vm_execute.h.

◆ SAVE_OPLINE_EX

#define SAVE_OPLINE_EX ( )

Definition at line 423 of file zend_vm_execute.h.

◆ SPEC_EXTRA_MASK

#define SPEC_EXTRA_MASK   0xfffc0000

Definition at line 310 of file zend_vm_execute.h.

◆ SPEC_RULE_COMMUTATIVE

#define SPEC_RULE_COMMUTATIVE   0x00800000

Definition at line 317 of file zend_vm_execute.h.

◆ SPEC_RULE_ISSET

#define SPEC_RULE_ISSET   0x01000000

Definition at line 318 of file zend_vm_execute.h.

◆ SPEC_RULE_OBSERVER

#define SPEC_RULE_OBSERVER   0x02000000

Definition at line 319 of file zend_vm_execute.h.

◆ SPEC_RULE_OP1

#define SPEC_RULE_OP1   0x00010000

Definition at line 311 of file zend_vm_execute.h.

◆ SPEC_RULE_OP2

#define SPEC_RULE_OP2   0x00020000

Definition at line 312 of file zend_vm_execute.h.

◆ SPEC_RULE_OP_DATA

#define SPEC_RULE_OP_DATA   0x00040000

Definition at line 313 of file zend_vm_execute.h.

◆ SPEC_RULE_QUICK_ARG

#define SPEC_RULE_QUICK_ARG   0x00100000

Definition at line 315 of file zend_vm_execute.h.

◆ SPEC_RULE_RETVAL

#define SPEC_RULE_RETVAL   0x00080000

Definition at line 314 of file zend_vm_execute.h.

◆ SPEC_RULE_SMART_BRANCH

#define SPEC_RULE_SMART_BRANCH   0x00200000

Definition at line 316 of file zend_vm_execute.h.

◆ SPEC_START_MASK

#define SPEC_START_MASK   0x0000ffff

Definition at line 309 of file zend_vm_execute.h.

◆ USE_OPLINE

#define USE_OPLINE   const zend_op *opline = EX(opline);

Definition at line 418 of file zend_vm_execute.h.

◆ VM_TRACE

#define VM_TRACE ( op)

Definition at line 339 of file zend_vm_execute.h.

◆ VM_TRACE_END

#define VM_TRACE_END ( )

Definition at line 348 of file zend_vm_execute.h.

◆ VM_TRACE_OP_END

#define VM_TRACE_OP_END ( op)

Definition at line 342 of file zend_vm_execute.h.

◆ VM_TRACE_START

#define VM_TRACE_START ( )

Definition at line 345 of file zend_vm_execute.h.

◆ ZEND_OPCODE_HANDLER_ARGS

#define ZEND_OPCODE_HANDLER_ARGS   zend_execute_data *execute_data

Definition at line 373 of file zend_vm_execute.h.

◆ ZEND_OPCODE_HANDLER_ARGS_DC

#define ZEND_OPCODE_HANDLER_ARGS_DC   , ZEND_OPCODE_HANDLER_ARGS

Definition at line 375 of file zend_vm_execute.h.

◆ ZEND_OPCODE_HANDLER_ARGS_PASSTHRU

#define ZEND_OPCODE_HANDLER_ARGS_PASSTHRU   execute_data

Definition at line 374 of file zend_vm_execute.h.

◆ ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC

#define ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC   , ZEND_OPCODE_HANDLER_ARGS_PASSTHRU

Definition at line 376 of file zend_vm_execute.h.

◆ ZEND_OPCODE_HANDLER_RET

#define ZEND_OPCODE_HANDLER_RET   int

Definition at line 397 of file zend_vm_execute.h.

◆ ZEND_VM_COLD

#define ZEND_VM_COLD   ZEND_COLD ZEND_OPT_SIZE

Definition at line 402 of file zend_vm_execute.h.

◆ ZEND_VM_CONTINUE [1/2]

ZEND_VM_CONTINUE ( )
Value:
return 0

Definition at line 399 of file zend_vm_execute.h.

◆ ZEND_VM_CONTINUE [2/2]

#define ZEND_VM_CONTINUE ( )
Value:

Definition at line 399 of file zend_vm_execute.h.

◆ ZEND_VM_DISPATCH

#define ZEND_VM_DISPATCH ( opcode,
opline )
Value:
ZEND_VM_TAIL_CALL(((opcode_handler_t)zend_vm_get_opcode_handler_func(opcode, opline))(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
ZEND_OPCODE_HANDLER_RET(ZEND_FASTCALL * opcode_handler_t)(ZEND_OPCODE_HANDLER_ARGS)
#define ZEND_OPCODE_HANDLER_ARGS_PASSTHRU
#define ZEND_VM_TAIL_CALL(call)

Definition at line 442 of file zend_vm_execute.h.

◆ ZEND_VM_ENTER

#define ZEND_VM_ENTER ( )
Value:
return 1

Definition at line 437 of file zend_vm_execute.h.

◆ ZEND_VM_ENTER_EX

#define ZEND_VM_ENTER_EX ( )
Value:
return 1

Definition at line 436 of file zend_vm_execute.h.

◆ ZEND_VM_HOT

#define ZEND_VM_HOT

Definition at line 401 of file zend_vm_execute.h.

◆ ZEND_VM_INTERRUPT

#define ZEND_VM_INTERRUPT ( )
Value:

Definition at line 440 of file zend_vm_execute.h.

◆ ZEND_VM_LEAVE

#define ZEND_VM_LEAVE ( )
Value:
return 2

Definition at line 438 of file zend_vm_execute.h.

◆ ZEND_VM_LOOP_INTERRUPT

#define ZEND_VM_LOOP_INTERRUPT ( )
Value:
zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);

Definition at line 441 of file zend_vm_execute.h.

◆ ZEND_VM_RETURN [1/2]

#define ZEND_VM_RETURN ( )
Value:
return -1

Definition at line 400 of file zend_vm_execute.h.

◆ ZEND_VM_RETURN [2/2]

#define ZEND_VM_RETURN ( )
Value:
goto HYBRID_HALT_LABEL

Definition at line 400 of file zend_vm_execute.h.

◆ ZEND_VM_TAIL_CALL [1/2]

#define ZEND_VM_TAIL_CALL ( call)
Value:
return call
zend_execute_data * call

Definition at line 398 of file zend_vm_execute.h.

◆ ZEND_VM_TAIL_CALL [2/2]

#define ZEND_VM_TAIL_CALL ( call)
Value:

Definition at line 398 of file zend_vm_execute.h.

Typedef Documentation

◆ opcode_handler_t

Definition at line 405 of file zend_vm_execute.h.

Function Documentation

◆ execute_ex()

ZEND_API void execute_ex ( zend_execute_data * ex)

Definition at line 55053 of file zend_vm_execute.h.

◆ zend_deserialize_opcode_handler()

ZEND_API void ZEND_FASTCALL zend_deserialize_opcode_handler ( zend_op * op)

Definition at line 68072 of file zend_vm_execute.h.

◆ zend_execute()

ZEND_API void zend_execute ( zend_op_array * op_array,
zval * return_value )

Definition at line 64239 of file zend_vm_execute.h.

◆ zend_get_halt_op()

ZEND_API const zend_op * zend_get_halt_op ( void )

Definition at line 68095 of file zend_vm_execute.h.

◆ zend_get_opcode_handler_func()

ZEND_API const void *ZEND_FASTCALL zend_get_opcode_handler_func ( const zend_op * op)

Definition at line 68077 of file zend_vm_execute.h.

◆ zend_serialize_opcode_handler()

ZEND_API void ZEND_FASTCALL zend_serialize_opcode_handler ( zend_op * op)

Definition at line 68060 of file zend_vm_execute.h.

◆ zend_vm_call_opcode_handler()

ZEND_API int ZEND_FASTCALL zend_vm_call_opcode_handler ( zend_execute_data * ex)

Definition at line 68458 of file zend_vm_execute.h.

◆ zend_vm_dtor()

void zend_vm_dtor ( void )

Definition at line 68035 of file zend_vm_execute.h.

◆ zend_vm_init()

void zend_vm_init ( void )

Definition at line 64272 of file zend_vm_execute.h.

◆ zend_vm_kind()

ZEND_API int zend_vm_kind ( void )

Definition at line 68104 of file zend_vm_execute.h.

◆ zend_vm_set_opcode_handler()

ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler ( zend_op * op)

Definition at line 68170 of file zend_vm_execute.h.

◆ zend_vm_set_opcode_handler_ex()

ZEND_API void ZEND_FASTCALL zend_vm_set_opcode_handler_ex ( zend_op * op,
uint32_t op1_info,
uint32_t op2_info,
uint32_t res_info )

Definition at line 68182 of file zend_vm_execute.h.