Skip to content

Commit ee00f51

Browse files
committed
Correct assertion
1 parent fbb18e4 commit ee00f51

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

ext/opcache/jit/zend_jit_trace.c

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -743,7 +743,15 @@ static int zend_jit_trace_restrict_ssa_var_info(const zend_op_array *op_array, c
743743
tssa->var_info[ssa_var].type &= info->type;
744744
if (info->ce) {
745745
if (tssa->var_info[ssa_var].ce) {
746-
ZEND_ASSERT(tssa->var_info[ssa_var].ce == info->ce);
746+
if (tssa->var_info[ssa_var].ce != info->ce) {
747+
if (instanceof_function(tssa->var_info[ssa_var].ce, info->ce)) {
748+
/* everything fine */
749+
} else if (instanceof_function(info->ce, tssa->var_info[ssa_var].ce)) {
750+
// TODO: TSSA may miss Pi() functions and corresponding instanceof() constraints ???
751+
} else {
752+
ZEND_UNREACHABLE();
753+
}
754+
}
747755
tssa->var_info[ssa_var].is_instanceof =
748756
tssa->var_info[ssa_var].is_instanceof && info->is_instanceof;
749757
} else {

0 commit comments

Comments
 (0)