uint32_t exit_point;
const void *exit_addr;
uint32_t old_info = 0;
+ uint32_t old_res_info = 0;
zend_jit_trace_stack *stack = JIT_G(current_frame)->stack;
if (zend_is_smart_branch(opline)) {
}
}
+ 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);
+ }
exit_point = zend_jit_trace_get_exit_point(opline, exit_opline, trace, 0);
exit_addr = zend_jit_trace_get_exit_addr(exit_point);
+ if (opline->result_type == IS_VAR || opline->result_type == IS_TMP_VAR) {
+ SET_STACK_INFO(stack, EX_VAR_TO_NUM(opline->result.var), old_res_info);
+ }
switch (opline->opcode) {
case ZEND_FE_FETCH_R:
case ZEND_FE_FETCH_RW: