Skip to content

Commit 296b7a4

Browse files
committed
Leverage RETVAL opcode specialization
1 parent 07c0b65 commit 296b7a4

File tree

2 files changed

+32
-16
lines changed

2 files changed

+32
-16
lines changed

Zend/zend_vm_def.h

+8-4
Original file line numberDiff line numberDiff line change
@@ -4156,11 +4156,13 @@ ZEND_VM_HOT_HANDLER(131, ZEND_DO_FCALL_BY_NAME, ANY, ANY, SPEC(RETVAL,OBSERVER))
41564156
SAVE_OPLINE();
41574157
EX(call) = call->prev_execute_data;
41584158

4159-
if (UNEXPECTED((fbc->common.fn_flags & (ZEND_ACC_DEPRECATED|ZEND_ACC_NODISCARD)) != 0)) {
4159+
const uint32_t no_discard = (!RETURN_VALUE_USED(opline)) * ZEND_ACC_NODISCARD;
4160+
4161+
if (UNEXPECTED((fbc->common.fn_flags & (ZEND_ACC_DEPRECATED|no_discard)) != 0)) {
41604162
if ((fbc->common.fn_flags & ZEND_ACC_DEPRECATED) != 0) {
41614163
zend_deprecated_function(fbc);
41624164
}
4163-
if (EG(exception) == NULL && (fbc->common.fn_flags & ZEND_ACC_NODISCARD) != 0 && !RETURN_VALUE_USED(opline)) {
4165+
if ((fbc->common.fn_flags & no_discard) != 0 && EG(exception) == NULL) {
41644166
zend_nodiscard_function("(B)", fbc);
41654167
}
41664168
if (UNEXPECTED(EG(exception) != NULL)) {
@@ -4265,11 +4267,13 @@ ZEND_VM_HOT_HANDLER(60, ZEND_DO_FCALL, ANY, ANY, SPEC(RETVAL,OBSERVER))
42654267
SAVE_OPLINE();
42664268
EX(call) = call->prev_execute_data;
42674269

4268-
if (UNEXPECTED((fbc->common.fn_flags & (ZEND_ACC_DEPRECATED|ZEND_ACC_NODISCARD)) != 0)) {
4270+
const uint32_t no_discard = (!RETURN_VALUE_USED(opline)) * ZEND_ACC_NODISCARD;
4271+
4272+
if (UNEXPECTED((fbc->common.fn_flags & (ZEND_ACC_DEPRECATED|no_discard)) != 0)) {
42694273
if ((fbc->common.fn_flags & ZEND_ACC_DEPRECATED) != 0) {
42704274
zend_deprecated_function(fbc);
42714275
}
4272-
if (EG(exception) == NULL && (fbc->common.fn_flags & ZEND_ACC_NODISCARD) != 0 && !RETURN_VALUE_USED(opline)) {
4276+
if ((fbc->common.fn_flags & no_discard) != 0 && EG(exception) == NULL) {
42734277
zend_nodiscard_function("(A)", fbc);
42744278
}
42754279
if (UNEXPECTED(EG(exception) != NULL)) {

Zend/zend_vm_execute.h

+24-12
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)