Skip to content

Commit 0a7233f

Browse files
committed
Avoid reloading
1 parent 358a6b4 commit 0a7233f

File tree

2 files changed

+18
-27
lines changed

2 files changed

+18
-27
lines changed

Zend/zend_vm_def.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4314,10 +4314,9 @@ ZEND_VM_INLINE_HANDLER(62, ZEND_RETURN, CONST|TMP|VAR|CV, ANY)
43144314
}
43154315
} else if (!return_value) {
43164316
if (OP1_TYPE & (IS_VAR|IS_TMP_VAR)) {
4317-
zval *free_op1 = EX_VAR(opline->op1.var);
4318-
if (Z_REFCOUNTED_P(free_op1) && !Z_DELREF_P(free_op1)) {
4317+
if (Z_REFCOUNTED_P(retval_ptr) && !Z_DELREF_P(retval_ptr)) {
43194318
SAVE_OPLINE();
4320-
rc_dtor_func(Z_COUNTED_P(free_op1));
4319+
rc_dtor_func(Z_COUNTED_P(retval_ptr));
43214320
}
43224321
}
43234322
} else {

Zend/zend_vm_execute.h

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3492,10 +3492,9 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_SPEC_CONST_
34923492
}
34933493
} else if (!return_value) {
34943494
if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
3495-
zval *free_op1 = EX_VAR(opline->op1.var);
3496-
if (Z_REFCOUNTED_P(free_op1) && !Z_DELREF_P(free_op1)) {
3495+
if (Z_REFCOUNTED_P(retval_ptr) && !Z_DELREF_P(retval_ptr)) {
34973496
SAVE_OPLINE();
3498-
rc_dtor_func(Z_COUNTED_P(free_op1));
3497+
rc_dtor_func(Z_COUNTED_P(retval_ptr));
34993498
}
35003499
}
35013500
} else {
@@ -17683,10 +17682,9 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_SPEC_TMP_HA
1768317682
}
1768417683
} else if (!return_value) {
1768517684
if (IS_TMP_VAR & (IS_VAR|IS_TMP_VAR)) {
17686-
zval *free_op1 = EX_VAR(opline->op1.var);
17687-
if (Z_REFCOUNTED_P(free_op1) && !Z_DELREF_P(free_op1)) {
17685+
if (Z_REFCOUNTED_P(retval_ptr) && !Z_DELREF_P(retval_ptr)) {
1768817686
SAVE_OPLINE();
17689-
rc_dtor_func(Z_COUNTED_P(free_op1));
17687+
rc_dtor_func(Z_COUNTED_P(retval_ptr));
1769017688
}
1769117689
}
1769217690
} else {
@@ -20449,10 +20447,9 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_SPEC_VAR_HA
2044920447
}
2045020448
} else if (!return_value) {
2045120449
if (IS_VAR & (IS_VAR|IS_TMP_VAR)) {
20452-
zval *free_op1 = EX_VAR(opline->op1.var);
20453-
if (Z_REFCOUNTED_P(free_op1) && !Z_DELREF_P(free_op1)) {
20450+
if (Z_REFCOUNTED_P(retval_ptr) && !Z_DELREF_P(retval_ptr)) {
2045420451
SAVE_OPLINE();
20455-
rc_dtor_func(Z_COUNTED_P(free_op1));
20452+
rc_dtor_func(Z_COUNTED_P(retval_ptr));
2045620453
}
2045720454
}
2045820455
} else {
@@ -37404,10 +37401,9 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_SPEC_CV_HAN
3740437401
}
3740537402
} else if (!return_value) {
3740637403
if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
37407-
zval *free_op1 = EX_VAR(opline->op1.var);
37408-
if (Z_REFCOUNTED_P(free_op1) && !Z_DELREF_P(free_op1)) {
37404+
if (Z_REFCOUNTED_P(retval_ptr) && !Z_DELREF_P(retval_ptr)) {
3740937405
SAVE_OPLINE();
37410-
rc_dtor_func(Z_COUNTED_P(free_op1));
37406+
rc_dtor_func(Z_COUNTED_P(retval_ptr));
3741137407
}
3741237408
}
3741337409
} else {
@@ -54463,10 +54459,9 @@ ZEND_API void execute_ex(zend_execute_data *ex)
5446354459
}
5446454460
} else if (!return_value) {
5446554461
if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
54466-
zval *free_op1 = EX_VAR(opline->op1.var);
54467-
if (Z_REFCOUNTED_P(free_op1) && !Z_DELREF_P(free_op1)) {
54462+
if (Z_REFCOUNTED_P(retval_ptr) && !Z_DELREF_P(retval_ptr)) {
5446854463
SAVE_OPLINE();
54469-
rc_dtor_func(Z_COUNTED_P(free_op1));
54464+
rc_dtor_func(Z_COUNTED_P(retval_ptr));
5447054465
}
5447154466
}
5447254467
} else {
@@ -55937,10 +55932,9 @@ ZEND_API void execute_ex(zend_execute_data *ex)
5593755932
}
5593855933
} else if (!return_value) {
5593955934
if (IS_TMP_VAR & (IS_VAR|IS_TMP_VAR)) {
55940-
zval *free_op1 = EX_VAR(opline->op1.var);
55941-
if (Z_REFCOUNTED_P(free_op1) && !Z_DELREF_P(free_op1)) {
55935+
if (Z_REFCOUNTED_P(retval_ptr) && !Z_DELREF_P(retval_ptr)) {
5594255936
SAVE_OPLINE();
55943-
rc_dtor_func(Z_COUNTED_P(free_op1));
55937+
rc_dtor_func(Z_COUNTED_P(retval_ptr));
5594455938
}
5594555939
}
5594655940
} else {
@@ -56223,10 +56217,9 @@ ZEND_API void execute_ex(zend_execute_data *ex)
5622356217
}
5622456218
} else if (!return_value) {
5622556219
if (IS_VAR & (IS_VAR|IS_TMP_VAR)) {
56226-
zval *free_op1 = EX_VAR(opline->op1.var);
56227-
if (Z_REFCOUNTED_P(free_op1) && !Z_DELREF_P(free_op1)) {
56220+
if (Z_REFCOUNTED_P(retval_ptr) && !Z_DELREF_P(retval_ptr)) {
5622856221
SAVE_OPLINE();
56229-
rc_dtor_func(Z_COUNTED_P(free_op1));
56222+
rc_dtor_func(Z_COUNTED_P(retval_ptr));
5623056223
}
5623156224
}
5623256225
} else {
@@ -57305,10 +57298,9 @@ ZEND_API void execute_ex(zend_execute_data *ex)
5730557298
}
5730657299
} else if (!return_value) {
5730757300
if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
57308-
zval *free_op1 = EX_VAR(opline->op1.var);
57309-
if (Z_REFCOUNTED_P(free_op1) && !Z_DELREF_P(free_op1)) {
57301+
if (Z_REFCOUNTED_P(retval_ptr) && !Z_DELREF_P(retval_ptr)) {
5731057302
SAVE_OPLINE();
57311-
rc_dtor_func(Z_COUNTED_P(free_op1));
57303+
rc_dtor_func(Z_COUNTED_P(retval_ptr));
5731257304
}
5731357305
}
5731457306
} else {

0 commit comments

Comments
 (0)