Skip to content

Commit

Permalink
Leverage RETVAL opcode specialization
Browse files Browse the repository at this point in the history
  • Loading branch information
TimWolla committed Jan 27, 2025
1 parent 07c0b65 commit 296b7a4
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 16 deletions.
12 changes: 8 additions & 4 deletions Zend/zend_vm_def.h
Original file line number Diff line number Diff line change
Expand Up @@ -4156,11 +4156,13 @@ ZEND_VM_HOT_HANDLER(131, ZEND_DO_FCALL_BY_NAME, ANY, ANY, SPEC(RETVAL,OBSERVER))
SAVE_OPLINE();
EX(call) = call->prev_execute_data;

if (UNEXPECTED((fbc->common.fn_flags & (ZEND_ACC_DEPRECATED|ZEND_ACC_NODISCARD)) != 0)) {
const uint32_t no_discard = (!RETURN_VALUE_USED(opline)) * ZEND_ACC_NODISCARD;

if (UNEXPECTED((fbc->common.fn_flags & (ZEND_ACC_DEPRECATED|no_discard)) != 0)) {
if ((fbc->common.fn_flags & ZEND_ACC_DEPRECATED) != 0) {
zend_deprecated_function(fbc);
}
if (EG(exception) == NULL && (fbc->common.fn_flags & ZEND_ACC_NODISCARD) != 0 && !RETURN_VALUE_USED(opline)) {
if ((fbc->common.fn_flags & no_discard) != 0 && EG(exception) == NULL) {
zend_nodiscard_function("(B)", fbc);
}
if (UNEXPECTED(EG(exception) != NULL)) {
Expand Down Expand Up @@ -4265,11 +4267,13 @@ ZEND_VM_HOT_HANDLER(60, ZEND_DO_FCALL, ANY, ANY, SPEC(RETVAL,OBSERVER))
SAVE_OPLINE();
EX(call) = call->prev_execute_data;

if (UNEXPECTED((fbc->common.fn_flags & (ZEND_ACC_DEPRECATED|ZEND_ACC_NODISCARD)) != 0)) {
const uint32_t no_discard = (!RETURN_VALUE_USED(opline)) * ZEND_ACC_NODISCARD;

if (UNEXPECTED((fbc->common.fn_flags & (ZEND_ACC_DEPRECATED|no_discard)) != 0)) {
if ((fbc->common.fn_flags & ZEND_ACC_DEPRECATED) != 0) {
zend_deprecated_function(fbc);
}
if (EG(exception) == NULL && (fbc->common.fn_flags & ZEND_ACC_NODISCARD) != 0 && !RETURN_VALUE_USED(opline)) {
if ((fbc->common.fn_flags & no_discard) != 0 && EG(exception) == NULL) {
zend_nodiscard_function("(A)", fbc);
}
if (UNEXPECTED(EG(exception) != NULL)) {
Expand Down
36 changes: 24 additions & 12 deletions Zend/zend_vm_execute.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 296b7a4

Please sign in to comment.