File tree Expand file tree Collapse file tree 1 file changed +19
-0
lines changed Expand file tree Collapse file tree 1 file changed +19
-0
lines changed Original file line number Diff line number Diff line change @@ -2104,9 +2104,15 @@ static zend_lifetime_interval** zend_jit_trace_allocate_registers(zend_jit_trace
2104
2104
j ++ ;
2105
2105
}
2106
2106
}
2107
+ count = j ;
2107
2108
free_alloca (start , use_heap );
2108
2109
start = end = NULL ;
2109
2110
2111
+ if (!count ) {
2112
+ zend_arena_release (& CG (arena ), checkpoint );
2113
+ return NULL ;
2114
+ }
2115
+
2110
2116
/* Add hints */
2111
2117
if (parent_vars_count ) {
2112
2118
zend_jit_trace_stack * parent_stack =
@@ -2225,14 +2231,21 @@ static zend_lifetime_interval** zend_jit_trace_allocate_registers(zend_jit_trace
2225
2231
2226
2232
memset (intervals , 0 , ssa -> vars_count * sizeof (zend_lifetime_interval * ));
2227
2233
ival = list ;
2234
+ count = 0 ;
2228
2235
while (ival != NULL ) {
2229
2236
ZEND_ASSERT (ival -> reg != ZREG_NONE );
2237
+ count ++ ;
2230
2238
next = ival -> list_next ;
2231
2239
ival -> list_next = intervals [ival -> ssa_var ];
2232
2240
intervals [ival -> ssa_var ] = ival ;
2233
2241
ival = next ;
2234
2242
}
2235
2243
2244
+ if (!count ) {
2245
+ zend_arena_release (& CG (arena ), checkpoint );
2246
+ return NULL ;
2247
+ }
2248
+
2236
2249
/* SSA resolution */
2237
2250
if (trace_buffer -> stop == ZEND_JIT_TRACE_STOP_LOOP ) {
2238
2251
zend_ssa_phi * phi = ssa -> blocks [1 ].phis ;
@@ -2306,12 +2319,18 @@ static zend_lifetime_interval** zend_jit_trace_allocate_registers(zend_jit_trace
2306
2319
}
2307
2320
if (may_remove ) {
2308
2321
intervals [i ] = NULL ;
2322
+ count -- ;
2309
2323
}
2310
2324
}
2311
2325
}
2312
2326
2313
2327
// Remove intervals used once ????
2314
2328
2329
+ if (!count ) {
2330
+ zend_arena_release (& CG (arena ), checkpoint );
2331
+ return NULL ;
2332
+ }
2333
+
2315
2334
if (ZCG (accel_directives ).jit_debug & ZEND_JIT_DEBUG_REG_ALLOC ) {
2316
2335
fprintf (stderr , "---- TRACE %d Allocated Live Ranges\n" , ZEND_JIT_TRACE_NUM );
2317
2336
for (i = 0 ; i < ssa -> vars_count ; i ++ ) {
You can’t perform that action at this time.
0 commit comments