From: Dmitry Stogov Date: Wed, 3 Jun 2020 21:17:13 +0000 (+0300) Subject: Fixed abstract stack consistency for JMPZ_EX/JMPNZ_EX X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c59edf0ad5b42211c2ba9f92bec88e807976bbfd;p=php Fixed abstract stack consistency for JMPZ_EX/JMPNZ_EX --- diff --git a/ext/opcache/jit/zend_jit_trace.c b/ext/opcache/jit/zend_jit_trace.c index 2da2fb4b31..096dd2d865 100644 --- a/ext/opcache/jit/zend_jit_trace.c +++ b/ext/opcache/jit/zend_jit_trace.c @@ -3502,13 +3502,6 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par case ZEND_JMPZNZ: case ZEND_JMPZ_EX: case ZEND_JMPNZ_EX: - if (opline->result_type == IS_UNDEF) { - res_addr = 0; - } else { - res_addr = RES_REG_ADDR(); - } - op1_info = OP1_INFO(); - CHECK_OP1_TRACE_TYPE(); if ((p+1)->op == ZEND_JIT_TRACE_VM || (p+1)->op == ZEND_JIT_TRACE_END) { const zend_op *exit_opline = NULL; uint32_t exit_point; @@ -3549,6 +3542,13 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par } else { ZEND_ASSERT(0); } + if (opline->result_type == IS_UNDEF) { + res_addr = 0; + } else { + res_addr = RES_REG_ADDR(); + } + op1_info = OP1_INFO(); + CHECK_OP1_TRACE_TYPE(); if (!zend_jit_bool_jmpznz(&dasm_state, opline, op_array, op1_info, OP1_REG_ADDR(), res_addr, -1, -1,