Skip to content

Commit 14320df

Browse files
committed
Merge branch 'PHP-8.4'
* PHP-8.4: JIT: Set valid EX(opline) before calling gc_possible_root()
2 parents 07cef9f + 997431d commit 14320df

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

ext/opcache/jit/zend_jit_ir.c

+12
Original file line numberDiff line numberDiff line change
@@ -1826,6 +1826,9 @@ static void jit_ZVAL_PTR_DTOR(zend_jit_ctx *jit,
18261826
ir_END_list(end_inputs);
18271827
ir_IF_FALSE(if_may_not_leak);
18281828

1829+
if (opline) {
1830+
jit_SET_EX_OPLINE(jit, opline);
1831+
}
18291832
ir_CALL_1(IR_VOID, ir_CONST_FC_FUNC(gc_possible_root), ref);
18301833
}
18311834

@@ -6518,6 +6521,9 @@ static int zend_jit_assign_to_variable(zend_jit_ctx *jit,
65186521
if (RC_MAY_BE_N(var_info) && (var_info & (MAY_BE_ARRAY|MAY_BE_OBJECT)) != 0) {
65196522
ir_ref if_may_leak = jit_if_GC_MAY_NOT_LEAK(jit, ref);
65206523
ir_IF_FALSE(if_may_leak);
6524+
if (opline) {
6525+
jit_SET_EX_OPLINE(jit, opline);
6526+
}
65216527
ir_CALL_1(IR_VOID, ir_CONST_FC_FUNC(gc_possible_root), ref);
65226528

65236529
if (Z_MODE(var_addr) == IS_REG || Z_MODE(res_addr) == IS_REG) {
@@ -6545,6 +6551,9 @@ static int zend_jit_assign_to_variable(zend_jit_ctx *jit,
65456551
if (var_info & (MAY_BE_ARRAY|MAY_BE_OBJECT)) {
65466552
ir_ref if_may_leak = jit_if_GC_MAY_NOT_LEAK(jit, ref);
65476553
ir_IF_FALSE(if_may_leak);
6554+
if (opline) {
6555+
jit_SET_EX_OPLINE(jit, opline);
6556+
}
65486557
ir_CALL_1(IR_VOID, ir_CONST_FC_FUNC(gc_possible_root), ref);
65496558
ir_END_list(simple_inputs);
65506559
ir_IF_TRUE(if_may_leak);
@@ -11410,6 +11419,9 @@ static int zend_jit_bind_global(zend_jit_ctx *jit, const zend_op *opline, uint32
1141011419
ir_IF_TRUE(if_may_not_leak);
1141111420
ir_END_list(end_inputs);
1141211421
ir_IF_FALSE(if_may_not_leak);
11422+
if (opline) {
11423+
jit_SET_EX_OPLINE(jit, opline);
11424+
}
1141311425
ir_CALL_1(IR_VOID, ir_CONST_FC_FUNC(gc_possible_root), ref2);
1141411426
}
1141511427
if (op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF) - (MAY_BE_OBJECT|MAY_BE_RESOURCE))) {

0 commit comments

Comments
 (0)