@@ -266,7 +266,7 @@ typedef struct _zend_scc_iterator {
266266 };
267267} zend_scc_iterator ;
268268
269- static int zend_scc_next (const zend_op_array * op_array , zend_ssa * ssa , int var , zend_scc_iterator * iterator ) /* {{{ */
269+ static int zend_scc_next (const zend_op_array * op_array , const zend_ssa * ssa , int var , zend_scc_iterator * iterator ) /* {{{ */
270270{
271271 zend_ssa_phi * phi ;
272272 int use , var2 ;
@@ -487,14 +487,14 @@ ZEND_API void zend_ssa_find_sccs(const zend_op_array *op_array, zend_ssa *ssa) /
487487
488488#endif
489489
490- ZEND_API void zend_ssa_find_false_dependencies (const zend_op_array * op_array , zend_ssa * ssa ) /* {{{ */
490+ ZEND_API void zend_ssa_find_false_dependencies (const zend_op_array * op_array , const zend_ssa * ssa ) /* {{{ */
491491{
492492 zend_ssa_var * ssa_vars = ssa -> vars ;
493- zend_ssa_op * ssa_ops = ssa -> ops ;
493+ const zend_ssa_op * ssa_ops = ssa -> ops ;
494494 int ssa_vars_count = ssa -> vars_count ;
495495 zend_bitset worklist ;
496496 int i , j , use ;
497- zend_ssa_phi * p ;
497+ const zend_ssa_phi * p ;
498498 ALLOCA_FLAG (use_heap );
499499
500500 if (!op_array -> function_name || !ssa -> vars || !ssa -> ops ) {
@@ -1597,7 +1597,7 @@ ZEND_API bool zend_inference_propagate_range(const zend_op_array *op_array, cons
15971597 return 0 ;
15981598}
15991599
1600- static void zend_inference_init_range (const zend_op_array * op_array , zend_ssa * ssa , int var , bool underflow , zend_long min , zend_long max , bool overflow )
1600+ static void zend_inference_init_range (const zend_op_array * op_array , const zend_ssa * ssa , int var , bool underflow , zend_long min , zend_long max , bool overflow )
16011601{
16021602 if (underflow ) {
16031603 min = ZEND_LONG_MIN ;
@@ -1645,7 +1645,7 @@ static bool zend_inference_widening_meet(zend_ssa_var_info *var_info, zend_ssa_r
16451645 return 1 ;
16461646}
16471647
1648- static bool zend_ssa_range_widening (const zend_op_array * op_array , zend_ssa * ssa , int var , int scc )
1648+ static bool zend_ssa_range_widening (const zend_op_array * op_array , const zend_ssa * ssa , int var , int scc )
16491649{
16501650 zend_ssa_range tmp ;
16511651
@@ -1690,7 +1690,7 @@ static bool zend_inference_narrowing_meet(zend_ssa_var_info *var_info, zend_ssa_
16901690 return 1 ;
16911691}
16921692
1693- static bool zend_ssa_range_narrowing (const zend_op_array * op_array , zend_ssa * ssa , int var , int scc )
1693+ static bool zend_ssa_range_narrowing (const zend_op_array * op_array , const zend_ssa * ssa , int var , int scc )
16941694{
16951695 zend_ssa_range tmp ;
16961696
@@ -2029,18 +2029,18 @@ static uint32_t get_ssa_alias_types(zend_ssa_alias_kind alias) {
20292029 } \
20302030} while (0)
20312031
2032- static void add_usages (const zend_op_array * op_array , zend_ssa * ssa , zend_bitset worklist , int var )
2032+ static void add_usages (const zend_op_array * op_array , const zend_ssa * ssa , zend_bitset worklist , int var )
20332033{
20342034 if (ssa -> vars [var ].phi_use_chain ) {
2035- zend_ssa_phi * p = ssa -> vars [var ].phi_use_chain ;
2035+ const zend_ssa_phi * p = ssa -> vars [var ].phi_use_chain ;
20362036 do {
20372037 zend_bitset_incl (worklist , p -> ssa_var );
20382038 p = zend_ssa_next_use_phi (ssa , var , p );
20392039 } while (p );
20402040 }
20412041 if (ssa -> vars [var ].use_chain >= 0 ) {
20422042 int use = ssa -> vars [var ].use_chain ;
2043- zend_ssa_op * op ;
2043+ const zend_ssa_op * op ;
20442044
20452045 do {
20462046 op = ssa -> ops + use ;
@@ -2082,7 +2082,7 @@ static void add_usages(const zend_op_array *op_array, zend_ssa *ssa, zend_bitset
20822082 }
20832083}
20842084
2085- static void emit_type_narrowing_warning (const zend_op_array * op_array , zend_ssa * ssa , int var )
2085+ static void emit_type_narrowing_warning (const zend_op_array * op_array , const zend_ssa * ssa , int var )
20862086{
20872087 int def_op_num = ssa -> vars [var ].definition ;
20882088 const zend_op * def_opline = def_op_num >= 0 ? & op_array -> opcodes [def_op_num ] : NULL ;
@@ -2258,7 +2258,7 @@ static uint32_t assign_dim_result_type(
22582258
22592259/* For binary ops that have compound assignment operators */
22602260static uint32_t binary_op_result_type (
2261- zend_ssa * ssa , uint8_t opcode , uint32_t t1 , uint32_t t2 , int result_var ,
2261+ const zend_ssa * ssa , uint8_t opcode , uint32_t t1 , uint32_t t2 , int result_var ,
22622262 zend_long optimization_level ) {
22632263 uint32_t tmp = 0 ;
22642264 uint32_t t1_type = (t1 & MAY_BE_ANY ) | (t1 & MAY_BE_UNDEF ? MAY_BE_NULL : 0 );
@@ -2435,7 +2435,7 @@ static const zend_property_info *lookup_prop_info(const zend_class_entry *ce, ze
24352435 return NULL ;
24362436}
24372437
2438- static const zend_property_info * zend_fetch_prop_info (const zend_op_array * op_array , zend_ssa * ssa , const zend_op * opline , const zend_ssa_op * ssa_op )
2438+ static const zend_property_info * zend_fetch_prop_info (const zend_op_array * op_array , const zend_ssa * ssa , const zend_op * opline , const zend_ssa_op * ssa_op )
24392439{
24402440 const zend_property_info * prop_info = NULL ;
24412441 if (opline -> op2_type == IS_CONST ) {
@@ -2462,7 +2462,7 @@ static const zend_property_info *zend_fetch_static_prop_info(const zend_script *
24622462{
24632463 const zend_property_info * prop_info = NULL ;
24642464 if (opline -> op1_type == IS_CONST ) {
2465- zend_class_entry * ce = NULL ;
2465+ const zend_class_entry * ce = NULL ;
24662466 if (opline -> op2_type == IS_UNUSED ) {
24672467 uint32_t fetch_type = opline -> op2 .num & ZEND_FETCH_CLASS_MASK ;
24682468 switch (fetch_type ) {
@@ -2479,12 +2479,12 @@ static const zend_property_info *zend_fetch_static_prop_info(const zend_script *
24792479 break ;
24802480 }
24812481 } else if (opline -> op2_type == IS_CONST ) {
2482- zval * zv = CRT_CONSTANT (opline -> op2 );
2482+ const zval * zv = CRT_CONSTANT (opline -> op2 );
24832483 ce = zend_optimizer_get_class_entry (script , op_array , Z_STR_P (zv + 1 ));
24842484 }
24852485
24862486 if (ce ) {
2487- zval * zv = CRT_CONSTANT (opline -> op1 );
2487+ const zval * zv = CRT_CONSTANT (opline -> op1 );
24882488 prop_info = lookup_prop_info (ce , Z_STR_P (zv ), op_array -> scope );
24892489 if (prop_info && !(prop_info -> flags & ZEND_ACC_STATIC )) {
24902490 prop_info = NULL ;
@@ -2506,13 +2506,13 @@ static uint32_t zend_fetch_prop_type(const zend_script *script, const zend_prope
25062506 return zend_convert_type (script , prop_info -> type , pce );
25072507}
25082508
2509- static bool result_may_be_separated (zend_ssa * ssa , zend_ssa_op * ssa_op )
2509+ static bool result_may_be_separated (const zend_ssa * ssa , const zend_ssa_op * ssa_op )
25102510{
25112511 int tmp_var = ssa_op -> result_def ;
25122512
25132513 if (ssa -> vars [tmp_var ].use_chain >= 0
25142514 && !ssa -> vars [tmp_var ].phi_use_chain ) {
2515- zend_ssa_op * use_op = & ssa -> ops [ssa -> vars [tmp_var ].use_chain ];
2515+ const zend_ssa_op * use_op = & ssa -> ops [ssa -> vars [tmp_var ].use_chain ];
25162516
25172517 /* TODO: analyze instructions between ssa_op and use_op */
25182518 if (use_op == ssa_op + 1 ) {
@@ -3028,7 +3028,7 @@ static zend_always_inline zend_result _zend_update_type_info(
30283028 break ;
30293029 case ZEND_ASSIGN_OBJ :
30303030 if (opline -> op1_type == IS_CV ) {
3031- zend_class_entry * ce = ssa_var_info [ssa_op -> op1_use ].ce ;
3031+ const zend_class_entry * ce = ssa_var_info [ssa_op -> op1_use ].ce ;
30323032 bool add_rc = (t1 & (MAY_BE_OBJECT |MAY_BE_REF )) && (!ce
30333033 || ce -> __set
30343034 /* Non-default write_property may be set within create_object. */
@@ -4120,7 +4120,7 @@ ZEND_API zend_result zend_update_type_info(
41204120 const zend_op_array * op_array ,
41214121 zend_ssa * ssa ,
41224122 const zend_script * script ,
4123- zend_op * opline ,
4123+ const zend_op * opline ,
41244124 zend_ssa_op * ssa_op ,
41254125 const zend_op * * ssa_opcodes ,
41264126 zend_long optimization_level )
@@ -4129,7 +4129,7 @@ ZEND_API zend_result zend_update_type_info(
41294129 false);
41304130}
41314131
4132- static uint32_t get_class_entry_rank (zend_class_entry * ce ) {
4132+ static uint32_t get_class_entry_rank (const zend_class_entry * ce ) {
41334133 uint32_t rank = 0 ;
41344134 if (ce -> ce_flags & ZEND_ACC_LINKED ) {
41354135 while (ce -> parent ) {
@@ -4175,7 +4175,7 @@ static zend_class_entry *join_class_entries(
41754175 return ce1 ;
41764176}
41774177
4178- static bool safe_instanceof (zend_class_entry * ce1 , zend_class_entry * ce2 ) {
4178+ static bool safe_instanceof (const zend_class_entry * ce1 , const zend_class_entry * ce2 ) {
41794179 if (ce1 == ce2 ) {
41804180 return 1 ;
41814181 }
@@ -4188,7 +4188,7 @@ static bool safe_instanceof(zend_class_entry *ce1, zend_class_entry *ce2) {
41884188
41894189static zend_result zend_infer_types_ex (const zend_op_array * op_array , const zend_script * script , zend_ssa * ssa , zend_bitset worklist , zend_long optimization_level )
41904190{
4191- zend_basic_block * blocks = ssa -> cfg .blocks ;
4191+ const zend_basic_block * blocks = ssa -> cfg .blocks ;
41924192 zend_ssa_var * ssa_vars = ssa -> vars ;
41934193 zend_ssa_var_info * ssa_var_info = ssa -> var_info ;
41944194 int ssa_vars_count = ssa -> vars_count ;
@@ -4208,7 +4208,7 @@ static zend_result zend_infer_types_ex(const zend_op_array *op_array, const zend
42084208 tmp = get_ssa_var_info (ssa , p -> sources [0 ]);
42094209
42104210 if (!p -> has_range_constraint ) {
4211- zend_ssa_type_constraint * constraint = & p -> constraint .type ;
4211+ const zend_ssa_type_constraint * constraint = & p -> constraint .type ;
42124212 tmp &= constraint -> type_mask ;
42134213 if (!(tmp & (MAY_BE_STRING |MAY_BE_ARRAY |MAY_BE_OBJECT |MAY_BE_RESOURCE ))) {
42144214 tmp &= ~(MAY_BE_RC1 |MAY_BE_RCN );
@@ -4270,18 +4270,18 @@ static zend_result zend_infer_types_ex(const zend_op_array *op_array, const zend
42704270 return SUCCESS ;
42714271}
42724272
4273- static bool is_narrowable_instr (zend_op * opline ) {
4273+ static bool is_narrowable_instr (const zend_op * opline ) {
42744274 return opline -> opcode == ZEND_ADD || opline -> opcode == ZEND_SUB
42754275 || opline -> opcode == ZEND_MUL || opline -> opcode == ZEND_DIV ;
42764276}
42774277
4278- static bool is_effective_op1_double_cast (zend_op * opline , zval * op2 ) {
4278+ static bool is_effective_op1_double_cast (const zend_op * opline , const zval * op2 ) {
42794279 return (opline -> opcode == ZEND_ADD && Z_LVAL_P (op2 ) == 0 )
42804280 || (opline -> opcode == ZEND_SUB && Z_LVAL_P (op2 ) == 0 )
42814281 || (opline -> opcode == ZEND_MUL && Z_LVAL_P (op2 ) == 1 )
42824282 || (opline -> opcode == ZEND_DIV && Z_LVAL_P (op2 ) == 1 );
42834283}
4284- static bool is_effective_op2_double_cast (zend_op * opline , zval * op1 ) {
4284+ static bool is_effective_op2_double_cast (const zend_op * opline , const zval * op1 ) {
42854285 /* In PHP it holds that (double)(0-$int) is bitwise identical to 0.0-(double)$int,
42864286 * so allowing SUB here is fine. */
42874287 return (opline -> opcode == ZEND_ADD && Z_LVAL_P (op1 ) == 0 )
@@ -4493,19 +4493,18 @@ static zend_result zend_type_narrowing(const zend_op_array *op_array, const zend
44934493 return SUCCESS ;
44944494}
44954495
4496- static bool is_recursive_tail_call (const zend_op_array * op_array ,
4497- zend_op * opline )
4496+ static bool is_recursive_tail_call (const zend_op_array * op_array , const zend_op * opline )
44984497{
4499- zend_func_info * info = ZEND_FUNC_INFO (op_array );
4498+ const zend_func_info * info = ZEND_FUNC_INFO (op_array );
45004499
45014500 if (info -> ssa .ops && info -> ssa .vars && info -> call_map &&
45024501 info -> ssa .ops [opline - op_array -> opcodes ].op1_use >= 0 &&
45034502 info -> ssa .vars [info -> ssa .ops [opline - op_array -> opcodes ].op1_use ].definition >= 0 ) {
45044503
4505- zend_op * op = op_array -> opcodes + info -> ssa .vars [info -> ssa .ops [opline - op_array -> opcodes ].op1_use ].definition ;
4504+ const zend_op * op = op_array -> opcodes + info -> ssa .vars [info -> ssa .ops [opline - op_array -> opcodes ].op1_use ].definition ;
45064505
45074506 if (op -> opcode == ZEND_DO_UCALL ) {
4508- zend_call_info * call_info = info -> call_map [op - op_array -> opcodes ];
4507+ const zend_call_info * call_info = info -> call_map [op - op_array -> opcodes ];
45094508 if (call_info && op_array == & call_info -> callee_func -> op_array ) {
45104509 return 1 ;
45114510 }
@@ -4521,7 +4520,7 @@ uint32_t zend_get_return_info_from_signature_only(
45214520 if (func -> common .fn_flags & ZEND_ACC_HAS_RETURN_TYPE &&
45224521 (use_tentative_return_info || !ZEND_ARG_TYPE_IS_TENTATIVE (func -> common .arg_info - 1 ))
45234522 ) {
4524- zend_arg_info * ret_info = func -> common .arg_info - 1 ;
4523+ const zend_arg_info * ret_info = func -> common .arg_info - 1 ;
45254524 type = zend_fetch_arg_info_type (script , ret_info , ce );
45264525 * ce_is_instanceof = ce != NULL ;
45274526 } else {
@@ -4561,10 +4560,10 @@ static void zend_func_return_info(const zend_op_array *op_array,
45614560 bool widening ,
45624561 zend_ssa_var_info * ret )
45634562{
4564- zend_func_info * info = ZEND_FUNC_INFO (op_array );
4565- zend_ssa * ssa = & info -> ssa ;
4563+ const zend_func_info * info = ZEND_FUNC_INFO (op_array );
4564+ const zend_ssa * ssa = & info -> ssa ;
45664565 int blocks_count = info -> ssa .cfg .blocks_count ;
4567- zend_basic_block * blocks = info -> ssa .cfg .blocks ;
4566+ const zend_basic_block * blocks = info -> ssa .cfg .blocks ;
45684567 int j ;
45694568 uint32_t t1 ;
45704569 uint32_t tmp = 0 ;
@@ -4595,7 +4594,7 @@ static void zend_func_return_info(const zend_op_array *op_array,
45954594 zend_op * opline = op_array -> opcodes + blocks [j ].start + blocks [j ].len - 1 ;
45964595
45974596 if (opline -> opcode == ZEND_RETURN || opline -> opcode == ZEND_RETURN_BY_REF ) {
4598- zend_ssa_op * ssa_op = ssa -> ops ? & ssa -> ops [opline - op_array -> opcodes ] : NULL ;
4597+ const zend_ssa_op * ssa_op = ssa -> ops ? & ssa -> ops [opline - op_array -> opcodes ] : NULL ;
45994598 if (!recursive && ssa_op && info -> ssa .var_info &&
46004599 ssa_op -> op1_use >= 0 &&
46014600 info -> ssa .var_info [ssa_op -> op1_use ].recursive ) {
@@ -4642,7 +4641,7 @@ static void zend_func_return_info(const zend_op_array *op_array,
46424641 }
46434642
46444643 if (opline -> op1_type == IS_CONST ) {
4645- zval * zv = CRT_CONSTANT (opline -> op1 );
4644+ const zval * zv = CRT_CONSTANT (opline -> op1 );
46464645
46474646 if (Z_TYPE_P (zv ) == IS_LONG ) {
46484647 if (tmp_has_range < 0 ) {
@@ -4745,7 +4744,7 @@ static zend_result zend_infer_types(const zend_op_array *op_array, const zend_sc
47454744 return SUCCESS ;
47464745}
47474746
4748- static void zend_mark_cv_references (const zend_op_array * op_array , const zend_script * script , zend_ssa * ssa )
4747+ static void zend_mark_cv_references (const zend_op_array * op_array , const zend_script * script , const zend_ssa * ssa )
47494748{
47504749 int var , def ;
47514750 const zend_op * opline ;
0 commit comments