@@ -132,6 +132,10 @@ static inline void drop_leading_backslash(zval *val) {
132
132
}
133
133
}
134
134
135
+ static inline void alloc_cache_slots_op1 (zend_op_array * op_array , zend_op * opline , uint32_t num ) {
136
+ Z_CACHE_SLOT (op_array -> literals [opline -> op1 .constant ]) = op_array -> cache_size ;
137
+ op_array -> cache_size += num * sizeof (void * );
138
+ }
135
139
static inline void alloc_cache_slots_op2 (zend_op_array * op_array , zend_op * opline , uint32_t num ) {
136
140
Z_CACHE_SLOT (op_array -> literals [opline -> op2 .constant ]) = op_array -> cache_size ;
137
141
op_array -> cache_size += num * sizeof (void * );
@@ -160,19 +164,16 @@ int zend_optimizer_update_op1_const(zend_op_array *op_array,
160
164
case ZEND_FREE :
161
165
MAKE_NOP (opline );
162
166
zval_dtor (val );
163
- break ;
167
+ return 1 ;
164
168
case ZEND_INIT_STATIC_METHOD_CALL :
165
169
case ZEND_CATCH :
166
170
case ZEND_FETCH_CONSTANT :
167
171
case ZEND_DEFINED :
168
172
case ZEND_NEW :
169
173
REQUIRES_STRING (val );
170
- ZEND_OP1_TYPE (opline ) = IS_CONST ;
171
174
drop_leading_backslash (val );
172
175
opline -> op1 .constant = zend_optimizer_add_literal (op_array , val );
173
- zend_string_hash_val (Z_STR (ZEND_OP1_LITERAL (opline )));
174
- Z_CACHE_SLOT (op_array -> literals [opline -> op1 .constant ]) = op_array -> cache_size ;
175
- op_array -> cache_size += sizeof (void * );
176
+ alloc_cache_slots_op1 (op_array , opline , 1 );
176
177
zend_optimizer_add_literal_string (op_array , zend_string_tolower (Z_STR_P (val )));
177
178
break ;
178
179
case ZEND_FETCH_R :
@@ -182,27 +183,24 @@ int zend_optimizer_update_op1_const(zend_op_array *op_array,
182
183
case ZEND_FETCH_UNSET :
183
184
case ZEND_FETCH_FUNC_ARG :
184
185
TO_STRING_NOWARN (val );
185
- ZEND_OP1_TYPE (opline ) = IS_CONST ;
186
186
opline -> op1 .constant = zend_optimizer_add_literal (op_array , val );
187
- zend_string_hash_val (Z_STR (ZEND_OP1_LITERAL (opline )));
188
187
if (opline -> extended_value == ZEND_FETCH_STATIC_MEMBER ) {
189
- Z_CACHE_SLOT (op_array -> literals [opline -> op1 .constant ]) = op_array -> cache_size ;
190
- op_array -> cache_size += 2 * sizeof (void * );
188
+ alloc_cache_slots_op1 (op_array , opline , 2 );
191
189
}
192
190
break ;
193
191
case ZEND_CONCAT :
194
192
case ZEND_FAST_CONCAT :
195
193
TO_STRING_NOWARN (val );
196
194
/* break missing intentionally */
197
195
default :
198
- ZEND_OP1_TYPE (opline ) = IS_CONST ;
199
196
opline -> op1 .constant = zend_optimizer_add_literal (op_array , val );
200
- if (Z_TYPE_P (val ) == IS_STRING ) {
201
- zend_string_hash_val (Z_STR (ZEND_OP1_LITERAL (opline )));
202
- }
203
197
break ;
204
198
}
205
199
200
+ ZEND_OP1_TYPE (opline ) = IS_CONST ;
201
+ if (Z_TYPE (ZEND_OP1_LITERAL (opline )) == IS_STRING ) {
202
+ zend_string_hash_val (Z_STR (ZEND_OP1_LITERAL (opline )));
203
+ }
206
204
return 1 ;
207
205
}
208
206
0 commit comments