Skip to content

Commit 2aba4f8

Browse files
committed
Merge branch 'PHP-8.1'
* PHP-8.1: Move check for named params in fcall optimization earlier
2 parents 4dc669a + 18b4e36 commit 2aba4f8

File tree

1 file changed

+23
-23
lines changed

1 file changed

+23
-23
lines changed

Zend/Optimizer/optimize_func_calls.c

+23-23
Original file line numberDiff line numberDiff line change
@@ -239,8 +239,8 @@ void zend_optimize_func_calls(zend_op_array *op_array, zend_optimizer_ctx *ctx)
239239
case ZEND_FETCH_STATIC_PROP_FUNC_ARG:
240240
case ZEND_FETCH_OBJ_FUNC_ARG:
241241
case ZEND_FETCH_DIM_FUNC_ARG:
242-
if (call_stack[call - 1].func
243-
&& call_stack[call - 1].func_arg_num != (uint32_t)-1) {
242+
if (call_stack[call - 1].func_arg_num != (uint32_t)-1
243+
&& has_known_send_mode(&call_stack[call - 1], call_stack[call - 1].func_arg_num)) {
244244
if (ARG_SHOULD_BE_SENT_BY_REF(call_stack[call - 1].func, call_stack[call - 1].func_arg_num)) {
245245
if (opline->opcode != ZEND_FETCH_STATIC_PROP_FUNC_ARG) {
246246
opline->opcode -= 9;
@@ -265,12 +265,12 @@ void zend_optimize_func_calls(zend_op_array *op_array, zend_optimizer_ctx *ctx)
265265
}
266266
break;
267267
case ZEND_SEND_VAL_EX:
268-
if (has_known_send_mode(&call_stack[call - 1], opline->op2.num)) {
269-
if (opline->op2_type == IS_CONST) {
270-
call_stack[call - 1].try_inline = 0;
271-
break;
272-
}
268+
if (opline->op2_type == IS_CONST) {
269+
call_stack[call - 1].try_inline = 0;
270+
break;
271+
}
273272

273+
if (has_known_send_mode(&call_stack[call - 1], opline->op2.num)) {
274274
if (ARG_MUST_BE_SENT_BY_REF(call_stack[call - 1].func, opline->op2.num)) {
275275
/* We won't convert it into_DO_FCALL to emit error at run-time */
276276
call_stack[call - 1].opline = NULL;
@@ -280,25 +280,25 @@ void zend_optimize_func_calls(zend_op_array *op_array, zend_optimizer_ctx *ctx)
280280
}
281281
break;
282282
case ZEND_CHECK_FUNC_ARG:
283-
if (has_known_send_mode(&call_stack[call - 1], opline->op2.num)) {
284-
if (opline->op2_type == IS_CONST) {
285-
call_stack[call - 1].try_inline = 0;
286-
call_stack[call - 1].func_arg_num = (uint32_t)-1;
287-
break;
288-
}
283+
if (opline->op2_type == IS_CONST) {
284+
call_stack[call - 1].try_inline = 0;
285+
call_stack[call - 1].func_arg_num = (uint32_t)-1;
286+
break;
287+
}
289288

289+
if (has_known_send_mode(&call_stack[call - 1], opline->op2.num)) {
290290
call_stack[call - 1].func_arg_num = opline->op2.num;
291291
MAKE_NOP(opline);
292292
}
293293
break;
294294
case ZEND_SEND_VAR_EX:
295295
case ZEND_SEND_FUNC_ARG:
296-
if (has_known_send_mode(&call_stack[call - 1], opline->op2.num)) {
297-
if (opline->op2_type == IS_CONST) {
298-
call_stack[call - 1].try_inline = 0;
299-
break;
300-
}
296+
if (opline->op2_type == IS_CONST) {
297+
call_stack[call - 1].try_inline = 0;
298+
break;
299+
}
301300

301+
if (has_known_send_mode(&call_stack[call - 1], opline->op2.num)) {
302302
call_stack[call - 1].func_arg_num = (uint32_t)-1;
303303
if (ARG_SHOULD_BE_SENT_BY_REF(call_stack[call - 1].func, opline->op2.num)) {
304304
opline->opcode = ZEND_SEND_REF;
@@ -308,12 +308,12 @@ void zend_optimize_func_calls(zend_op_array *op_array, zend_optimizer_ctx *ctx)
308308
}
309309
break;
310310
case ZEND_SEND_VAR_NO_REF_EX:
311-
if (has_known_send_mode(&call_stack[call - 1], opline->op2.num)) {
312-
if (opline->op2_type == IS_CONST) {
313-
call_stack[call - 1].try_inline = 0;
314-
break;
315-
}
311+
if (opline->op2_type == IS_CONST) {
312+
call_stack[call - 1].try_inline = 0;
313+
break;
314+
}
316315

316+
if (has_known_send_mode(&call_stack[call - 1], opline->op2.num)) {
317317
if (ARG_MUST_BE_SENT_BY_REF(call_stack[call - 1].func, opline->op2.num)) {
318318
opline->opcode = ZEND_SEND_VAR_NO_REF;
319319
} else if (ARG_MAY_BE_SENT_BY_REF(call_stack[call - 1].func, opline->op2.num)) {

0 commit comments

Comments
 (0)