php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
zend_frameless_function.h File Reference
#include <stdint.h>
#include <stddef.h>
#include <php_config.h>
#include "zend_portability.h"

Go to the source code of this file.

Data Structures

struct  zend_frameless_function_info
 

Macros

#define ZEND_FRAMELESS_FUNCTION_PARAMETERS_0   zval *return_value
 
#define ZEND_FRAMELESS_FUNCTION_PARAMETERS_1   zval *return_value, zval *arg1
 
#define ZEND_FRAMELESS_FUNCTION_PARAMETERS_2   zval *return_value, zval *arg1, zval *arg2
 
#define ZEND_FRAMELESS_FUNCTION_PARAMETERS_3   zval *return_value, zval *arg1, zval *arg2, zval *arg3
 
#define ZEND_FRAMELESS_FUNCTION_NAME(name, arity)
 
#define ZEND_OP_IS_FRAMELESS_ICALL(opcode)
 
#define ZEND_FLF_NUM_ARGS(opcode)
 
#define ZEND_FLF_FUNC(opline)
 
#define ZEND_FLF_HANDLER(opline)
 
#define ZEND_FRAMELESS_FUNCTION(name, arity)
 
#define Z_FLF_PARAM_ZVAL(arg_num, dest)
 
#define Z_FLF_PARAM_ARRAY(arg_num, dest)
 
#define Z_FLF_PARAM_ARRAY_OR_NULL(arg_num, dest)
 
#define Z_FLF_PARAM_ARRAY_HT_OR_STR(arg_num, dest_ht, dest_str, str_tmp)
 
#define Z_FLF_PARAM_BOOL(arg_num, dest)
 
#define Z_FLF_PARAM_LONG(arg_num, dest)
 
#define Z_FLF_PARAM_LONG_OR_NULL(arg_num, is_null, dest)
 
#define Z_FLF_PARAM_STR(arg_num, dest, tmp)
 
#define Z_FLF_PARAM_FREE_STR(arg_num, tmp)
 

Typedefs

typedef union _zend_function zend_function
 
typedef void(* zend_frameless_function_0) (zval *return_value)
 
typedef void(* zend_frameless_function_1) (zval *return_value, zval *op1)
 
typedef void(* zend_frameless_function_2) (zval *return_value, zval *op1, zval *op2)
 
typedef void(* zend_frameless_function_3) (zval *return_value, zval *op1, zval *op2, zval *op3)
 

Enumerations

enum  zend_jmp_fl_result { ZEND_JMP_FL_UNPRIMED = 0 , ZEND_JMP_FL_MISS = 1 , ZEND_JMP_FL_HIT = 2 }
 

Variables

size_t zend_flf_count
 
size_t zend_flf_capacity
 
ZEND_API void ** zend_flf_handlers
 
ZEND_API zend_function ** zend_flf_functions
 

Macro Definition Documentation

◆ Z_FLF_PARAM_ARRAY

#define Z_FLF_PARAM_ARRAY ( arg_num,
dest )
Value:
if (!zend_parse_arg_array(arg ## arg_num, &dest, /* null_check */ false, /* or_object */ false)) { \
zend_wrong_parameter_type_error(arg_num, Z_EXPECTED_ARRAY, arg ## arg_num); \
goto flf_clean; \
}
zval * arg
Definition ffi.c:3975
uint32_t arg_num

Definition at line 47 of file zend_frameless_function.h.

◆ Z_FLF_PARAM_ARRAY_HT_OR_STR

#define Z_FLF_PARAM_ARRAY_HT_OR_STR ( arg_num,
dest_ht,
dest_str,
str_tmp )
Value:
if (Z_TYPE_P(arg ## arg_num) == IS_STRING) { \
dest_ht = NULL; \
dest_str = Z_STR_P(arg ## arg_num); \
} else if (EXPECTED(Z_TYPE_P(arg ## arg_num) == IS_ARRAY)) { \
dest_ht = Z_ARRVAL_P(arg ## arg_num); \
dest_str = NULL; \
} else { \
dest_ht = NULL; \
ZVAL_COPY(&str_tmp, arg ## arg_num); \
arg ## arg_num = &str_tmp; \
if (!zend_flf_parse_arg_str_slow(arg ## arg_num, &dest_str, arg_num)) { \
zend_wrong_parameter_type_error(arg_num, Z_EXPECTED_ARRAY_OR_STRING, arg ## arg_num); \
goto flf_clean; \
} \
}
#define NULL
Definition gdcache.h:45
ZEND_API bool ZEND_FASTCALL zend_flf_parse_arg_str_slow(zval *arg, zend_string **dest, uint32_t arg_num)
Definition zend_API.c:785
#define EXPECTED(condition)
#define Z_TYPE_P(zval_p)
Definition zend_types.h:660
#define Z_ARRVAL_P(zval_p)
Definition zend_types.h:987
#define IS_STRING
Definition zend_types.h:606
#define IS_ARRAY
Definition zend_types.h:607
#define Z_STR_P(zval_p)
Definition zend_types.h:972

Definition at line 57 of file zend_frameless_function.h.

◆ Z_FLF_PARAM_ARRAY_OR_NULL

#define Z_FLF_PARAM_ARRAY_OR_NULL ( arg_num,
dest )
Value:
if (!zend_parse_arg_array(arg ## arg_num, &dest, /* null_check */ true, /* or_object */ false)) { \
zend_wrong_parameter_type_error(arg_num, Z_EXPECTED_ARRAY_OR_NULL, arg ## arg_num); \
goto flf_clean; \
}

Definition at line 52 of file zend_frameless_function.h.

◆ Z_FLF_PARAM_BOOL

#define Z_FLF_PARAM_BOOL ( arg_num,
dest )
Value:
if (!zend_parse_arg_bool_ex(arg ## arg_num, &dest, /* is_null */ NULL, /* null_check */ false, arg_num, /* frameless */ true)) { \
zend_wrong_parameter_type_error(arg_num, Z_EXPECTED_BOOL, arg ## arg_num); \
goto flf_clean; \
}

Definition at line 73 of file zend_frameless_function.h.

◆ Z_FLF_PARAM_FREE_STR

#define Z_FLF_PARAM_FREE_STR ( arg_num,
tmp )
Value:
if (UNEXPECTED(arg ## arg_num == &tmp)) { \
zval_ptr_dtor(arg ## arg_num); \
}
#define UNEXPECTED(condition)

Definition at line 99 of file zend_frameless_function.h.

◆ Z_FLF_PARAM_LONG

#define Z_FLF_PARAM_LONG ( arg_num,
dest )
Value:
if (!zend_parse_arg_long_ex(arg ## arg_num, &dest, /* is_null */ NULL, /* null_check */ false, arg_num, /* frameless */ true)) { \
zend_wrong_parameter_type_error(arg_num, Z_EXPECTED_LONG, arg ## arg_num); \
goto flf_clean; \
}

Definition at line 78 of file zend_frameless_function.h.

◆ Z_FLF_PARAM_LONG_OR_NULL

#define Z_FLF_PARAM_LONG_OR_NULL ( arg_num,
is_null,
dest )
Value:
if (!zend_parse_arg_long_ex(arg ## arg_num, &dest, &is_null, /* null_check */ true, arg_num, /* frameless */ true)) { \
zend_wrong_parameter_type_error(arg_num, Z_EXPECTED_LONG_OR_NULL, arg ## arg_num); \
goto flf_clean; \
}
is_null(mixed $value)

Definition at line 83 of file zend_frameless_function.h.

◆ Z_FLF_PARAM_STR

#define Z_FLF_PARAM_STR ( arg_num,
dest,
tmp )
Value:
if (Z_TYPE_P(arg ## arg_num) == IS_STRING) { \
dest = Z_STR_P(arg ## arg_num); \
} else { \
ZVAL_COPY(&tmp, arg ## arg_num); \
arg ## arg_num = &tmp; \
if (!zend_parse_arg_str_ex(arg ## arg_num, &dest, /* null_check */ false, arg_num, /* frameless */ true)) { \
zend_wrong_parameter_type_error(arg_num, Z_EXPECTED_STRING, arg ## arg_num); \
goto flf_clean; \
} \
}

Definition at line 88 of file zend_frameless_function.h.

◆ Z_FLF_PARAM_ZVAL

#define Z_FLF_PARAM_ZVAL ( arg_num,
dest )
Value:
dest = arg ## arg_num;

Definition at line 45 of file zend_frameless_function.h.

◆ ZEND_FLF_FUNC

#define ZEND_FLF_FUNC ( opline)
Value:
(zend_flf_functions[(opline)->extended_value])
zend_function ** zend_flf_functions

Definition at line 39 of file zend_frameless_function.h.

◆ ZEND_FLF_HANDLER

#define ZEND_FLF_HANDLER ( opline)
Value:
(zend_flf_handlers[(opline)->extended_value])
ZEND_API void ** zend_flf_handlers

Definition at line 40 of file zend_frameless_function.h.

◆ ZEND_FLF_NUM_ARGS

#define ZEND_FLF_NUM_ARGS ( opcode)
Value:
#define ZEND_FRAMELESS_ICALL_0

Definition at line 38 of file zend_frameless_function.h.

◆ ZEND_FRAMELESS_FUNCTION

#define ZEND_FRAMELESS_FUNCTION ( name,
arity )
Value:
void ZEND_FRAMELESS_FUNCTION_NAME(name, arity)(ZEND_FRAMELESS_FUNCTION_PARAMETERS_##arity)
#define ZEND_FRAMELESS_FUNCTION_NAME(name, arity)
zend_string * name

Definition at line 42 of file zend_frameless_function.h.

◆ ZEND_FRAMELESS_FUNCTION_NAME

#define ZEND_FRAMELESS_FUNCTION_NAME ( name,
arity )
Value:
zflf_##name##_##arity
_(string $message)

Definition at line 36 of file zend_frameless_function.h.

◆ ZEND_FRAMELESS_FUNCTION_PARAMETERS_0

#define ZEND_FRAMELESS_FUNCTION_PARAMETERS_0   zval *return_value

Definition at line 31 of file zend_frameless_function.h.

◆ ZEND_FRAMELESS_FUNCTION_PARAMETERS_1

#define ZEND_FRAMELESS_FUNCTION_PARAMETERS_1   zval *return_value, zval *arg1

Definition at line 32 of file zend_frameless_function.h.

◆ ZEND_FRAMELESS_FUNCTION_PARAMETERS_2

#define ZEND_FRAMELESS_FUNCTION_PARAMETERS_2   zval *return_value, zval *arg1, zval *arg2

Definition at line 33 of file zend_frameless_function.h.

◆ ZEND_FRAMELESS_FUNCTION_PARAMETERS_3

#define ZEND_FRAMELESS_FUNCTION_PARAMETERS_3   zval *return_value, zval *arg1, zval *arg2, zval *arg3

Definition at line 34 of file zend_frameless_function.h.

◆ ZEND_OP_IS_FRAMELESS_ICALL

#define ZEND_OP_IS_FRAMELESS_ICALL ( opcode)
Value:
((opcode) >= ZEND_FRAMELESS_ICALL_0 && (opcode) <= ZEND_FRAMELESS_ICALL_3)
#define ZEND_FRAMELESS_ICALL_3

Definition at line 37 of file zend_frameless_function.h.

Typedef Documentation

◆ zend_frameless_function_0

typedef void(* zend_frameless_function_0) (zval *return_value)

Definition at line 110 of file zend_frameless_function.h.

◆ zend_frameless_function_1

typedef void(* zend_frameless_function_1) (zval *return_value, zval *op1)

Definition at line 111 of file zend_frameless_function.h.

◆ zend_frameless_function_2

typedef void(* zend_frameless_function_2) (zval *return_value, zval *op1, zval *op2)

Definition at line 112 of file zend_frameless_function.h.

◆ zend_frameless_function_3

typedef void(* zend_frameless_function_3) (zval *return_value, zval *op1, zval *op2, zval *op3)

Definition at line 113 of file zend_frameless_function.h.

◆ zend_function

Definition at line 108 of file zend_frameless_function.h.

Enumeration Type Documentation

◆ zend_jmp_fl_result

Enumerator
ZEND_JMP_FL_UNPRIMED 
ZEND_JMP_FL_MISS 
ZEND_JMP_FL_HIT 

Definition at line 125 of file zend_frameless_function.h.

Variable Documentation

◆ zend_flf_capacity

size_t zend_flf_capacity
extern

Definition at line 22 of file zend_frameless_function.c.

◆ zend_flf_count

size_t zend_flf_count
extern

Definition at line 21 of file zend_frameless_function.c.

◆ zend_flf_functions

ZEND_API zend_function** zend_flf_functions
extern

Definition at line 24 of file zend_frameless_function.c.

◆ zend_flf_handlers

ZEND_API void** zend_flf_handlers
extern

Definition at line 23 of file zend_frameless_function.c.