Skip to content

Commit 798d168

Browse files
committed
Make update_opN_const implementation symmetric
So the main structure is the same...
1 parent 37f3425 commit 798d168

File tree

1 file changed

+11
-13
lines changed

1 file changed

+11
-13
lines changed

ext/opcache/Optimizer/zend_optimizer.c

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,10 @@ static inline void drop_leading_backslash(zval *val) {
132132
}
133133
}
134134

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+
}
135139
static inline void alloc_cache_slots_op2(zend_op_array *op_array, zend_op *opline, uint32_t num) {
136140
Z_CACHE_SLOT(op_array->literals[opline->op2.constant]) = op_array->cache_size;
137141
op_array->cache_size += num * sizeof(void *);
@@ -160,19 +164,16 @@ int zend_optimizer_update_op1_const(zend_op_array *op_array,
160164
case ZEND_FREE:
161165
MAKE_NOP(opline);
162166
zval_dtor(val);
163-
break;
167+
return 1;
164168
case ZEND_INIT_STATIC_METHOD_CALL:
165169
case ZEND_CATCH:
166170
case ZEND_FETCH_CONSTANT:
167171
case ZEND_DEFINED:
168172
case ZEND_NEW:
169173
REQUIRES_STRING(val);
170-
ZEND_OP1_TYPE(opline) = IS_CONST;
171174
drop_leading_backslash(val);
172175
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);
176177
zend_optimizer_add_literal_string(op_array, zend_string_tolower(Z_STR_P(val)));
177178
break;
178179
case ZEND_FETCH_R:
@@ -182,27 +183,24 @@ int zend_optimizer_update_op1_const(zend_op_array *op_array,
182183
case ZEND_FETCH_UNSET:
183184
case ZEND_FETCH_FUNC_ARG:
184185
TO_STRING_NOWARN(val);
185-
ZEND_OP1_TYPE(opline) = IS_CONST;
186186
opline->op1.constant = zend_optimizer_add_literal(op_array, val);
187-
zend_string_hash_val(Z_STR(ZEND_OP1_LITERAL(opline)));
188187
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);
191189
}
192190
break;
193191
case ZEND_CONCAT:
194192
case ZEND_FAST_CONCAT:
195193
TO_STRING_NOWARN(val);
196194
/* break missing intentionally */
197195
default:
198-
ZEND_OP1_TYPE(opline) = IS_CONST;
199196
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-
}
203197
break;
204198
}
205199

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+
}
206204
return 1;
207205
}
208206

0 commit comments

Comments
 (0)