]> granicus.if.org Git - php/commitdiff
Save delayed call frame
authorDmitry Stogov <dmitry@zend.com>
Mon, 10 Feb 2020 10:42:24 +0000 (13:42 +0300)
committerDmitry Stogov <dmitry@zend.com>
Mon, 10 Feb 2020 10:43:32 +0000 (13:43 +0300)
ext/opcache/jit/zend_jit_x86.dasc

index a255b3bdd90c202cff2cc62c2584fc551fb03fd1..a3bd4a36d6fe0ce2254af1ea44c0a5b55b8fef61 100644 (file)
@@ -1823,6 +1823,13 @@ static int zend_jit_throw_cannot_pass_by_ref_stub(dasm_State **Dst)
                |       mov r1, OP:r0->result.var
        |.endif
        |       SET_Z_TYPE_INFO RX+r1, IS_UNDEF
+       |       // last EX(call) frame may be delayed
+       |       cmp RX, EX->call
+       |       je >1
+       |       mov     r1, EX->call
+       |       mov     EX:RX->prev_execute_data, r1
+       |       mov     EX->call, RX
+       |1:
        |       mov RX, r0
        |.if X64
                |       xor CARG1, CARG1