Skip to content

Commit 467c0b0

Browse files
committed
TAILLCALL VM: Do not return in ZEND_VM_ENTER_EX, ZEND_VM_LEAVE
1 parent 46357cb commit 467c0b0

1 file changed

Lines changed: 4 additions & 0 deletions

File tree

Zend/zend_vm_gen.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2126,6 +2126,8 @@ function gen_executor($f, $skl, $spec, $kind, $executor_name, $initializer_name)
21262126
out($f,"# undef ZEND_VM_RETURN\n");
21272127
out($f,"# undef ZEND_VM_DISPATCH_TO_HELPER\n");
21282128
out($f,"# undef ZEND_VM_INTERRUPT\n");
2129+
out($f,"# undef ZEND_VM_ENTER_EX\n");
2130+
out($f,"# undef ZEND_VM_LEAVE\n");
21292131
out($f,"\n");
21302132
out($f,"# define ZEND_VM_TAIL_CALL(call) ZEND_MUSTTAIL return call\n");
21312133
out($f,"# define ZEND_VM_CONTINUE() ZEND_VM_TAIL_CALL(opline->handler(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU))\n");
@@ -2137,6 +2139,8 @@ function gen_executor($f, $skl, $spec, $kind, $executor_name, $initializer_name)
21372139
out($f," } while (0)\n");
21382140
out($f,"# define ZEND_VM_DISPATCH_TO_LEAVE_HELPER(helper) opline = &call_leave_op; SAVE_OPLINE(); ZEND_VM_CONTINUE()\n");
21392141
out($f,"# define ZEND_VM_INTERRUPT() ZEND_VM_TAIL_CALL(zend_interrupt_helper".($spec?"_SPEC":"")."_TAILCALL(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU))\n");
2142+
out($f,"# define ZEND_VM_ENTER_EX() ZEND_VM_CONTINUE()\n");
2143+
out($f,"# define ZEND_VM_LEAVE() ZEND_VM_CONTINUE()\n");
21402144
out($f,"\n");
21412145
out($f,"static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV zend_interrupt_helper".($spec?"_SPEC":"")."_TAILCALL(ZEND_OPCODE_HANDLER_ARGS);\n");
21422146
out($f,"static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV ZEND_NULL_TAILCALL_HANDLER(ZEND_OPCODE_HANDLER_ARGS);\n");

0 commit comments

Comments
 (0)