mirror of
https://github.com/php/php-src.git
synced 2024-11-24 10:24:11 +08:00
Fix abstract trace consisency for FE_FETCH instruction
This commit is contained in:
parent
33375e927c
commit
5ca4113386
@ -3640,10 +3640,6 @@ static int zend_jit_trace_handler(dasm_State **Dst, const zend_op_array *op_arra
|
||||
break;
|
||||
case ZEND_FE_FETCH_R:
|
||||
case ZEND_FE_FETCH_RW:
|
||||
if (opline->op2_type == IS_CV) {
|
||||
old_info = STACK_INFO(stack, EX_VAR_TO_NUM(opline->op2.var));
|
||||
SET_STACK_TYPE(stack, EX_VAR_TO_NUM(opline->op2.var), IS_UNKNOWN, 1);
|
||||
}
|
||||
exit_opline = (trace->opline == opline + 1) ?
|
||||
ZEND_OFFSET_TO_OPLINE(opline, opline->extended_value) :
|
||||
opline + 1;
|
||||
@ -3652,6 +3648,16 @@ static int zend_jit_trace_handler(dasm_State **Dst, const zend_op_array *op_arra
|
||||
}
|
||||
}
|
||||
|
||||
switch (opline->opcode) {
|
||||
case ZEND_FE_FETCH_R:
|
||||
case ZEND_FE_FETCH_RW:
|
||||
if (opline->op2_type != IS_UNUSED) {
|
||||
old_info = STACK_INFO(stack, EX_VAR_TO_NUM(opline->op2.var));
|
||||
SET_STACK_TYPE(stack, EX_VAR_TO_NUM(opline->op2.var), IS_UNKNOWN, 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (opline->result_type == IS_VAR || opline->result_type == IS_TMP_VAR) {
|
||||
old_res_info = STACK_INFO(stack, EX_VAR_TO_NUM(opline->result.var));
|
||||
SET_STACK_TYPE(stack, EX_VAR_TO_NUM(opline->result.var), IS_UNKNOWN, 1);
|
||||
@ -3665,7 +3671,7 @@ static int zend_jit_trace_handler(dasm_State **Dst, const zend_op_array *op_arra
|
||||
switch (opline->opcode) {
|
||||
case ZEND_FE_FETCH_R:
|
||||
case ZEND_FE_FETCH_RW:
|
||||
if (opline->op2_type == IS_CV) {
|
||||
if (opline->op2_type != IS_UNUSED) {
|
||||
SET_STACK_INFO(stack, EX_VAR_TO_NUM(opline->op2.var), old_info);
|
||||
}
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user