]> granicus.if.org Git - php/commitdiff
Use zend_fetch_arg_info_type()
authorDmitry Stogov <dmitry@zend.com>
Tue, 17 Mar 2020 15:10:27 +0000 (18:10 +0300)
committerDmitry Stogov <dmitry@zend.com>
Tue, 17 Mar 2020 15:10:27 +0000 (18:10 +0300)
ext/opcache/jit/zend_jit_trace.c

index 0990069de36d91815e095d2d0445dc632d46a3c9..c472e49213cbf534dbb996ef294ec9f7e0662674 100644 (file)
@@ -1287,7 +1287,9 @@ static zend_ssa *zend_jit_trace_build_tssa(zend_jit_trace_rec *trace_buffer, uin
                                                        ZEND_ASSERT(frame->call->func->op_array.arg_info);
                                                        arg_info = &frame->call->func->op_array.arg_info[opline->op2.num - 1];
                                                        if (ZEND_TYPE_IS_SET(arg_info->type)) {
-                                                               info &= ZEND_TYPE_FULL_MASK(arg_info->type);
+                                                               zend_class_entry *ce;
+                                                               uint32_t tmp = zend_fetch_arg_info_type(script, arg_info, &ce);
+                                                               info &= tmp;
                                                                if (!info) {
                                                                        break;
                                                                }
@@ -1470,6 +1472,8 @@ static zend_ssa *zend_jit_trace_build_tssa(zend_jit_trace_rec *trace_buffer, uin
                                                                tmp |= MAY_BE_REF;
                                                        }
                                                        ssa_var_info[v].type = tmp;
+                                                       ssa_var_info[i].ce = ce;
+                                                       ssa_var_info[i].is_instanceof = 1;
                                                } else {
                                                        ssa_var_info[v].type = MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_ANY  | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
                                                }