Skip to content

Commit eb62361

Browse files
committed
Fixed tracing jit for BIND_INIT_STATIC_OR_JMP
1 parent 9a2cedb commit eb62361

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

ext/opcache/jit/zend_jit_ir.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16011,6 +16011,12 @@ static int zend_jit_trace_handler(zend_jit_ctx *jit, const zend_op_array *op_arr
1601116011
SET_STACK_TYPE(stack, EX_VAR_TO_NUM(opline->op2.var), IS_UNKNOWN, 1);
1601216012
}
1601316013
break;
16014+
case ZEND_BIND_INIT_STATIC_OR_JMP:
16015+
if (opline->op1_type == IS_CV) {
16016+
old_info = STACK_INFO(stack, EX_VAR_TO_NUM(opline->op1.var));
16017+
SET_STACK_TYPE(stack, EX_VAR_TO_NUM(opline->op1.var), IS_UNKNOWN, 1);
16018+
}
16019+
break;
1601416020
}
1601516021
if (opline->result_type == IS_VAR || opline->result_type == IS_TMP_VAR) {
1601616022
old_res_info = STACK_INFO(stack, EX_VAR_TO_NUM(opline->result.var));
@@ -16029,6 +16035,11 @@ static int zend_jit_trace_handler(zend_jit_ctx *jit, const zend_op_array *op_arr
1602916035
SET_STACK_INFO(stack, EX_VAR_TO_NUM(opline->op2.var), old_info);
1603016036
}
1603116037
break;
16038+
case ZEND_BIND_INIT_STATIC_OR_JMP:
16039+
if (opline->op1_type == IS_CV) {
16040+
SET_STACK_INFO(stack, EX_VAR_TO_NUM(opline->op1.var), old_info);
16041+
}
16042+
break;
1603216043
}
1603316044

1603416045
if (!exit_addr) {

0 commit comments

Comments
 (0)