php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
zend_execute.h File Reference
#include "zend_compile.h"
#include "zend_hash.h"
#include "zend_operators.h"
#include "zend_variables.h"
#include <stdint.h>

Go to the source code of this file.

Data Structures

struct  _zend_vm_stack
 

Macros

#define ZEND_REF_TYPE_SOURCES(ref)
 
#define ZEND_REF_HAS_TYPE_SOURCES(ref)
 
#define ZEND_REF_FIRST_SOURCE(ref)
 
#define ZEND_VM_STACK_HEADER_SLOTS    ((sizeof(struct _zend_vm_stack) + sizeof(zval) - 1) / sizeof(zval))
 
#define ZEND_VM_STACK_ELEMENTS(stack)
 
#define ZEND_ASSERT_VM_STACK(stack)
 
#define ZEND_ASSERT_VM_STACK_GLOBAL
 
#define ZEND_USER_OPCODE_CONTINUE   0 /* execute next opcode */
 
#define ZEND_USER_OPCODE_RETURN   1 /* exit from executor (return from function) */
 
#define ZEND_USER_OPCODE_DISPATCH   2 /* call original opcode handler */
 
#define ZEND_USER_OPCODE_ENTER   3 /* enter into new op_array without recursion */
 
#define ZEND_USER_OPCODE_LEAVE   4 /* return to calling op_array within the same executor */
 
#define ZEND_USER_OPCODE_DISPATCH_TO   0x100 /* call original handler of returned opcode */
 
#define CACHE_ADDR(num)
 
#define CACHED_PTR(num)
 
#define CACHE_PTR(num, ptr)
 
#define CACHED_POLYMORPHIC_PTR(num, ce)
 
#define CACHE_POLYMORPHIC_PTR(num, ce, ptr)
 
#define CACHED_PTR_EX(slot)
 
#define CACHE_PTR_EX(slot, ptr)
 
#define CACHED_POLYMORPHIC_PTR_EX(slot, ce)
 
#define CACHE_POLYMORPHIC_PTR_EX(slot, ce, ptr)
 
#define CACHE_SPECIAL   (1<<0)
 
#define IS_SPECIAL_CACHE_VAL(ptr)
 
#define ENCODE_SPECIAL_CACHE_NUM(num)
 
#define DECODE_SPECIAL_CACHE_NUM(ptr)
 
#define ENCODE_SPECIAL_CACHE_PTR(ptr)
 
#define DECODE_SPECIAL_CACHE_PTR(ptr)
 
#define SKIP_EXT_OPLINE(opline)
 
#define ZEND_CLASS_HAS_TYPE_HINTS(ce)
 
#define ZEND_CLASS_HAS_READONLY_PROPS(ce)
 
#define ZEND_REF_ADD_TYPE_SOURCE(ref, source)
 
#define ZEND_REF_DEL_TYPE_SOURCE(ref, source)
 
#define ZEND_REF_FOREACH_TYPE_SOURCES(ref, prop)
 
#define ZEND_REF_FOREACH_TYPE_SOURCES_END()
 

Enumerations

enum  zend_verify_prop_assignable_by_ref_context { ZEND_VERIFY_PROP_ASSIGNABLE_BY_REF_CONTEXT_ASSIGNMENT , ZEND_VERIFY_PROP_ASSIGNABLE_BY_REF_CONTEXT_MAGIC_GET }
 

Functions

void init_executor (void)
 
void shutdown_executor (void)
 
void shutdown_destructors (void)
 
ZEND_API void zend_shutdown_executor_values (bool fast_shutdown)
 
ZEND_API void zend_init_execute_data (zend_execute_data *execute_data, zend_op_array *op_array, zval *return_value)
 
ZEND_API void zend_init_func_execute_data (zend_execute_data *execute_data, zend_op_array *op_array, zval *return_value)
 
ZEND_API void zend_init_code_execute_data (zend_execute_data *execute_data, zend_op_array *op_array, zval *return_value)
 
ZEND_API void zend_execute (zend_op_array *op_array, zval *return_value)
 
ZEND_API void execute_ex (zend_execute_data *execute_data)
 
ZEND_API void execute_internal (zend_execute_data *execute_data, zval *return_value)
 
ZEND_API bool zend_is_valid_class_name (zend_string *name)
 
ZEND_API zend_class_entryzend_lookup_class (zend_string *name)
 
ZEND_API zend_class_entryzend_lookup_class_ex (zend_string *name, zend_string *lcname, uint32_t flags)
 
ZEND_API zend_class_entryzend_get_called_scope (zend_execute_data *ex)
 
ZEND_API zend_objectzend_get_this_object (zend_execute_data *ex)
 
ZEND_API zend_result zend_eval_string (const char *str, zval *retval_ptr, const char *string_name)
 
ZEND_API zend_result zend_eval_stringl (const char *str, size_t str_len, zval *retval_ptr, const char *string_name)
 
ZEND_API zend_result zend_eval_string_ex (const char *str, zval *retval_ptr, const char *string_name, bool handle_exceptions)
 
ZEND_API zend_result zend_eval_stringl_ex (const char *str, size_t str_len, zval *retval_ptr, const char *string_name, bool handle_exceptions)
 
ZEND_API ZEND_COLD void ZEND_FASTCALL zend_missing_arg_error (zend_execute_data *execute_data)
 
ZEND_API ZEND_COLD void ZEND_FASTCALL zend_deprecated_function (const zend_function *fbc)
 
ZEND_API ZEND_COLD void ZEND_FASTCALL zend_deprecated_class_constant (const zend_class_constant *c, const zend_string *constant_name)
 
ZEND_API ZEND_COLD void ZEND_FASTCALL zend_false_to_array_deprecated (void)
 
ZEND_COLD void ZEND_FASTCALL zend_param_must_be_ref (const zend_function *func, uint32_t arg_num)
 
ZEND_API ZEND_COLD void ZEND_FASTCALL zend_use_resource_as_offset (const zval *dim)
 
ZEND_API zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_call_stack_size_error (void)
 
ZEND_API bool ZEND_FASTCALL zend_verify_ref_assignable_zval (zend_reference *ref, zval *zv, bool strict)
 
ZEND_API bool ZEND_FASTCALL zend_verify_prop_assignable_by_ref_ex (const zend_property_info *prop_info, zval *orig_val, bool strict, zend_verify_prop_assignable_by_ref_context context)
 
ZEND_API bool ZEND_FASTCALL zend_verify_prop_assignable_by_ref (const zend_property_info *prop_info, zval *orig_val, bool strict)
 
ZEND_API ZEND_COLD void zend_throw_ref_type_error_zval (const zend_property_info *prop, const zval *zv)
 
ZEND_API ZEND_COLD void zend_throw_ref_type_error_type (const zend_property_info *prop1, const zend_property_info *prop2, const zval *zv)
 
ZEND_API ZEND_COLD zval *ZEND_FASTCALL zend_undefined_offset_write (HashTable *ht, zend_long lval)
 
ZEND_API ZEND_COLD zval *ZEND_FASTCALL zend_undefined_index_write (HashTable *ht, zend_string *offset)
 
ZEND_API ZEND_COLD void zend_wrong_string_offset_error (void)
 
ZEND_API ZEND_COLD void ZEND_FASTCALL zend_readonly_property_modification_error (const zend_property_info *info)
 
ZEND_API ZEND_COLD void ZEND_FASTCALL zend_readonly_property_modification_error_ex (const char *class_name, const char *prop_name)
 
ZEND_API ZEND_COLD void ZEND_FASTCALL zend_readonly_property_indirect_modification_error (const zend_property_info *info)
 
ZEND_API ZEND_COLD void ZEND_FASTCALL zend_invalid_class_constant_type_error (uint8_t type)
 
ZEND_API ZEND_COLD void ZEND_FASTCALL zend_object_released_while_assigning_to_property_error (const zend_property_info *info)
 
ZEND_API ZEND_COLD void ZEND_FASTCALL zend_cannot_add_element (void)
 
ZEND_API bool ZEND_FASTCALL zend_asymmetric_property_has_set_access (const zend_property_info *prop_info)
 
ZEND_API ZEND_COLD void ZEND_FASTCALL zend_asymmetric_visibility_property_modification_error (const zend_property_info *info, const char *operation)
 
ZEND_API bool zend_verify_scalar_type_hint (uint32_t type_mask, zval *arg, bool strict, bool is_internal_arg)
 
ZEND_API ZEND_COLD void zend_verify_arg_error (const zend_function *zf, const zend_arg_info *arg_info, uint32_t arg_num, zval *value)
 
ZEND_API ZEND_COLD void zend_verify_return_error (const zend_function *zf, zval *value)
 
ZEND_API ZEND_COLD void zend_verify_never_error (const zend_function *zf)
 
ZEND_API bool zend_verify_ref_array_assignable (zend_reference *ref)
 
ZEND_API bool zend_check_user_type_slow (zend_type *type, zval *arg, zend_reference *ref, void **cache_slot, bool is_return_type)
 
ZEND_API void ZEND_FASTCALL zend_ref_add_type_source (zend_property_info_source_list *source_list, zend_property_info *prop)
 
ZEND_API void ZEND_FASTCALL zend_ref_del_type_source (zend_property_info_source_list *source_list, const zend_property_info *prop)
 
ZEND_API zvalzend_assign_to_typed_ref (zval *variable_ptr, zval *value, uint8_t value_type, bool strict)
 
ZEND_API zvalzend_assign_to_typed_ref_ex (zval *variable_ptr, zval *value, uint8_t value_type, bool strict, zend_refcounted **garbage_ptr)
 
ZEND_API zend_result ZEND_FASTCALL zval_update_constant (zval *pp)
 
ZEND_API zend_result ZEND_FASTCALL zval_update_constant_ex (zval *pp, zend_class_entry *scope)
 
ZEND_API zend_result ZEND_FASTCALL zval_update_constant_with_ctx (zval *pp, zend_class_entry *scope, zend_ast_evaluate_ctx *ctx)
 
 ZEND_STATIC_ASSERT (ZEND_MM_ALIGNED_SIZE(sizeof(zval))==sizeof(zval), "zval must be aligned by ZEND_MM_ALIGNMENT")
 
ZEND_API void zend_vm_stack_init (void)
 
ZEND_API void zend_vm_stack_init_ex (size_t page_size)
 
ZEND_API void zend_vm_stack_destroy (void)
 
ZEND_API voidzend_vm_stack_extend (size_t size)
 
zend_execute_datazend_vm_stack_copy_call_frame (zend_execute_data *call, uint32_t passed_args, uint32_t additional_args)
 
ZEND_API void ZEND_FASTCALL zend_free_extra_named_params (zend_array *extra_named_params)
 
ZEND_API const char * get_active_class_name (const char **space)
 
ZEND_API const char * get_active_function_name (void)
 
ZEND_API const char * get_active_function_arg_name (uint32_t arg_num)
 
ZEND_API const char * get_function_arg_name (const zend_function *func, uint32_t arg_num)
 
ZEND_API zend_functionzend_active_function_ex (zend_execute_data *execute_data)
 
ZEND_API zend_stringget_active_function_or_method_name (void)
 
ZEND_API zend_stringget_function_or_method_name (const zend_function *func)
 
ZEND_API const char * zend_get_executed_filename (void)
 
ZEND_API zend_stringzend_get_executed_filename_ex (void)
 
ZEND_API uint32_t zend_get_executed_lineno (void)
 
ZEND_API zend_class_entryzend_get_executed_scope (void)
 
ZEND_API bool zend_is_executing (void)
 
ZEND_API ZEND_COLD void ZEND_FASTCALL zend_cannot_pass_by_reference (uint32_t arg_num)
 
ZEND_API void zend_set_timeout (zend_long seconds, bool reset_signals)
 
ZEND_API void zend_unset_timeout (void)
 
ZEND_API ZEND_NORETURN void ZEND_FASTCALL zend_timeout (void)
 
ZEND_API zend_class_entryzend_fetch_class (zend_string *class_name, uint32_t fetch_type)
 
ZEND_API zend_class_entryzend_fetch_class_with_scope (zend_string *class_name, uint32_t fetch_type, zend_class_entry *scope)
 
ZEND_API zend_class_entryzend_fetch_class_by_name (zend_string *class_name, zend_string *lcname, uint32_t fetch_type)
 
ZEND_API zend_function *ZEND_FASTCALL zend_fetch_function (zend_string *name)
 
ZEND_API zend_function *ZEND_FASTCALL zend_fetch_function_str (const char *name, size_t len)
 
ZEND_API void ZEND_FASTCALL zend_init_func_run_time_cache (zend_op_array *op_array)
 
ZEND_API void zend_fetch_dimension_const (zval *result, zval *container, zval *dim, int type)
 
ZEND_API zvalzend_get_compiled_variable_value (const zend_execute_data *execute_data_ptr, uint32_t var)
 
ZEND_API bool zend_gcc_global_regs (void)
 
ZEND_API zend_result zend_set_user_opcode_handler (uint8_t opcode, user_opcode_handler_t handler)
 
ZEND_API user_opcode_handler_t zend_get_user_opcode_handler (uint8_t opcode)
 
ZEND_API zvalzend_get_zval_ptr (const zend_op *opline, int op_type, const znode_op *node, const zend_execute_data *execute_data)
 
ZEND_API void zend_clean_and_cache_symbol_table (zend_array *symbol_table)
 
ZEND_API void ZEND_FASTCALL zend_free_compiled_variables (zend_execute_data *execute_data)
 
ZEND_API void zend_unfinished_calls_gc (zend_execute_data *execute_data, zend_execute_data *call, uint32_t op_num, zend_get_gc_buffer *buf)
 
ZEND_API void zend_cleanup_unfinished_execution (zend_execute_data *execute_data, uint32_t op_num, uint32_t catch_op_num)
 
ZEND_API ZEND_ATTRIBUTE_DEPRECATED HashTablezend_unfinished_execution_gc (zend_execute_data *execute_data, zend_execute_data *call, zend_get_gc_buffer *gc_buffer)
 
ZEND_API HashTablezend_unfinished_execution_gc_ex (zend_execute_data *execute_data, zend_execute_data *call, zend_get_gc_buffer *gc_buffer, bool suspended_by_yield)
 
ZEND_API void zend_frameless_observed_call (zend_execute_data *execute_data)
 
zval *ZEND_FASTCALL zend_handle_named_arg (zend_execute_data **call_ptr, zend_string *arg_name, uint32_t *arg_num_ptr, void **cache_slot)
 
ZEND_API zend_result ZEND_FASTCALL zend_handle_undef_args (zend_execute_data *call)
 
ZEND_API bool zend_verify_class_constant_type (zend_class_constant *c, const zend_string *name, zval *constant)
 
ZEND_COLD void zend_verify_class_constant_type_error (const zend_class_constant *c, const zend_string *name, const zval *constant)
 
ZEND_API bool zend_verify_property_type (const zend_property_info *info, zval *property, bool strict)
 
ZEND_COLD void zend_verify_property_type_error (const zend_property_info *info, const zval *property)
 
ZEND_COLD void zend_magic_get_property_type_inconsistency_error (const zend_property_info *info, const zval *property)
 
ZEND_COLD void zend_match_unhandled_error (const zval *value)
 
ZEND_API ZEND_COLD void ZEND_FASTCALL zend_fcall_interrupt (zend_execute_data *call)
 

Variables

ZEND_API void(* zend_execute_ex )(zend_execute_data *execute_data)
 
ZEND_API void(* zend_execute_internal )(zend_execute_data *execute_data, zval *return_value)
 
ZEND_API zend_class_entry *(* zend_autoload )(zend_string *name, zend_string *lc_name)
 
ZEND_API const zend_internal_function zend_pass_function
 

Macro Definition Documentation

◆ CACHE_ADDR

#define CACHE_ADDR ( num)
Value:
((void**)((char*)EX(run_time_cache) + (num)))
#define EX(element)

Definition at line 446 of file zend_execute.h.

◆ CACHE_POLYMORPHIC_PTR

#define CACHE_POLYMORPHIC_PTR ( num,
ce,
ptr )
Value:
do { \
void **slot = (void**)((char*)EX(run_time_cache) + (num)); \
slot[0] = (ce); \
slot[1] = (ptr); \
} while (0)
void * ptr
Definition ffi.c:3814

Definition at line 461 of file zend_execute.h.

◆ CACHE_POLYMORPHIC_PTR_EX

#define CACHE_POLYMORPHIC_PTR_EX ( slot,
ce,
ptr )
Value:
do { \
(slot)[0] = (ce); \
(slot)[1] = (ptr); \
} while (0)

Definition at line 477 of file zend_execute.h.

◆ CACHE_PTR

#define CACHE_PTR ( num,
ptr )
Value:
do { \
((void**)((char*)EX(run_time_cache) + (num)))[0] = (ptr); \
} while (0)

Definition at line 452 of file zend_execute.h.

◆ CACHE_PTR_EX

#define CACHE_PTR_EX ( slot,
ptr )
Value:
do { \
(slot)[0] = (ptr); \
} while (0)

Definition at line 470 of file zend_execute.h.

◆ CACHE_SPECIAL

#define CACHE_SPECIAL   (1<<0)

Definition at line 482 of file zend_execute.h.

◆ CACHED_POLYMORPHIC_PTR

#define CACHED_POLYMORPHIC_PTR ( num,
ce )
Value:
(EXPECTED(((void**)((char*)EX(run_time_cache) + (num)))[0] == (void*)(ce)) ? \
((void**)((char*)EX(run_time_cache) + (num)))[1] : \
#define NULL
Definition gdcache.h:45
#define EXPECTED(condition)

Definition at line 456 of file zend_execute.h.

◆ CACHED_POLYMORPHIC_PTR_EX

#define CACHED_POLYMORPHIC_PTR_EX ( slot,
ce )
Value:
(EXPECTED((slot)[0] == (ce)) ? (slot)[1] : NULL)

Definition at line 474 of file zend_execute.h.

◆ CACHED_PTR

#define CACHED_PTR ( num)
Value:
((void**)((char*)EX(run_time_cache) + (num)))[0]

Definition at line 449 of file zend_execute.h.

◆ CACHED_PTR_EX

#define CACHED_PTR_EX ( slot)
Value:
(slot)[0]

Definition at line 467 of file zend_execute.h.

◆ DECODE_SPECIAL_CACHE_NUM

#define DECODE_SPECIAL_CACHE_NUM ( ptr)
Value:
(((uintptr_t)(ptr)) >> 1)

Definition at line 490 of file zend_execute.h.

◆ DECODE_SPECIAL_CACHE_PTR

#define DECODE_SPECIAL_CACHE_PTR ( ptr)
Value:
((void*)(((uintptr_t)(ptr)) & ~CACHE_SPECIAL))
#define CACHE_SPECIAL

Definition at line 496 of file zend_execute.h.

◆ ENCODE_SPECIAL_CACHE_NUM

#define ENCODE_SPECIAL_CACHE_NUM ( num)
Value:
((void*)((((uintptr_t)(num)) << 1) | CACHE_SPECIAL))

Definition at line 487 of file zend_execute.h.

◆ ENCODE_SPECIAL_CACHE_PTR

#define ENCODE_SPECIAL_CACHE_PTR ( ptr)
Value:
((void*)(((uintptr_t)(ptr)) | CACHE_SPECIAL))

Definition at line 493 of file zend_execute.h.

◆ IS_SPECIAL_CACHE_VAL

#define IS_SPECIAL_CACHE_VAL ( ptr)
Value:
(((uintptr_t)(ptr)) & CACHE_SPECIAL)

Definition at line 484 of file zend_execute.h.

◆ SKIP_EXT_OPLINE

#define SKIP_EXT_OPLINE ( opline)
Value:
do { \
while (UNEXPECTED((opline)->opcode >= ZEND_EXT_STMT \
&& (opline)->opcode <= ZEND_TICKS)) { \
(opline)--; \
} \
} while (0)
#define UNEXPECTED(condition)
#define ZEND_TICKS
#define ZEND_EXT_STMT

Definition at line 499 of file zend_execute.h.

◆ ZEND_ASSERT_VM_STACK

#define ZEND_ASSERT_VM_STACK ( stack)

Definition at line 242 of file zend_execute.h.

◆ ZEND_ASSERT_VM_STACK_GLOBAL

#define ZEND_ASSERT_VM_STACK_GLOBAL

Definition at line 243 of file zend_execute.h.

◆ ZEND_CLASS_HAS_READONLY_PROPS

#define ZEND_CLASS_HAS_READONLY_PROPS ( ce)
Value:
#define ZEND_ACC_HAS_READONLY_PROPS

Definition at line 507 of file zend_execute.h.

◆ ZEND_CLASS_HAS_TYPE_HINTS

#define ZEND_CLASS_HAS_TYPE_HINTS ( ce)
Value:
#define ZEND_ACC_HAS_TYPE_HINTS

Definition at line 506 of file zend_execute.h.

◆ ZEND_REF_ADD_TYPE_SOURCE

#define ZEND_REF_ADD_TYPE_SOURCE ( ref,
source )
Value:
ZEND_API void ZEND_FASTCALL zend_ref_add_type_source(zend_property_info_source_list *source_list, zend_property_info *prop)
#define ZEND_REF_TYPE_SOURCES(ref)

Definition at line 517 of file zend_execute.h.

◆ ZEND_REF_DEL_TYPE_SOURCE

#define ZEND_REF_DEL_TYPE_SOURCE ( ref,
source )
Value:
ZEND_API void ZEND_FASTCALL zend_ref_del_type_source(zend_property_info_source_list *source_list, const zend_property_info *prop)

Definition at line 520 of file zend_execute.h.

◆ ZEND_REF_FIRST_SOURCE

#define ZEND_REF_FIRST_SOURCE ( ref)
Value:
(ZEND_PROPERTY_INFO_SOURCE_IS_LIST((ref)->sources.list) \
? ZEND_PROPERTY_INFO_SOURCE_TO_LIST((ref)->sources.list)->ptr[0] \
: (ref)->sources.ptr)
#define ZEND_PROPERTY_INFO_SOURCE_TO_LIST(list)
Definition zend_types.h:585
#define ZEND_PROPERTY_INFO_SOURCE_IS_LIST(list)
Definition zend_types.h:586

Definition at line 122 of file zend_execute.h.

◆ ZEND_REF_FOREACH_TYPE_SOURCES

#define ZEND_REF_FOREACH_TYPE_SOURCES ( ref,
prop )
Value:
do { \
zend_property_info **_prop, **_end; \
if (_source_list->ptr) { \
if (ZEND_PROPERTY_INFO_SOURCE_IS_LIST(_source_list->list)) { \
_list = ZEND_PROPERTY_INFO_SOURCE_TO_LIST(_source_list->list); \
_prop = _list->ptr; \
_end = _list->ptr + _list->num; \
} else { \
_prop = &_source_list->ptr; \
_end = _prop + 1; \
} \
for (; _prop < _end; _prop++) { \
prop = *_prop; \
struct _zend_property_info * ptr[1]
Definition zend_types.h:576
struct _zend_property_info * ptr
Definition zend_types.h:580
struct _zend_property_info zend_property_info

Definition at line 523 of file zend_execute.h.

◆ ZEND_REF_FOREACH_TYPE_SOURCES_END

#define ZEND_REF_FOREACH_TYPE_SOURCES_END ( )
Value:
} \
} \
} while (0)

Definition at line 539 of file zend_execute.h.

◆ ZEND_REF_HAS_TYPE_SOURCES

#define ZEND_REF_HAS_TYPE_SOURCES ( ref)
Value:

Definition at line 119 of file zend_execute.h.

◆ ZEND_REF_TYPE_SOURCES

#define ZEND_REF_TYPE_SOURCES ( ref)
Value:
(ref)->sources

Definition at line 116 of file zend_execute.h.

◆ ZEND_USER_OPCODE_CONTINUE

#define ZEND_USER_OPCODE_CONTINUE   0 /* execute next opcode */

Definition at line 419 of file zend_execute.h.

◆ ZEND_USER_OPCODE_DISPATCH

#define ZEND_USER_OPCODE_DISPATCH   2 /* call original opcode handler */

Definition at line 421 of file zend_execute.h.

◆ ZEND_USER_OPCODE_DISPATCH_TO

#define ZEND_USER_OPCODE_DISPATCH_TO   0x100 /* call original handler of returned opcode */

Definition at line 425 of file zend_execute.h.

◆ ZEND_USER_OPCODE_ENTER

#define ZEND_USER_OPCODE_ENTER   3 /* enter into new op_array without recursion */

Definition at line 422 of file zend_execute.h.

◆ ZEND_USER_OPCODE_LEAVE

#define ZEND_USER_OPCODE_LEAVE   4 /* return to calling op_array within the same executor */

Definition at line 423 of file zend_execute.h.

◆ ZEND_USER_OPCODE_RETURN

#define ZEND_USER_OPCODE_RETURN   1 /* exit from executor (return from function) */

Definition at line 420 of file zend_execute.h.

◆ ZEND_VM_STACK_ELEMENTS

#define ZEND_VM_STACK_ELEMENTS ( stack)
Value:
struct _zval_struct zval
#define ZEND_VM_STACK_HEADER_SLOTS

Definition at line 228 of file zend_execute.h.

◆ ZEND_VM_STACK_HEADER_SLOTS

#define ZEND_VM_STACK_HEADER_SLOTS    ((sizeof(struct _zend_vm_stack) + sizeof(zval) - 1) / sizeof(zval))

Definition at line 225 of file zend_execute.h.

Enumeration Type Documentation

◆ zend_verify_prop_assignable_by_ref_context

Enumerator
ZEND_VERIFY_PROP_ASSIGNABLE_BY_REF_CONTEXT_ASSIGNMENT 
ZEND_VERIFY_PROP_ASSIGNABLE_BY_REF_CONTEXT_MAGIC_GET 

Definition at line 73 of file zend_execute.h.

Function Documentation

◆ execute_ex()

ZEND_API void execute_ex ( zend_execute_data * execute_data)

Definition at line 55053 of file zend_vm_execute.h.

◆ execute_internal()

ZEND_API void execute_internal ( zend_execute_data * execute_data,
zval * return_value )

Definition at line 4044 of file zend_execute.c.

◆ get_active_class_name()

ZEND_API const char * get_active_class_name ( const char ** space)

Definition at line 524 of file zend_execute_API.c.

◆ get_active_function_arg_name()

ZEND_API const char * get_active_function_arg_name ( uint32_t arg_num)

Definition at line 620 of file zend_execute_API.c.

◆ get_active_function_name()

ZEND_API const char * get_active_function_name ( void )

Definition at line 557 of file zend_execute_API.c.

◆ get_active_function_or_method_name()

ZEND_API zend_string * get_active_function_or_method_name ( void )

Definition at line 602 of file zend_execute_API.c.

◆ get_function_arg_name()

ZEND_API const char * get_function_arg_name ( const zend_function * func,
uint32_t arg_num )

Definition at line 632 of file zend_execute_API.c.

◆ get_function_or_method_name()

ZEND_API zend_string * get_function_or_method_name ( const zend_function * func)

Definition at line 610 of file zend_execute_API.c.

◆ init_executor()

void init_executor ( void )

Definition at line 132 of file zend_execute_API.c.

◆ shutdown_destructors()

void shutdown_destructors ( void )

Definition at line 253 of file zend_execute_API.c.

◆ shutdown_executor()

void shutdown_executor ( void )

Definition at line 428 of file zend_execute_API.c.

◆ zend_active_function_ex()

ZEND_API zend_function * zend_active_function_ex ( zend_execute_data * execute_data)

Definition at line 587 of file zend_execute_API.c.

◆ zend_assign_to_typed_ref()

ZEND_API zval * zend_assign_to_typed_ref ( zval * variable_ptr,
zval * value,
uint8_t value_type,
bool strict )

Definition at line 3853 of file zend_execute.c.

◆ zend_assign_to_typed_ref_ex()

ZEND_API zval * zend_assign_to_typed_ref_ex ( zval * variable_ptr,
zval * value,
uint8_t value_type,
bool strict,
zend_refcounted ** garbage_ptr )

Definition at line 3818 of file zend_execute.c.

◆ zend_asymmetric_property_has_set_access()

ZEND_API bool ZEND_FASTCALL zend_asymmetric_property_has_set_access ( const zend_property_info * prop_info)

Definition at line 580 of file zend_object_handlers.c.

◆ zend_asymmetric_visibility_property_modification_error()

ZEND_API ZEND_COLD void ZEND_FASTCALL zend_asymmetric_visibility_property_modification_error ( const zend_property_info * info,
const char * operation )

Definition at line 921 of file zend_execute.c.

◆ zend_call_stack_size_error()

ZEND_API zend_never_inline ZEND_COLD void ZEND_FASTCALL zend_call_stack_size_error ( void )

◆ zend_cannot_add_element()

ZEND_API ZEND_COLD void ZEND_FASTCALL zend_cannot_add_element ( void )

Definition at line 2488 of file zend_execute.c.

◆ zend_cannot_pass_by_reference()

ZEND_API ZEND_COLD void ZEND_FASTCALL zend_cannot_pass_by_reference ( uint32_t arg_num)

Definition at line 599 of file zend_execute.c.

◆ zend_check_user_type_slow()

ZEND_API bool zend_check_user_type_slow ( zend_type * type,
zval * arg,
zend_reference * ref,
void ** cache_slot,
bool is_return_type )

Definition at line 1251 of file zend_execute.c.

◆ zend_clean_and_cache_symbol_table()

ZEND_API void zend_clean_and_cache_symbol_table ( zend_array * symbol_table)

Definition at line 4049 of file zend_execute.c.

◆ zend_cleanup_unfinished_execution()

ZEND_API void zend_cleanup_unfinished_execution ( zend_execute_data * execute_data,
uint32_t op_num,
uint32_t catch_op_num )

Definition at line 4747 of file zend_execute.c.

◆ zend_deprecated_class_constant()

ZEND_API ZEND_COLD void ZEND_FASTCALL zend_deprecated_class_constant ( const zend_class_constant * c,
const zend_string * constant_name )

Definition at line 1908 of file zend_execute.c.

◆ zend_deprecated_function()

ZEND_API ZEND_COLD void ZEND_FASTCALL zend_deprecated_function ( const zend_function * fbc)

Definition at line 1882 of file zend_execute.c.

◆ zend_eval_string()

ZEND_API zend_result zend_eval_string ( const char * str,
zval * retval_ptr,
const char * string_name )

Definition at line 1387 of file zend_execute_API.c.

◆ zend_eval_string_ex()

ZEND_API zend_result zend_eval_string_ex ( const char * str,
zval * retval_ptr,
const char * string_name,
bool handle_exceptions )

Definition at line 1405 of file zend_execute_API.c.

◆ zend_eval_stringl()

ZEND_API zend_result zend_eval_stringl ( const char * str,
size_t str_len,
zval * retval_ptr,
const char * string_name )

Definition at line 1325 of file zend_execute_API.c.

◆ zend_eval_stringl_ex()

ZEND_API zend_result zend_eval_stringl_ex ( const char * str,
size_t str_len,
zval * retval_ptr,
const char * string_name,
bool handle_exceptions )

Definition at line 1393 of file zend_execute_API.c.

◆ 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_false_to_array_deprecated()

ZEND_API ZEND_COLD void ZEND_FASTCALL zend_false_to_array_deprecated ( void )

Definition at line 1929 of file zend_execute.c.

◆ zend_fcall_interrupt()

ZEND_API ZEND_COLD void ZEND_FASTCALL zend_fcall_interrupt ( zend_execute_data * call)

Definition at line 4081 of file zend_execute.c.

◆ zend_fetch_class()

ZEND_API zend_class_entry * zend_fetch_class ( zend_string * class_name,
uint32_t fetch_type )

Definition at line 1700 of file zend_execute_API.c.

◆ zend_fetch_class_by_name()

ZEND_API zend_class_entry * zend_fetch_class_by_name ( zend_string * class_name,
zend_string * lcname,
uint32_t fetch_type )

Definition at line 1781 of file zend_execute_API.c.

◆ zend_fetch_class_with_scope()

ZEND_API zend_class_entry * zend_fetch_class_with_scope ( zend_string * class_name,
uint32_t fetch_type,
zend_class_entry * scope )

Definition at line 1748 of file zend_execute_API.c.

◆ zend_fetch_dimension_const()

ZEND_API void zend_fetch_dimension_const ( zval * result,
zval * container,
zval * dim,
int type )

Definition at line 3098 of file zend_execute.c.

◆ zend_fetch_function()

ZEND_API zend_function *ZEND_FASTCALL zend_fetch_function ( zend_string * name)

Definition at line 4252 of file zend_execute.c.

◆ zend_fetch_function_str()

ZEND_API zend_function *ZEND_FASTCALL zend_fetch_function_str ( const char * name,
size_t len )

Definition at line 4267 of file zend_execute.c.

◆ zend_frameless_observed_call()

ZEND_API void zend_frameless_observed_call ( zend_execute_data * execute_data)

Definition at line 1594 of file zend_execute.c.

◆ zend_free_compiled_variables()

ZEND_API void ZEND_FASTCALL zend_free_compiled_variables ( zend_execute_data * execute_data)

Definition at line 4075 of file zend_execute.c.

◆ zend_free_extra_named_params()

ZEND_API void ZEND_FASTCALL zend_free_extra_named_params ( zend_array * extra_named_params)

Definition at line 5474 of file zend_execute.c.

◆ zend_gcc_global_regs()

ZEND_API bool zend_gcc_global_regs ( void )

Definition at line 242 of file zend_execute.c.

◆ zend_get_called_scope()

ZEND_API zend_class_entry * zend_get_called_scope ( zend_execute_data * ex)

Definition at line 1291 of file zend_execute_API.c.

◆ zend_get_compiled_variable_value()

ZEND_API zval * zend_get_compiled_variable_value ( const zend_execute_data * execute_data_ptr,
uint32_t var )

Definition at line 237 of file zend_execute.c.

◆ zend_get_executed_filename()

ZEND_API const char * zend_get_executed_filename ( void )

Definition at line 646 of file zend_execute_API.c.

◆ zend_get_executed_filename_ex()

ZEND_API zend_string * zend_get_executed_filename_ex ( void )

Definition at line 653 of file zend_execute_API.c.

◆ zend_get_executed_lineno()

ZEND_API uint32_t zend_get_executed_lineno ( void )

Definition at line 673 of file zend_execute_API.c.

◆ zend_get_executed_scope()

ZEND_API zend_class_entry * zend_get_executed_scope ( void )

Definition at line 701 of file zend_execute_API.c.

◆ zend_get_this_object()

ZEND_API zend_object * zend_get_this_object ( zend_execute_data * ex)

Definition at line 1309 of file zend_execute_API.c.

◆ zend_get_user_opcode_handler()

ZEND_API user_opcode_handler_t zend_get_user_opcode_handler ( uint8_t opcode)

◆ zend_get_zval_ptr()

ZEND_API zval * zend_get_zval_ptr ( const zend_op * opline,
int op_type,
const znode_op * node,
const zend_execute_data * execute_data )

Definition at line 5705 of file zend_execute.c.

◆ zend_handle_named_arg()

zval *ZEND_FASTCALL zend_handle_named_arg ( zend_execute_data ** call_ptr,
zend_string * arg_name,
uint32_t * arg_num_ptr,
void ** cache_slot )

Definition at line 5290 of file zend_execute.c.

◆ zend_handle_undef_args()

ZEND_API zend_result ZEND_FASTCALL zend_handle_undef_args ( zend_execute_data * call)

Definition at line 5369 of file zend_execute.c.

◆ zend_init_code_execute_data()

ZEND_API void zend_init_code_execute_data ( zend_execute_data * execute_data,
zend_op_array * op_array,
zval * return_value )

Definition at line 4345 of file zend_execute.c.

◆ zend_init_execute_data()

ZEND_API void zend_init_execute_data ( zend_execute_data * execute_data,
zend_op_array * op_array,
zval * return_value )

Definition at line 4352 of file zend_execute.c.

◆ zend_init_func_execute_data()

ZEND_API void zend_init_func_execute_data ( zend_execute_data * execute_data,
zend_op_array * op_array,
zval * return_value )

Definition at line 4315 of file zend_execute.c.

◆ zend_init_func_run_time_cache()

ZEND_API void ZEND_FASTCALL zend_init_func_run_time_cache ( zend_op_array * op_array)

Definition at line 4282 of file zend_execute.c.

◆ zend_invalid_class_constant_type_error()

ZEND_API ZEND_COLD void ZEND_FASTCALL zend_invalid_class_constant_type_error ( uint8_t type)

Definition at line 910 of file zend_execute.c.

◆ zend_is_executing()

ZEND_API bool zend_is_executing ( void )

Definition at line 716 of file zend_execute_API.c.

◆ zend_is_valid_class_name()

ZEND_API bool zend_is_valid_class_name ( zend_string * name)

Definition at line 1151 of file zend_execute_API.c.

◆ zend_lookup_class()

ZEND_API zend_class_entry * zend_lookup_class ( zend_string * name)

Definition at line 1285 of file zend_execute_API.c.

◆ zend_lookup_class_ex()

ZEND_API zend_class_entry * zend_lookup_class_ex ( zend_string * name,
zend_string * lcname,
uint32_t flags )

Definition at line 1161 of file zend_execute_API.c.

◆ zend_magic_get_property_type_inconsistency_error()

ZEND_COLD void zend_magic_get_property_type_inconsistency_error ( const zend_property_info * info,
const zval * property )

Definition at line 858 of file zend_execute.c.

◆ zend_match_unhandled_error()

ZEND_COLD void zend_match_unhandled_error ( const zval * value)

Definition at line 875 of file zend_execute.c.

◆ zend_missing_arg_error()

ZEND_API ZEND_COLD void ZEND_FASTCALL zend_missing_arg_error ( zend_execute_data * execute_data)

Definition at line 1413 of file zend_execute.c.

◆ zend_object_released_while_assigning_to_property_error()

ZEND_API ZEND_COLD void ZEND_FASTCALL zend_object_released_while_assigning_to_property_error ( const zend_property_info * info)

Definition at line 915 of file zend_execute.c.

◆ zend_param_must_be_ref()

ZEND_COLD void ZEND_FASTCALL zend_param_must_be_ref ( const zend_function * func,
uint32_t arg_num )

Definition at line 2468 of file zend_execute.c.

◆ zend_readonly_property_indirect_modification_error()

ZEND_API ZEND_COLD void ZEND_FASTCALL zend_readonly_property_indirect_modification_error ( const zend_property_info * info)

Definition at line 904 of file zend_execute.c.

◆ zend_readonly_property_modification_error()

ZEND_API ZEND_COLD void ZEND_FASTCALL zend_readonly_property_modification_error ( const zend_property_info * info)

Definition at line 893 of file zend_execute.c.

◆ zend_readonly_property_modification_error_ex()

ZEND_API ZEND_COLD void ZEND_FASTCALL zend_readonly_property_modification_error_ex ( const char * class_name,
const char * prop_name )

Definition at line 899 of file zend_execute.c.

◆ zend_ref_add_type_source()

ZEND_API void ZEND_FASTCALL zend_ref_add_type_source ( zend_property_info_source_list * source_list,
zend_property_info * prop )

Definition at line 3908 of file zend_execute.c.

◆ zend_ref_del_type_source()

ZEND_API void ZEND_FASTCALL zend_ref_del_type_source ( zend_property_info_source_list * source_list,
const zend_property_info * prop )

Definition at line 3931 of file zend_execute.c.

◆ zend_set_timeout()

ZEND_API void zend_set_timeout ( zend_long seconds,
bool reset_signals )

Definition at line 1638 of file zend_execute_API.c.

◆ zend_set_user_opcode_handler()

ZEND_API zend_result zend_set_user_opcode_handler ( uint8_t opcode,
user_opcode_handler_t handler )

◆ zend_shutdown_executor_values()

ZEND_API void zend_shutdown_executor_values ( bool fast_shutdown)

Definition at line 273 of file zend_execute_API.c.

◆ ZEND_STATIC_ASSERT()

ZEND_STATIC_ASSERT ( ZEND_MM_ALIGNED_SIZE(sizeof(zval)) = =sizeof(zval),
"zval must be aligned by ZEND_MM_ALIGNMENT"  )

◆ zend_throw_ref_type_error_type()

ZEND_API ZEND_COLD void zend_throw_ref_type_error_type ( const zend_property_info * prop1,
const zend_property_info * prop2,
const zval * zv )

Definition at line 3658 of file zend_execute.c.

◆ zend_throw_ref_type_error_zval()

ZEND_API ZEND_COLD void zend_throw_ref_type_error_zval ( const zend_property_info * prop,
const zval * zv )

Definition at line 3674 of file zend_execute.c.

◆ zend_timeout()

Definition at line 1413 of file zend_execute_API.c.

◆ zend_undefined_index_write()

ZEND_API ZEND_COLD zval *ZEND_FASTCALL zend_undefined_index_write ( HashTable * ht,
zend_string * offset )

Definition at line 2423 of file zend_execute.c.

◆ zend_undefined_offset_write()

ZEND_API ZEND_COLD zval *ZEND_FASTCALL zend_undefined_offset_write ( HashTable * ht,
zend_long lval )

Definition at line 2403 of file zend_execute.c.

◆ zend_unfinished_calls_gc()

ZEND_API void zend_unfinished_calls_gc ( zend_execute_data * execute_data,
zend_execute_data * call,
uint32_t op_num,
zend_get_gc_buffer * buf )

Definition at line 4408 of file zend_execute.c.

◆ zend_unfinished_execution_gc()

ZEND_API ZEND_ATTRIBUTE_DEPRECATED HashTable * zend_unfinished_execution_gc ( zend_execute_data * execute_data,
zend_execute_data * call,
zend_get_gc_buffer * gc_buffer )

Definition at line 4752 of file zend_execute.c.

◆ zend_unfinished_execution_gc_ex()

ZEND_API HashTable * zend_unfinished_execution_gc_ex ( zend_execute_data * execute_data,
zend_execute_data * call,
zend_get_gc_buffer * gc_buffer,
bool suspended_by_yield )

Definition at line 4757 of file zend_execute.c.

◆ zend_unset_timeout()

ZEND_API void zend_unset_timeout ( void )

Definition at line 1647 of file zend_execute_API.c.

◆ zend_use_resource_as_offset()

ZEND_API ZEND_COLD void ZEND_FASTCALL zend_use_resource_as_offset ( const zval * dim)

Definition at line 2493 of file zend_execute.c.

◆ zend_verify_arg_error()

ZEND_API ZEND_COLD void zend_verify_arg_error ( const zend_function * zf,
const zend_arg_info * arg_info,
uint32_t arg_num,
zval * value )

Definition at line 698 of file zend_execute.c.

◆ zend_verify_class_constant_type()

ZEND_API bool zend_verify_class_constant_type ( zend_class_constant * c,
const zend_string * name,
zval * constant )

Definition at line 1541 of file zend_execute.c.

◆ zend_verify_class_constant_type_error()

ZEND_COLD void zend_verify_class_constant_type_error ( const zend_class_constant * c,
const zend_string * name,
const zval * constant )

Definition at line 830 of file zend_execute.c.

◆ zend_verify_never_error()

ZEND_API ZEND_COLD void zend_verify_never_error ( const zend_function * zf)

Definition at line 1454 of file zend_execute.c.

◆ zend_verify_prop_assignable_by_ref()

ZEND_API bool ZEND_FASTCALL zend_verify_prop_assignable_by_ref ( const zend_property_info * prop_info,
zval * orig_val,
bool strict )

Definition at line 3904 of file zend_execute.c.

◆ zend_verify_prop_assignable_by_ref_ex()

ZEND_API bool ZEND_FASTCALL zend_verify_prop_assignable_by_ref_ex ( const zend_property_info * prop_info,
zval * orig_val,
bool strict,
zend_verify_prop_assignable_by_ref_context context )

Definition at line 3863 of file zend_execute.c.

◆ zend_verify_property_type()

ZEND_API bool zend_verify_property_type ( const zend_property_info * info,
zval * property,
bool strict )

Definition at line 1056 of file zend_execute.c.

◆ zend_verify_property_type_error()

ZEND_COLD void zend_verify_property_type_error ( const zend_property_info * info,
const zval * property )

Definition at line 840 of file zend_execute.c.

◆ zend_verify_ref_array_assignable()

ZEND_API bool zend_verify_ref_array_assignable ( zend_reference * ref)

Definition at line 3284 of file zend_execute.c.

◆ zend_verify_ref_assignable_zval()

ZEND_API bool ZEND_FASTCALL zend_verify_ref_assignable_zval ( zend_reference * ref,
zval * zv,
bool strict )

Definition at line 3743 of file zend_execute.c.

◆ zend_verify_return_error()

ZEND_API ZEND_COLD void zend_verify_return_error ( const zend_function * zf,
zval * value )

Definition at line 1438 of file zend_execute.c.

◆ zend_verify_scalar_type_hint()

ZEND_API bool zend_verify_scalar_type_hint ( uint32_t type_mask,
zval * arg,
bool strict,
bool is_internal_arg )

Definition at line 809 of file zend_execute.c.

◆ zend_vm_stack_copy_call_frame()

zend_execute_data * zend_vm_stack_copy_call_frame ( zend_execute_data * call,
uint32_t passed_args,
uint32_t additional_args )

Definition at line 4362 of file zend_execute.c.

◆ zend_vm_stack_destroy()

ZEND_API void zend_vm_stack_destroy ( void )

Definition at line 209 of file zend_execute.c.

◆ zend_vm_stack_extend()

ZEND_API void * zend_vm_stack_extend ( size_t size)

Definition at line 220 of file zend_execute.c.

◆ zend_vm_stack_init()

ZEND_API void zend_vm_stack_init ( void )

Definition at line 191 of file zend_execute.c.

◆ zend_vm_stack_init_ex()

ZEND_API void zend_vm_stack_init_ex ( size_t page_size)

Definition at line 199 of file zend_execute.c.

◆ zend_wrong_string_offset_error()

ZEND_API ZEND_COLD void zend_wrong_string_offset_error ( void )

Definition at line 1772 of file zend_execute.c.

◆ zval_update_constant()

ZEND_API zend_result ZEND_FASTCALL zval_update_constant ( zval * pp)

Definition at line 769 of file zend_execute_API.c.

◆ zval_update_constant_ex()

ZEND_API zend_result ZEND_FASTCALL zval_update_constant_ex ( zval * pp,
zend_class_entry * scope )

Definition at line 763 of file zend_execute_API.c.

◆ zval_update_constant_with_ctx()

ZEND_API zend_result ZEND_FASTCALL zval_update_constant_with_ctx ( zval * pp,
zend_class_entry * scope,
zend_ast_evaluate_ctx * ctx )

Definition at line 722 of file zend_execute_API.c.

Variable Documentation

◆ zend_autoload

ZEND_API zend_class_entry *(* zend_autoload) (zend_string *name, zend_string *lc_name) ( zend_string * name,
zend_string * lc_name )
extern

Definition at line 54 of file zend_execute_API.c.

◆ zend_execute_ex

ZEND_API void(* zend_execute_ex) (zend_execute_data *execute_data) ( zend_execute_data * execute_data)
extern

Definition at line 52 of file zend_execute_API.c.

◆ zend_execute_internal

ZEND_API void(* zend_execute_internal) (zend_execute_data *execute_data, zval *return_value) ( zend_execute_data * execute_data,
zval * return_value )
extern

Definition at line 53 of file zend_execute_API.c.

◆ zend_pass_function

ZEND_API const zend_internal_function zend_pass_function
extern

Definition at line 141 of file zend_execute.c.