@@ -128,46 +128,46 @@ typedef struct _zend_fcall_info_cache {
128128
129129/* Arginfo structures without type information */
130130#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 },
132132#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 },
134134#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 },
136136
137137/* Arginfo structures with simple type information */
138138#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 },
140140#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 },
142142#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 },
144144
145145/* Arginfo structures with complex type information */
146146#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 },
148148#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 },
150150#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 },
152152
153153/* Arginfo structures with object type information */
154154#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 },
156156#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 },
158158#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 },
160160
161161/* Legacy arginfo structures */
162162#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 },
164164#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 },
166166
167167#define ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX2 (name , return_reference , required_num_args , class_name , allow_null , is_tentative_return_type ) \
168168 static const zend_internal_arg_info name[] = { \
169169 { (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 },
171171
172172#define ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX (name , return_reference , required_num_args , class_name , allow_null ) \
173173 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 {
180180
181181#define ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX2 (name , return_reference , required_num_args , type , is_tentative_return_type ) \
182182 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 },
184184
185185#define ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX (name , return_reference , required_num_args , type ) \
186186 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 {
190190
191191#define ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX2 (name , return_reference , required_num_args , class_name , type , is_tentative_return_type ) \
192192 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 },
194194
195195#define ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX (name , return_reference , required_num_args , class_name , type ) \
196196 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 {
200200
201201#define ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX2 (name , return_reference , required_num_args , type , allow_null , is_tentative_return_type ) \
202202 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 },
204204
205205#define ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX (name , return_reference , required_num_args , type , allow_null ) \
206206 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 {
213213
214214#define ZEND_BEGIN_ARG_INFO_EX (name , _unused , return_reference , required_num_args ) \
215215 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 },
217217#define ZEND_BEGIN_ARG_INFO (name , _unused ) \
218218 ZEND_BEGIN_ARG_INFO_EX(name, {}, ZEND_RETURN_VALUE, -1)
219219#define ZEND_END_ARG_INFO () };
@@ -448,6 +448,8 @@ ZEND_API zend_result zend_update_class_constant(zend_class_constant *c, const ze
448448ZEND_API zend_result zend_update_class_constants (zend_class_entry * class_type );
449449ZEND_API HashTable * zend_separate_class_constants_table (zend_class_entry * class_type );
450450
451+ ZEND_API zend_type_node * zend_type_to_interned_tree (zend_type type );
452+
451453static zend_always_inline HashTable * zend_class_constants_table (zend_class_entry * ce ) {
452454 if ((ce -> ce_flags & ZEND_ACC_HAS_AST_CONSTANTS ) && ZEND_MAP_PTR (ce -> mutable_data )) {
453455 zend_class_mutable_data * mutable_data =
0 commit comments