@@ -95,7 +95,7 @@ static void zend_type_copy_ctor(zend_type *const type, bool use_arena, bool pers
9595	}
9696}
9797
98- static  zend_function  * zend_duplicate_internal_function (zend_function  * func , zend_class_entry  * ce ) /* {{{ */ 
98+ static  zend_function  * zend_duplicate_internal_function (zend_function  * func , const   zend_class_entry  * ce ) /* {{{ */ 
9999{
100100	zend_function  * new_function ;
101101
@@ -114,7 +114,7 @@ static zend_function *zend_duplicate_internal_function(zend_function *func, zend
114114}
115115/* }}} */ 
116116
117- static  zend_always_inline  zend_function  * zend_duplicate_function (zend_function  * func , zend_class_entry  * ce ) /* {{{ */ 
117+ static  zend_always_inline  zend_function  * zend_duplicate_function (zend_function  * func , const   zend_class_entry  * ce ) /* {{{ */ 
118118{
119119	if  (UNEXPECTED (func -> type  ==  ZEND_INTERNAL_FUNCTION )) {
120120		return  zend_duplicate_internal_function (func , ce );
@@ -239,7 +239,7 @@ static zend_string *resolve_class_name(zend_class_entry *scope, zend_string *nam
239239	}
240240}
241241
242- static  bool  class_visible (zend_class_entry  * ce ) {
242+ static  bool  class_visible (const   zend_class_entry  * ce ) {
243243	if  (ce -> type  ==  ZEND_INTERNAL_CLASS ) {
244244		return  !(CG (compiler_options ) &  ZEND_COMPILE_IGNORE_INTERNAL_CLASSES );
245245	} else  {
@@ -309,7 +309,7 @@ static zend_class_entry *lookup_class(zend_class_entry *scope, zend_string *name
309309}
310310
311311/* Instanceof that's safe to use on unlinked classes. */ 
312- static  bool  unlinked_instanceof (zend_class_entry  * ce1 , zend_class_entry  * ce2 ) {
312+ static  bool  unlinked_instanceof (zend_class_entry  * ce1 , const   zend_class_entry  * ce2 ) {
313313	if  (ce1  ==  ce2 ) {
314314		return  1 ;
315315	}
@@ -874,7 +874,7 @@ static inheritance_status zend_do_perform_implementation_check(
874874/* }}} */ 
875875
876876static  ZEND_COLD  void  zend_append_type_hint (
877- 		smart_str  * str , zend_class_entry  * scope , zend_arg_info  * arg_info , bool  return_hint ) /* {{{ */ 
877+ 		smart_str  * str , zend_class_entry  * scope , const   zend_arg_info  * arg_info , bool  return_hint ) /* {{{ */ 
878878{
879879	if  (ZEND_TYPE_IS_SET (arg_info -> type )) {
880880		zend_string  * type_str  =  zend_type_to_string_resolved (arg_info -> type , scope );
@@ -1041,7 +1041,7 @@ static void ZEND_COLD emit_incompatible_method_error(
10411041	if  (status  ==  INHERITANCE_UNRESOLVED ) {
10421042		// TODO Improve error message if first unresolved class is present in child and parent? 
10431043		/* Fetch the first unresolved class from registered autoloads */ 
1044- 		zend_string  * unresolved_class  =  NULL ;
1044+ 		const   zend_string  * unresolved_class  =  NULL ;
10451045		ZEND_HASH_MAP_FOREACH_STR_KEY (CG (delayed_autoloads ), unresolved_class ) {
10461046			break ;
10471047		} ZEND_HASH_FOREACH_END ();
@@ -1051,7 +1051,7 @@ static void ZEND_COLD emit_incompatible_method_error(
10511051			"Could not check compatibility between %s and %s, because class %s is not available" ,
10521052			ZSTR_VAL (child_prototype ), ZSTR_VAL (parent_prototype ), ZSTR_VAL (unresolved_class ));
10531053	} else  if  (status  ==  INHERITANCE_WARNING ) {
1054- 		zend_attribute  * return_type_will_change_attribute  =  zend_get_attribute_str (
1054+ 		const   zend_attribute  * return_type_will_change_attribute  =  zend_get_attribute_str (
10551055			child -> common .attributes ,
10561056			"returntypewillchange" ,
10571057			sizeof ("returntypewillchange" )- 1 
@@ -1407,7 +1407,7 @@ static void inherit_property_hook(
14071407	 * compiler (variadic and by-ref args, etc). */ 
14081408}
14091409
1410- static  prop_variance  prop_get_variance (zend_property_info  * prop_info ) {
1410+ static  prop_variance  prop_get_variance (const   zend_property_info  * prop_info ) {
14111411	bool  unbacked  =  prop_info -> flags  &  ZEND_ACC_VIRTUAL ;
14121412	if  (unbacked  &&  prop_info -> hooks ) {
14131413		if  (!prop_info -> hooks [ZEND_PROPERTY_HOOK_SET ]) {
@@ -2649,7 +2649,7 @@ static void zend_do_traits_method_binding(zend_class_entry *ce, zend_class_entry
26492649}
26502650/* }}} */ 
26512651
2652- static  zend_class_entry *  find_first_constant_definition (zend_class_entry  * ce , zend_class_entry  * * traits , size_t  current_trait , zend_string  * constant_name , zend_class_entry  * colliding_ce ) /* {{{ */ 
2652+ static  const   zend_class_entry *  find_first_constant_definition (const   zend_class_entry  * ce , zend_class_entry  * * traits , size_t  current_trait , zend_string  * constant_name ,  const  zend_class_entry  * colliding_ce ) /* {{{ */ 
26532653{
26542654	/* This function is used to show the place of the existing conflicting 
26552655	 * definition in error messages when conflicts occur. Since trait constants 
@@ -2674,7 +2674,7 @@ static zend_class_entry* find_first_constant_definition(zend_class_entry *ce, ze
26742674/* }}} */ 
26752675
26762676static  void  emit_incompatible_trait_constant_error (
2677- 	zend_class_entry  * ce , zend_class_constant  * existing_constant , zend_class_constant  * trait_constant , zend_string  * name ,
2677+ 	const   zend_class_entry  * ce , const   zend_class_constant  * existing_constant ,  const  zend_class_constant  * trait_constant , zend_string  * name ,
26782678	zend_class_entry  * * traits , size_t  current_trait 
26792679) {
26802680	zend_error_noreturn (E_COMPILE_ERROR ,
@@ -2770,7 +2770,7 @@ static void zend_do_traits_constant_binding(zend_class_entry *ce, zend_class_ent
27702770}
27712771/* }}} */ 
27722772
2773- static  zend_class_entry *  find_first_property_definition (zend_class_entry  * ce , zend_class_entry  * * traits , size_t  current_trait , zend_string  * prop_name , zend_class_entry  * colliding_ce ) /* {{{ */ 
2773+ static  const   zend_class_entry *  find_first_property_definition (const   zend_class_entry  * ce , zend_class_entry  * * traits , size_t  current_trait , zend_string  * prop_name ,  const  zend_class_entry  * colliding_ce ) /* {{{ */ 
27742774{
27752775	size_t  i ;
27762776
@@ -2791,7 +2791,7 @@ static void zend_do_traits_property_binding(zend_class_entry *ce, zend_class_ent
27912791{
27922792	size_t  i ;
27932793	zend_property_info  * property_info ;
2794- 	zend_property_info  * colliding_prop ;
2794+ 	const   zend_property_info  * colliding_prop ;
27952795	zend_property_info  * new_prop ;
27962796	zend_string *  prop_name ;
27972797	zval *  prop_value ;
@@ -2963,11 +2963,11 @@ static void zend_do_bind_traits(zend_class_entry *ce, zend_class_entry **traits)
29632963	ai.afn[idx] && ai.afn[idx + 1] ? ", " : (ai.afn[idx] && ai.cnt > MAX_ABSTRACT_INFO_CNT ? ", ..." : "")
29642964
29652965typedef  struct  _zend_abstract_info  {
2966- 	zend_function  * afn [MAX_ABSTRACT_INFO_CNT  +  1 ];
2966+ 	const   zend_function  * afn [MAX_ABSTRACT_INFO_CNT  +  1 ];
29672967	int  cnt ;
29682968} zend_abstract_info ;
29692969
2970- static  void  zend_verify_abstract_class_function (zend_function  * fn , zend_abstract_info  * ai ) /* {{{ */ 
2970+ static  void  zend_verify_abstract_class_function (const   zend_function  * fn , zend_abstract_info  * ai ) /* {{{ */ 
29712971{
29722972	if  (ai -> cnt  <  MAX_ABSTRACT_INFO_CNT ) {
29732973		ai -> afn [ai -> cnt ] =  fn ;
@@ -2978,7 +2978,7 @@ static void zend_verify_abstract_class_function(zend_function *fn, zend_abstract
29782978
29792979void  zend_verify_abstract_class (zend_class_entry  * ce ) /* {{{ */ 
29802980{
2981- 	zend_function  * func ;
2981+ 	const   zend_function  * func ;
29822982	zend_abstract_info  ai ;
29832983	bool  is_explicit_abstract  =  (ce -> ce_flags  &  ZEND_ACC_EXPLICIT_ABSTRACT_CLASS ) !=  0 ;
29842984	bool  can_be_abstract  =  (ce -> ce_flags  &  ZEND_ACC_ENUM ) ==  0 ;
@@ -2995,11 +2995,11 @@ void zend_verify_abstract_class(zend_class_entry *ce) /* {{{ */
29952995	} ZEND_HASH_FOREACH_END ();
29962996
29972997	if  (!is_explicit_abstract ) {
2998- 		zend_property_info  * prop_info ;
2998+ 		const   zend_property_info  * prop_info ;
29992999		ZEND_HASH_FOREACH_PTR (& ce -> properties_info , prop_info ) {
30003000			if  (prop_info -> hooks ) {
30013001				for  (uint32_t  i  =  0 ; i  <  ZEND_PROPERTY_HOOK_COUNT ; i ++ ) {
3002- 					zend_function  * fn  =  prop_info -> hooks [i ];
3002+ 					const   zend_function  * fn  =  prop_info -> hooks [i ];
30033003					if  (fn  &&  (fn -> common .fn_flags  &  ZEND_ACC_ABSTRACT )) {
30043004						zend_verify_abstract_class_function (fn , & ai );
30053005					}
@@ -3245,7 +3245,7 @@ static void resolve_delayed_variance_obligations(zend_class_entry *ce) {
32453245	zend_hash_index_del (all_obligations , num_key );
32463246}
32473247
3248- static  void  check_unrecoverable_load_failure (zend_class_entry  * ce ) {
3248+ static  void  check_unrecoverable_load_failure (const   zend_class_entry  * ce ) {
32493249	/* If this class has been used while unlinked through a variance obligation, it is not legal 
32503250	 * to remove the class from the class table and throw an exception, because there is already 
32513251	 * a dependence on the inheritance hierarchy of this specific class. Instead we fall back to 
@@ -3264,7 +3264,7 @@ static void check_unrecoverable_load_failure(zend_class_entry *ce) {
32643264	} while (0)
32653265
32663266static  zend_op_array  * zend_lazy_method_load (
3267- 		zend_op_array  * op_array , zend_class_entry  * ce , zend_class_entry  * pce ) {
3267+ 		zend_op_array  * op_array , zend_class_entry  * ce , const   zend_class_entry  * pce ) {
32683268	ZEND_ASSERT (op_array -> type  ==  ZEND_USER_FUNCTION );
32693269	ZEND_ASSERT (op_array -> scope  ==  pce );
32703270	ZEND_ASSERT (op_array -> prototype  ==  NULL );
@@ -3585,7 +3585,7 @@ ZEND_API zend_class_entry *zend_do_link_class(zend_class_entry *ce, zend_string
35853585			zend_verify_enum (ce );
35863586		}
35873587		if  (ce -> num_hooked_prop_variance_checks ) {
3588- 			zend_property_info  * prop_info ;
3588+ 			const   zend_property_info  * prop_info ;
35893589			ZEND_HASH_MAP_FOREACH_PTR (& ce -> properties_info , prop_info ) {
35903590				if  (prop_info -> ce  ==  ce  &&  prop_info -> hooks  &&  prop_info -> hooks [ZEND_PROPERTY_HOOK_SET ]) {
35913591					switch  (zend_verify_property_hook_variance (prop_info , prop_info -> hooks [ZEND_PROPERTY_HOOK_SET ])) {
@@ -3690,8 +3690,8 @@ static inheritance_status zend_can_early_bind(zend_class_entry *ce, zend_class_e
36903690{
36913691	zend_string  * key ;
36923692	zend_function  * parent_func ;
3693- 	zend_property_info  * parent_info ;
3694- 	zend_class_constant  * parent_const ;
3693+ 	const   zend_property_info  * parent_info ;
3694+ 	const   zend_class_constant  * parent_const ;
36953695	inheritance_status  overall_status  =  INHERITANCE_SUCCESS ;
36963696
36973697	ZEND_HASH_MAP_FOREACH_STR_KEY_PTR (& parent_ce -> function_table , key , parent_func ) {
@@ -3713,14 +3713,14 @@ static inheritance_status zend_can_early_bind(zend_class_entry *ce, zend_class_e
37133713	} ZEND_HASH_FOREACH_END ();
37143714
37153715	ZEND_HASH_MAP_FOREACH_STR_KEY_PTR (& parent_ce -> properties_info , key , parent_info ) {
3716- 		zval  * zv ;
3716+ 		const   zval  * zv ;
37173717		if  ((parent_info -> flags  &  ZEND_ACC_PRIVATE ) ||  !ZEND_TYPE_IS_SET (parent_info -> type )) {
37183718			continue ;
37193719		}
37203720
37213721		zv  =  zend_hash_find_known_hash (& ce -> properties_info , key );
37223722		if  (zv ) {
3723- 			zend_property_info  * child_info  =  Z_PTR_P (zv );
3723+ 			const   zend_property_info  * child_info  =  Z_PTR_P (zv );
37243724			if  (ZEND_TYPE_IS_SET (child_info -> type )) {
37253725				inheritance_status  status  =  verify_property_type_compatibility (parent_info , child_info , prop_get_variance (parent_info ), false, false);
37263726				if  (UNEXPECTED (status  !=  INHERITANCE_SUCCESS )) {
@@ -3731,14 +3731,14 @@ static inheritance_status zend_can_early_bind(zend_class_entry *ce, zend_class_e
37313731	} ZEND_HASH_FOREACH_END ();
37323732
37333733	ZEND_HASH_MAP_FOREACH_STR_KEY_PTR (& parent_ce -> constants_table , key , parent_const ) {
3734- 		zval  * zv ;
3734+ 		const   zval  * zv ;
37353735		if  ((ZEND_CLASS_CONST_FLAGS (parent_const ) &  ZEND_ACC_PRIVATE ) ||  !ZEND_TYPE_IS_SET (parent_const -> type )) {
37363736			continue ;
37373737		}
37383738
37393739		zv  =  zend_hash_find_known_hash (& ce -> constants_table , key );
37403740		if  (zv ) {
3741- 			zend_class_constant  * child_const  =  Z_PTR_P (zv );
3741+ 			const   zend_class_constant  * child_const  =  Z_PTR_P (zv );
37423742			if  (ZEND_TYPE_IS_SET (child_const -> type )) {
37433743				inheritance_status  status  =  class_constant_types_compatible (parent_const , child_const );
37443744				ZEND_ASSERT (status  !=  INHERITANCE_WARNING );
0 commit comments