Skip to content

Commit bdafc3f

Browse files
committed
Fixed inlining calls with explicit default arguments.
1 parent 80d268e commit bdafc3f

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

Zend/Optimizer/optimize_func_calls.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,13 @@ static void zend_try_inline_call(zend_op_array *op_array, zend_op *fcall, zend_o
117117
} while (i < func->op_array.num_args);
118118
}
119119

120+
for (i = 0; i < op_array->last; i++) {
121+
// Don't inline calls with explicit default arguments.
122+
if (op_array->opcodes[i].opcode == ZEND_FETCH_DEFAULT_ARG) {
123+
return;
124+
}
125+
}
126+
120127
if (RETURN_VALUE_USED(opline)) {
121128
zval zv;
122129

Zend/tests/default_expression/new_class_parameter.phpt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,3 @@ var_dump($D);
1010
--EXPECT--
1111
object(stdClass)#1 (0) {
1212
}
13-
--XFAIL--
14-
What to do when JIT eats my opcodes? 🤷🏻‍♂️

0 commit comments

Comments
 (0)