41#define F0(name, info) \
42 {name, sizeof(name)-1, (info), NULL}
43#define F1(name, info) \
44 {name, sizeof(name)-1, (MAY_BE_RC1 | (info)), NULL}
45#define FN(name, info) \
46 {name, sizeof(name)-1, (MAY_BE_RC1 | MAY_BE_RCN | (info)), NULL}
47#define FC(name, callback) \
48 {name, sizeof(name)-1, 0, callback}
61 uint32_t
t1 = _ssa_op1_info(op_array, ssa,
call_info->arg_info[0].opline,
63 uint32_t
t2 = _ssa_op1_info(op_array, ssa,
call_info->arg_info[1].opline,
69 t3 = _ssa_op1_info(op_array, ssa,
call_info->arg_info[2].opline,
95 FC(
"range", zend_range_info),
139 *ce_is_instanceof = 0;
150 callee_func,
NULL, ce, ce_is_instanceof, !
call_info->is_prototype);
157 if (internal_ret & ~
ret) {
161 if (internal_ret ==
ret) {
168 uint32_t diff = internal_ret_any ^ ret_any;
190 callee_func,
NULL, ce, ce_is_instanceof, !
call_info->is_prototype);
201static void zend_func_info_add(
const func_info_t *func_infos,
size_t n)
203 for (
size_t i = 0; i <
n; i++) {
206 if (zend_hash_add_ptr(&func_info,
key, (
void**)&func_infos[i]) ==
NULL) {
207 fprintf(stderr,
"ERROR: Duplicate function info for \"%s\"\n", func_infos[i].
name);
224 zend_func_info_add(old_func_infos,
sizeof(old_func_infos)/
sizeof(
func_info_t));
225 zend_func_info_add(func_infos,
sizeof(func_infos)/
sizeof(
func_info_t));
fprintf($stream, string $format, mixed ... $values)
unsigned char key[REFLECTION_KEY_LEN]
zend_ssa_var_info return_info
zend_string * function_name
struct _zend_function::@236135173067030250234125302313220025134003177336 common
zend_string_release_ex(func->internal_function.function_name, 0)
#define ZEND_INTERNAL_FUNCTION
struct _zend_op_array zend_op_array
ZEND_API int zend_get_resource_handle(const char *module_name)
union _zend_function zend_function
uint32_t zend_get_internal_func_info(const zend_function *callee_func, const zend_call_info *call_info, const zend_ssa *ssa)
uint32_t(* info_func_t)(const zend_call_info *call_info, const zend_ssa *ssa)
#define FC(name, callback)
struct _func_info_t func_info_t
zend_result zend_func_info_startup(void)
ZEND_API int zend_func_info_rid
zend_result zend_func_info_shutdown(void)
ZEND_API uint32_t zend_get_func_info(const zend_call_info *call_info, const zend_ssa *ssa, zend_class_entry **ce, bool *ce_is_instanceof)
struct _zend_call_info zend_call_info
#define ZEND_FUNC_INFO(op_array)
struct _zend_func_info zend_func_info
ZEND_API void ZEND_FASTCALL zend_hash_destroy(HashTable *ht)
ZEND_API zval *ZEND_FASTCALL zend_hash_find_known_hash(const HashTable *ht, const zend_string *key)
#define zend_hash_init(ht, nSize, pHashFunction, pDestructor, persistent)
uint32_t zend_get_return_info_from_signature_only(const zend_function *func, const zend_script *script, zend_class_entry **ce, bool *ce_is_instanceof, bool use_tentative_return_info)
struct _zend_string zend_string
struct _zend_class_entry zend_class_entry
struct _zend_ssa zend_ssa
ZEND_API zend_string_init_interned_func_t zend_string_init_interned
#define MAY_BE_ARRAY_OF_ANY
#define MAY_BE_ARRAY_PACKED
#define MAY_BE_ARRAY_OF_DOUBLE
#define MAY_BE_ARRAY_EMPTY
#define MAY_BE_ARRAY_OF_LONG
#define MAY_BE_ARRAY_OF_STRING
struct _zend_array HashTable
ZEND_RESULT_CODE zend_result