3232/* Checks if a constant (like "true") may be replaced by its value */
3333bool zend_optimizer_get_persistent_constant (zend_string * name , zval * result , bool copy )
3434{
35- zend_constant * c = zend_hash_find_ptr (EG (zend_constants ), name );
35+ const zend_constant * c = zend_hash_find_ptr (EG (zend_constants ), name );
3636 if (c ) {
3737 if ((ZEND_CONSTANT_FLAGS (c ) & CONST_PERSISTENT )
3838 && !(ZEND_CONSTANT_FLAGS (c ) & CONST_DEPRECATED )
@@ -62,17 +62,17 @@ bool zend_optimizer_get_persistent_constant(zend_string *name, zval *result, boo
6262#define VAR_SOURCE (op ) Tsource[VAR_NUM(op.var)]
6363#define SET_VAR_SOURCE (opline ) Tsource[VAR_NUM(opline->result.var)] = opline
6464
65- static void strip_leading_nops (zend_op_array * op_array , zend_basic_block * b )
65+ static void strip_leading_nops (const zend_op_array * op_array , zend_basic_block * b )
6666{
67- zend_op * opcodes = op_array -> opcodes ;
67+ const zend_op * opcodes = op_array -> opcodes ;
6868
6969 do {
7070 b -> start ++ ;
7171 b -> len -- ;
7272 } while (b -> len > 0 && opcodes [b -> start ].opcode == ZEND_NOP );
7373}
7474
75- static void strip_nops (zend_op_array * op_array , zend_basic_block * b )
75+ static void strip_nops (const zend_op_array * op_array , zend_basic_block * b )
7676{
7777 uint32_t i , j ;
7878
@@ -106,7 +106,7 @@ static void strip_nops(zend_op_array *op_array, zend_basic_block *b)
106106 }
107107}
108108
109- static int get_const_switch_target (zend_cfg * cfg , zend_op_array * op_array , zend_basic_block * block , zend_op * opline , zval * val ) {
109+ static int get_const_switch_target (const zend_cfg * cfg , const zend_op_array * op_array , const zend_basic_block * block , zend_op * opline , const zval * val ) {
110110 HashTable * jumptable = Z_ARRVAL (ZEND_OP2_LITERAL (opline ));
111111 zval * zv ;
112112 if ((opline -> opcode == ZEND_SWITCH_LONG && Z_TYPE_P (val ) != IS_LONG )
@@ -1009,10 +1009,10 @@ static void zend_optimize_block(zend_basic_block *block, zend_op_array *op_array
10091009}
10101010
10111011/* Rebuild plain (optimized) op_array from CFG */
1012- static void assemble_code_blocks (zend_cfg * cfg , zend_op_array * op_array , zend_optimizer_ctx * ctx )
1012+ static void assemble_code_blocks (const zend_cfg * cfg , zend_op_array * op_array , zend_optimizer_ctx * ctx )
10131013{
10141014 zend_basic_block * blocks = cfg -> blocks ;
1015- zend_basic_block * end = blocks + cfg -> blocks_count ;
1015+ const zend_basic_block * end = blocks + cfg -> blocks_count ;
10161016 zend_basic_block * b ;
10171017 zend_op * new_opcodes ;
10181018 zend_op * opline ;
@@ -1025,7 +1025,7 @@ static void assemble_code_blocks(zend_cfg *cfg, zend_op_array *op_array, zend_op
10251025 if (b -> flags & (ZEND_BB_REACHABLE |ZEND_BB_UNREACHABLE_FREE )) {
10261026 opline = op_array -> opcodes + b -> start + b -> len - 1 ;
10271027 if (opline -> opcode == ZEND_JMP ) {
1028- zend_basic_block * next = b + 1 ;
1028+ const zend_basic_block * next = b + 1 ;
10291029
10301030 while (next < end && !(next -> flags & ZEND_BB_REACHABLE )) {
10311031 next ++ ;
@@ -1042,8 +1042,8 @@ static void assemble_code_blocks(zend_cfg *cfg, zend_op_array *op_array, zend_op
10421042 len += b -> len ;
10431043 } else {
10441044 /* this block will not be used, delete all constants there */
1045- zend_op * op = op_array -> opcodes + b -> start ;
1046- zend_op * end = op + b -> len ;
1045+ const zend_op * op = op_array -> opcodes + b -> start ;
1046+ const zend_op * end = op + b -> len ;
10471047 for (; op < end ; op ++ ) {
10481048 if (op -> op1_type == IS_CONST ) {
10491049 literal_dtor (& ZEND_OP1_LITERAL (op ));
@@ -1109,7 +1109,7 @@ static void assemble_code_blocks(zend_cfg *cfg, zend_op_array *op_array, zend_op
11091109 case ZEND_SWITCH_STRING :
11101110 case ZEND_MATCH :
11111111 {
1112- HashTable * jumptable = Z_ARRVAL (ZEND_OP2_LITERAL (opline ));
1112+ const HashTable * jumptable = Z_ARRVAL (ZEND_OP2_LITERAL (opline ));
11131113 zval * zv ;
11141114 uint32_t s = 0 ;
11151115 ZEND_ASSERT (b -> successors_count == (opline -> opcode == ZEND_MATCH ? 1 : 2 ) + zend_hash_num_elements (jumptable ));
@@ -1161,7 +1161,7 @@ static void assemble_code_blocks(zend_cfg *cfg, zend_op_array *op_array, zend_op
11611161
11621162 if (op_array -> fn_flags & ZEND_ACC_HAS_FINALLY_BLOCK ) {
11631163 zend_op * opline = new_opcodes ;
1164- zend_op * end = opline + len ;
1164+ const zend_op * end = opline + len ;
11651165 while (opline < end ) {
11661166 if (opline -> opcode == ZEND_FAST_RET &&
11671167 opline -> op2 .num != (uint32_t )-1 &&
@@ -1184,7 +1184,7 @@ static void assemble_code_blocks(zend_cfg *cfg, zend_op_array *op_array, zend_op
11841184 }
11851185}
11861186
1187- static zend_always_inline zend_basic_block * get_target_block (const zend_cfg * cfg , zend_basic_block * block , int n , uint32_t * opt_count )
1187+ static zend_always_inline zend_basic_block * get_target_block (const zend_cfg * cfg , const zend_basic_block * block , int n , uint32_t * opt_count )
11881188{
11891189 int b ;
11901190 zend_basic_block * target_block = cfg -> blocks + block -> successors [n ];
@@ -1200,7 +1200,7 @@ static zend_always_inline zend_basic_block *get_target_block(const zend_cfg *cfg
12001200 return target_block ;
12011201}
12021202
1203- static zend_always_inline zend_basic_block * get_follow_block (const zend_cfg * cfg , zend_basic_block * block , int n , uint32_t * opt_count )
1203+ static zend_always_inline zend_basic_block * get_follow_block (const zend_cfg * cfg , const zend_basic_block * block , int n , uint32_t * opt_count )
12041204{
12051205 int b ;
12061206 zend_basic_block * target_block = cfg -> blocks + block -> successors [n ];
@@ -1219,7 +1219,7 @@ static zend_always_inline zend_basic_block *get_follow_block(const zend_cfg *cfg
12191219static zend_always_inline zend_basic_block * get_next_block (const zend_cfg * cfg , zend_basic_block * block )
12201220{
12211221 zend_basic_block * next_block = block + 1 ;
1222- zend_basic_block * end = cfg -> blocks + cfg -> blocks_count ;
1222+ const zend_basic_block * end = cfg -> blocks + cfg -> blocks_count ;
12231223
12241224 while (1 ) {
12251225 if (next_block == end ) {
@@ -1237,7 +1237,7 @@ static zend_always_inline zend_basic_block *get_next_block(const zend_cfg *cfg,
12371237
12381238
12391239/* we use "jmp_hitlist" to avoid infinity loops during jmp optimization */
1240- static zend_always_inline bool in_hitlist (int target , int * jmp_hitlist , int jmp_hitlist_count )
1240+ static zend_always_inline bool in_hitlist (int target , const int * jmp_hitlist , int jmp_hitlist_count )
12411241{
12421242 int i ;
12431243
@@ -1483,7 +1483,7 @@ static void zend_jmp_optimization(zend_basic_block *block, zend_op_array *op_arr
14831483
14841484/* Find a set of variables which are used outside of the block where they are
14851485 * defined. We won't apply some optimization patterns for such variables. */
1486- static void zend_t_usage (zend_cfg * cfg , zend_op_array * op_array , zend_bitset used_ext , zend_optimizer_ctx * ctx )
1486+ static void zend_t_usage (const zend_cfg * cfg , const zend_op_array * op_array , zend_bitset used_ext , zend_optimizer_ctx * ctx )
14871487{
14881488 int n ;
14891489 zend_basic_block * block , * next_block ;
@@ -1687,7 +1687,7 @@ static void zend_t_usage(zend_cfg *cfg, zend_op_array *op_array, zend_bitset use
16871687 zend_arena_release (& ctx -> arena , checkpoint );
16881688}
16891689
1690- static void zend_merge_blocks (zend_op_array * op_array , zend_cfg * cfg , uint32_t * opt_count )
1690+ static void zend_merge_blocks (const zend_op_array * op_array , const zend_cfg * cfg , uint32_t * opt_count )
16911691{
16921692 int i ;
16931693 zend_basic_block * b , * bb ;
@@ -1707,7 +1707,7 @@ static void zend_merge_blocks(zend_op_array *op_array, zend_cfg *cfg, uint32_t *
17071707
17081708 for (bb = prev + 1 ; bb != b ; bb ++ ) {
17091709 zend_op * op = op_array -> opcodes + bb -> start ;
1710- zend_op * end = op + bb -> len ;
1710+ const zend_op * end = op + bb -> len ;
17111711 while (op < end ) {
17121712 if (op -> op1_type == IS_CONST ) {
17131713 literal_dtor (& ZEND_OP1_LITERAL (op ));
0 commit comments