com php-src: Correct assertion: ext/opcache/jit/zend_jit_tr ace.c

From: Date: Mon, 27 Jul 2020 18:53:58 +0000
Subject: com php-src: Correct assertion: ext/opcache/jit/zend_jit_tr ace.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-112392@lists.php.net to get a copy of this message
Commit: ee00f51e0a2591c696a82ca93b5a0a73553b8579 Author: Dmitry Stogov <dmitry@zend.com> Mon, 27 Jul 2020 21:53:58 +0300 Parents: fbb18e4409b6f6f76712c1e14f0119b7fc8a45c1 Branches: master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=ee00f51e0a2591c696a82ca93b5a0a73553b8579 Log: Correct assertion Changed paths: M ext/opcache/jit/zend_jit_trace.c Diff: diff --git a/ext/opcache/jit/zend_jit_trace.c b/ext/opcache/jit/zend_jit_trace.c index ea57f5d68c..a55f04a82a 100644 --- a/ext/opcache/jit/zend_jit_trace.c +++ b/ext/opcache/jit/zend_jit_trace.c @@ -743,7 +743,15 @@ static int zend_jit_trace_restrict_ssa_var_info(const zend_op_array *op_array, c tssa->var_info[ssa_var].type &= info->type; if (info->ce) { if (tssa->var_info[ssa_var].ce) { - ZEND_ASSERT(tssa->var_info[ssa_var].ce == info->ce); + if (tssa->var_info[ssa_var].ce != info->ce) { + if (instanceof_function(tssa->var_info[ssa_var].ce, info->ce)) { + /* everything fine */ + } else if (instanceof_function(info->ce, tssa->var_info[ssa_var].ce)) { + // TODO: TSSA may miss Pi() functions and corresponding instanceof() constraints ??? + } else { + ZEND_UNREACHABLE(); + } + } tssa->var_info[ssa_var].is_instanceof = tssa->var_info[ssa_var].is_instanceof && info->is_instanceof; } else {

« previous php.cvs (#112392) next »