com php-src: Correct assertion: ext/opcache/jit/zend_jit_tr ace.c
| From: | Dmitry Stogov | 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 {