@@ -1167,26 +1167,27 @@ static zend_ssa *zend_jit_trace_build_tssa(zend_jit_trace_rec *trace_buffer, uin
1167
1167
if (trace_buffer -> start == ZEND_JIT_TRACE_START_ENTER ) {
1168
1168
i = 0 ;
1169
1169
while (i < op_array -> last_var ) {
1170
- if (!ssa -> var_info
1171
- || !zend_jit_trace_copy_ssa_var_info (op_array , ssa , ssa_opcodes , tssa , i )) {
1172
- if (i < op_array -> num_args ) {
1173
- if (op_array -> arg_info ) {
1174
- zend_arg_info * arg_info = & op_array -> arg_info [i ];
1175
- zend_class_entry * ce ;
1176
- uint32_t tmp = zend_fetch_arg_info_type (script , arg_info , & ce );
1170
+ if (i < op_array -> num_args ) {
1171
+ if (ssa -> var_info
1172
+ && zend_jit_trace_copy_ssa_var_info (op_array , ssa , ssa_opcodes , tssa , i )) {
1173
+ /* pass */
1174
+ } else if (op_array -> arg_info ) {
1175
+ zend_arg_info * arg_info = & op_array -> arg_info [i ];
1176
+ zend_class_entry * ce ;
1177
+ uint32_t tmp = zend_fetch_arg_info_type (script , arg_info , & ce );
1177
1178
1178
- if (ZEND_ARG_SEND_MODE (arg_info )) {
1179
- tmp |= MAY_BE_REF ;
1180
- }
1181
- ssa_var_info [i ].type = tmp ;
1182
- ssa_var_info [i ].ce = ce ;
1183
- ssa_var_info [i ].is_instanceof = 1 ;
1184
- } else {
1185
- ssa_var_info [i ].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 ;
1179
+ if (ZEND_ARG_SEND_MODE (arg_info )) {
1180
+ tmp |= MAY_BE_REF ;
1186
1181
}
1182
+ ssa_var_info [i ].type = tmp ;
1183
+ ssa_var_info [i ].ce = ce ;
1184
+ ssa_var_info [i ].is_instanceof = 1 ;
1187
1185
} else {
1188
- ssa_var_info [i ].type = MAY_BE_UNDEF ;
1186
+ ssa_var_info [i ].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 ;
1189
1187
}
1188
+ } else {
1189
+ ssa_vars [i ].no_val = ssa -> vars ? ssa -> vars [i ].no_val : 0 ;
1190
+ ssa_var_info [i ].type = MAY_BE_UNDEF ;
1190
1191
}
1191
1192
i ++ ;
1192
1193
}
@@ -1563,26 +1564,27 @@ static zend_ssa *zend_jit_trace_build_tssa(zend_jit_trace_rec *trace_buffer, uin
1563
1564
v = p -> first_ssa_var ;
1564
1565
while (i < op_array -> last_var ) {
1565
1566
ssa_vars [v ].var = i ;
1566
- if (!ssa -> var_info
1567
- || !zend_jit_trace_copy_ssa_var_info (op_array , ssa , ssa_opcodes , tssa , v )) {
1568
- if (i < op_array -> num_args ) {
1569
- if (op_array -> arg_info ) {
1570
- zend_arg_info * arg_info = & op_array -> arg_info [i ];
1571
- zend_class_entry * ce ;
1572
- uint32_t tmp = zend_fetch_arg_info_type (script , arg_info , & ce );
1573
-
1574
- if (ZEND_ARG_SEND_MODE (arg_info )) {
1575
- tmp |= MAY_BE_REF ;
1576
- }
1577
- ssa_var_info [v ].type = tmp ;
1578
- ssa_var_info [i ].ce = ce ;
1579
- ssa_var_info [i ].is_instanceof = 1 ;
1580
- } else {
1581
- 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 ;
1567
+ if (i < op_array -> num_args ) {
1568
+ if (ssa -> var_info
1569
+ && zend_jit_trace_copy_ssa_var_info (op_array , ssa , ssa_opcodes , tssa , v )) {
1570
+ /* pass */
1571
+ } else if (op_array -> arg_info ) {
1572
+ zend_arg_info * arg_info = & op_array -> arg_info [i ];
1573
+ zend_class_entry * ce ;
1574
+ uint32_t tmp = zend_fetch_arg_info_type (script , arg_info , & ce );
1575
+
1576
+ if (ZEND_ARG_SEND_MODE (arg_info )) {
1577
+ tmp |= MAY_BE_REF ;
1582
1578
}
1579
+ ssa_var_info [v ].type = tmp ;
1580
+ ssa_var_info [i ].ce = ce ;
1581
+ ssa_var_info [i ].is_instanceof = 1 ;
1583
1582
} else {
1584
- ssa_var_info [v ].type = MAY_BE_UNDEF ;
1583
+ 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 ;
1585
1584
}
1585
+ } else {
1586
+ ssa_vars [v ].no_val = ssa -> vars ? ssa -> vars [i ].no_val : 0 ;
1587
+ ssa_var_info [v ].type = MAY_BE_UNDEF ;
1586
1588
}
1587
1589
if (!(op_array -> fn_flags & ZEND_ACC_HAS_TYPE_HINTS )
1588
1590
&& i < op_array -> num_args ) {
@@ -1592,7 +1594,6 @@ static zend_ssa *zend_jit_trace_build_tssa(zend_jit_trace_rec *trace_buffer, uin
1592
1594
i ++ ;
1593
1595
v ++ ;
1594
1596
}
1595
-
1596
1597
} else if (p -> op == ZEND_JIT_TRACE_BACK ) {
1597
1598
op_array = p -> op_array ;
1598
1599
jit_extension =
0 commit comments