]> granicus.if.org Git - php/commitdiff
Reserve WIN64 shadow space
authorDmitry Stogov <dmitry@zend.com>
Wed, 22 Jul 2020 14:49:51 +0000 (17:49 +0300)
committerDmitry Stogov <dmitry@zend.com>
Wed, 22 Jul 2020 14:49:51 +0000 (17:49 +0300)
ext/opcache/jit/zend_jit_x86.dasc

index 2e14192ad5f055f0fc73963930ca6f7ff5448133..856a88c8854cfa69b7d4d2d505c9938109823f9b 100644 (file)
@@ -2428,6 +2428,9 @@ static int zend_jit_trace_exit_stub(dasm_State **Dst)
        |       movsd qword [r4+16*8+2*8], xmm2
        |       movsd qword [r4+16*8+1*8], xmm1
        |       movsd qword [r4+16*8+0*8], xmm0
+       |.if X64WIN
+       |       sub r4, 32 /* shadow space */
+       |.endif
        |.else
        |       sub r4, 8*4+8*8-4 /* CPU regs + SSE regs */
        |       mov aword [r4+7*4], edi
@@ -2450,7 +2453,9 @@ static int zend_jit_trace_exit_stub(dasm_State **Dst)
        |       SAVE_OPLINE
        |       // zend_jit_trace_exit(trace_num, exit_num)
        |       EXT_CALL zend_jit_trace_exit, r0
-       |.if X64
+       |.if X64WIN
+       |       add r4, 16*8+16*8+32 /* CPU regs + SSE regs + shadow space */
+       |.elif X64
        |       add r4, 16*8+16*8 /* CPU regs + SSE regs */
        |.else
        |       add r4, 8*4+8*8 /* CPU regs + SSE regs */