@@ -128,46 +128,46 @@ typedef struct _zend_fcall_info_cache {
128
128
129
129
/* Arginfo structures without type information */
130
130
#define ZEND_ARG_INFO (pass_by_ref , name ) \
131
- { #name, ZEND_TYPE_INIT_NONE(_ZEND_ARG_INFO_FLAGS(pass_by_ref, 0, 0)), NULL },
131
+ { #name, ZEND_TYPE_INIT_NONE(_ZEND_ARG_INFO_FLAGS(pass_by_ref, 0, 0)), NULL, NULL },
132
132
#define ZEND_ARG_INFO_WITH_DEFAULT_VALUE (pass_by_ref , name , default_value ) \
133
- { #name, ZEND_TYPE_INIT_NONE(_ZEND_ARG_INFO_FLAGS(pass_by_ref, 0, 0)), default_value },
133
+ { #name, ZEND_TYPE_INIT_NONE(_ZEND_ARG_INFO_FLAGS(pass_by_ref, 0, 0)), NULL, default_value },
134
134
#define ZEND_ARG_VARIADIC_INFO (pass_by_ref , name ) \
135
- { #name, ZEND_TYPE_INIT_NONE(_ZEND_ARG_INFO_FLAGS(pass_by_ref, 1, 0)), NULL },
135
+ { #name, ZEND_TYPE_INIT_NONE(_ZEND_ARG_INFO_FLAGS(pass_by_ref, 1, 0)), NULL, NULL },
136
136
137
137
/* Arginfo structures with simple type information */
138
138
#define ZEND_ARG_TYPE_INFO (pass_by_ref , name , type_hint , allow_null ) \
139
- { #name, ZEND_TYPE_INIT_CODE(type_hint, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 0, 0)), NULL },
139
+ { #name, ZEND_TYPE_INIT_CODE(type_hint, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 0, 0)), NULL, NULL },
140
140
#define ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE (pass_by_ref , name , type_hint , allow_null , default_value ) \
141
- { #name, ZEND_TYPE_INIT_CODE(type_hint, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 0, 0)), default_value },
141
+ { #name, ZEND_TYPE_INIT_CODE(type_hint, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 0, 0)), NULL, default_value },
142
142
#define ZEND_ARG_VARIADIC_TYPE_INFO (pass_by_ref , name , type_hint , allow_null ) \
143
- { #name, ZEND_TYPE_INIT_CODE(type_hint, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 1, 0)), NULL },
143
+ { #name, ZEND_TYPE_INIT_CODE(type_hint, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 1, 0)), NULL, NULL },
144
144
145
145
/* Arginfo structures with complex type information */
146
146
#define ZEND_ARG_TYPE_MASK (pass_by_ref , name , type_mask , default_value ) \
147
- { #name, ZEND_TYPE_INIT_MASK(type_mask | _ZEND_ARG_INFO_FLAGS(pass_by_ref, 0, 0)), default_value },
147
+ { #name, ZEND_TYPE_INIT_MASK(type_mask | _ZEND_ARG_INFO_FLAGS(pass_by_ref, 0, 0)), NULL, default_value },
148
148
#define ZEND_ARG_OBJ_TYPE_MASK (pass_by_ref , name , class_name , type_mask , default_value ) \
149
- { #name, ZEND_TYPE_INIT_CLASS_CONST_MASK(#class_name, type_mask | _ZEND_ARG_INFO_FLAGS(pass_by_ref, 0, 0)), default_value },
149
+ { #name, ZEND_TYPE_INIT_CLASS_CONST_MASK(#class_name, type_mask | _ZEND_ARG_INFO_FLAGS(pass_by_ref, 0, 0)), NULL, default_value },
150
150
#define ZEND_ARG_VARIADIC_OBJ_TYPE_MASK (pass_by_ref , name , class_name , type_mask ) \
151
- { #name, ZEND_TYPE_INIT_CLASS_CONST_MASK(#class_name, type_mask | _ZEND_ARG_INFO_FLAGS(pass_by_ref, 1, 0)), NULL },
151
+ { #name, ZEND_TYPE_INIT_CLASS_CONST_MASK(#class_name, type_mask | _ZEND_ARG_INFO_FLAGS(pass_by_ref, 1, 0)), NULL, NULL },
152
152
153
153
/* Arginfo structures with object type information */
154
154
#define ZEND_ARG_OBJ_INFO (pass_by_ref , name , class_name , allow_null ) \
155
- { #name, ZEND_TYPE_INIT_CLASS_CONST(#class_name, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 0, 0)), NULL },
155
+ { #name, ZEND_TYPE_INIT_CLASS_CONST(#class_name, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 0, 0)), NULL, NULL },
156
156
#define ZEND_ARG_OBJ_INFO_WITH_DEFAULT_VALUE (pass_by_ref , name , class_name , allow_null , default_value ) \
157
- { #name, ZEND_TYPE_INIT_CLASS_CONST(#class_name, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 0, 0)), default_value },
157
+ { #name, ZEND_TYPE_INIT_CLASS_CONST(#class_name, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 0, 0)), NULL, default_value },
158
158
#define ZEND_ARG_VARIADIC_OBJ_INFO (pass_by_ref , name , class_name , allow_null ) \
159
- { #name, ZEND_TYPE_INIT_CLASS_CONST(#class_name, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 1, 0)), NULL },
159
+ { #name, ZEND_TYPE_INIT_CLASS_CONST(#class_name, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 1, 0)), NULL, NULL },
160
160
161
161
/* Legacy arginfo structures */
162
162
#define ZEND_ARG_ARRAY_INFO (pass_by_ref , name , allow_null ) \
163
- { #name, ZEND_TYPE_INIT_CODE(IS_ARRAY, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 0, 0)), NULL },
163
+ { #name, ZEND_TYPE_INIT_CODE(IS_ARRAY, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 0, 0)), NULL, NULL },
164
164
#define ZEND_ARG_CALLABLE_INFO (pass_by_ref , name , allow_null ) \
165
- { #name, ZEND_TYPE_INIT_CODE(IS_CALLABLE, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 0, 0)), NULL },
165
+ { #name, ZEND_TYPE_INIT_CODE(IS_CALLABLE, allow_null, _ZEND_ARG_INFO_FLAGS(pass_by_ref, 0, 0)), NULL, NULL },
166
166
167
167
#define ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX2 (name , return_reference , required_num_args , class_name , allow_null , is_tentative_return_type ) \
168
168
static const zend_internal_arg_info name[] = { \
169
169
{ (const char*)(uintptr_t)(required_num_args), \
170
- ZEND_TYPE_INIT_CLASS_CONST(#class_name, allow_null, _ZEND_ARG_INFO_FLAGS(return_reference, 0, is_tentative_return_type)), NULL },
170
+ ZEND_TYPE_INIT_CLASS_CONST(#class_name, allow_null, _ZEND_ARG_INFO_FLAGS(return_reference, 0, is_tentative_return_type)), NULL, NULL },
171
171
172
172
#define ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX (name , return_reference , required_num_args , class_name , allow_null ) \
173
173
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX2(name, return_reference, required_num_args, class_name, allow_null, 0)
@@ -180,7 +180,7 @@ typedef struct _zend_fcall_info_cache {
180
180
181
181
#define ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX2 (name , return_reference , required_num_args , type , is_tentative_return_type ) \
182
182
static const zend_internal_arg_info name[] = { \
183
- { (const char*)(uintptr_t)(required_num_args), ZEND_TYPE_INIT_MASK(type | _ZEND_ARG_INFO_FLAGS(return_reference, 0, is_tentative_return_type)), NULL },
183
+ { (const char*)(uintptr_t)(required_num_args), ZEND_TYPE_INIT_MASK(type | _ZEND_ARG_INFO_FLAGS(return_reference, 0, is_tentative_return_type)), NULL, NULL },
184
184
185
185
#define ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX (name , return_reference , required_num_args , type ) \
186
186
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX2(name, return_reference, required_num_args, type, 0)
@@ -190,7 +190,7 @@ typedef struct _zend_fcall_info_cache {
190
190
191
191
#define ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX2 (name , return_reference , required_num_args , class_name , type , is_tentative_return_type ) \
192
192
static const zend_internal_arg_info name[] = { \
193
- { (const char*)(uintptr_t)(required_num_args), ZEND_TYPE_INIT_CLASS_CONST_MASK(#class_name, type | _ZEND_ARG_INFO_FLAGS(return_reference, 0, is_tentative_return_type)), NULL },
193
+ { (const char*)(uintptr_t)(required_num_args), ZEND_TYPE_INIT_CLASS_CONST_MASK(#class_name, type | _ZEND_ARG_INFO_FLAGS(return_reference, 0, is_tentative_return_type)), NULL, NULL },
194
194
195
195
#define ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX (name , return_reference , required_num_args , class_name , type ) \
196
196
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX2(name, return_reference, required_num_args, class_name, type, 0)
@@ -200,7 +200,7 @@ typedef struct _zend_fcall_info_cache {
200
200
201
201
#define ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX2 (name , return_reference , required_num_args , type , allow_null , is_tentative_return_type ) \
202
202
static const zend_internal_arg_info name[] = { \
203
- { (const char*)(uintptr_t)(required_num_args), ZEND_TYPE_INIT_CODE(type, allow_null, _ZEND_ARG_INFO_FLAGS(return_reference, 0, is_tentative_return_type)), NULL },
203
+ { (const char*)(uintptr_t)(required_num_args), ZEND_TYPE_INIT_CODE(type, allow_null, _ZEND_ARG_INFO_FLAGS(return_reference, 0, is_tentative_return_type)), NULL, NULL },
204
204
205
205
#define ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX (name , return_reference , required_num_args , type , allow_null ) \
206
206
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX2(name, return_reference, required_num_args, type, allow_null, 0)
@@ -213,7 +213,7 @@ typedef struct _zend_fcall_info_cache {
213
213
214
214
#define ZEND_BEGIN_ARG_INFO_EX (name , _unused , return_reference , required_num_args ) \
215
215
static const zend_internal_arg_info name[] = { \
216
- { (const char*)(uintptr_t)(required_num_args), ZEND_TYPE_INIT_NONE(_ZEND_ARG_INFO_FLAGS(return_reference, 0, 0)), NULL },
216
+ { (const char*)(uintptr_t)(required_num_args), ZEND_TYPE_INIT_NONE(_ZEND_ARG_INFO_FLAGS(return_reference, 0, 0)), NULL, NULL },
217
217
#define ZEND_BEGIN_ARG_INFO (name , _unused ) \
218
218
ZEND_BEGIN_ARG_INFO_EX(name, {}, ZEND_RETURN_VALUE, -1)
219
219
#define ZEND_END_ARG_INFO () };
@@ -448,6 +448,8 @@ ZEND_API zend_result zend_update_class_constant(zend_class_constant *c, const ze
448
448
ZEND_API zend_result zend_update_class_constants (zend_class_entry * class_type );
449
449
ZEND_API HashTable * zend_separate_class_constants_table (zend_class_entry * class_type );
450
450
451
+ ZEND_API zend_type_node * zend_type_to_interned_tree (zend_type type );
452
+
451
453
static zend_always_inline HashTable * zend_class_constants_table (zend_class_entry * ce ) {
452
454
if ((ce -> ce_flags & ZEND_ACC_HAS_AST_CONSTANTS ) && ZEND_MAP_PTR (ce -> mutable_data )) {
453
455
zend_class_mutable_data * mutable_data =
0 commit comments