@@ -717,7 +717,7 @@ static ssize_t lookup_type_idx_linearvalue(jl_svec_t *cache, jl_value_t *key1, j
717
717
return ~cl ;
718
718
}
719
719
720
- static jl_value_t * lookup_type (jl_typename_t * tn , jl_value_t * * key , size_t n )
720
+ static jl_value_t * lookup_type (jl_typename_t * tn JL_PROPAGATES_ROOT , jl_value_t * * key , size_t n )
721
721
{
722
722
JL_TIMING (TYPE_CACHE_LOOKUP );
723
723
unsigned hv = typekey_hash (tn , key , n , 0 );
@@ -1239,30 +1239,6 @@ static jl_value_t *extract_wrapper(jl_value_t *t JL_PROPAGATES_ROOT) JL_GLOBALLY
1239
1239
return NULL ;
1240
1240
}
1241
1241
1242
- // convert `Vararg{X, Y} where T` to `Vararg{X where T, Y}` where T doesn't occur free in Y
1243
- static jl_value_t * normalize_vararg (jl_value_t * va )
1244
- {
1245
- assert (jl_is_vararg_type (va ));
1246
- if (!jl_is_unionall (va )) return va ;
1247
- jl_value_t * body = NULL ;
1248
- JL_GC_PUSH2 (& va , & body );
1249
- jl_unionall_t * ua = (jl_unionall_t * )va ;
1250
- body = normalize_vararg (ua -> body );
1251
- jl_value_t * unw = jl_unwrap_unionall (body );
1252
- jl_value_t * va0 = jl_unwrap_vararg (unw ), * va1 = jl_unwrap_vararg_num (unw );
1253
- if (jl_has_typevar (va1 , ua -> var )) {
1254
- if (body != ua -> body )
1255
- va = jl_type_unionall (ua -> var , body );
1256
- }
1257
- else {
1258
- va = jl_type_unionall (ua -> var , va0 );
1259
- va = jl_wrap_vararg (va , va1 );
1260
- va = jl_rewrap_unionall (va , body );
1261
- }
1262
- JL_GC_POP ();
1263
- return va ;
1264
- }
1265
-
1266
1242
static jl_value_t * _jl_instantiate_type_in_env (jl_value_t * ty , jl_unionall_t * env , jl_value_t * * vals , jl_typeenv_t * prev , jl_typestack_t * stack );
1267
1243
1268
1244
static jl_value_t * inst_datatype_inner (jl_datatype_t * dt , jl_svec_t * p , jl_value_t * * iparams , size_t ntp ,
@@ -1325,21 +1301,10 @@ static jl_value_t *inst_datatype_inner(jl_datatype_t *dt, jl_svec_t *p, jl_value
1325
1301
jl_value_t * va = jl_unwrap_unionall (last );
1326
1302
jl_value_t * va0 = jl_unwrap_vararg (va ), * va1 = jl_unwrap_vararg_num (va );
1327
1303
// return same `Tuple` object for types equal to it
1328
- if (ntp == 1 &&
1329
- (va0 == (jl_value_t * )jl_any_type &&
1330
- jl_is_unionall (last ) && va1 == (jl_value_t * )((jl_unionall_t * )last )-> var )) {
1304
+ if (ntp == 1 && va0 == (jl_value_t * )jl_any_type && !va1 ) {
1331
1305
JL_GC_POP ();
1332
1306
return (jl_value_t * )jl_anytuple_type ;
1333
1307
}
1334
- int did_normalize = 0 ;
1335
- jl_value_t * last2 = normalize_vararg (last );
1336
- assert (!jl_is_unionall (last2 ) || !jl_is_unionall (((jl_unionall_t * )last2 )-> body ));
1337
- if (last2 != last ) {
1338
- last = last2 ;
1339
- did_normalize = 1 ;
1340
- va = jl_unwrap_unionall (last );
1341
- va0 = jl_unwrap_vararg (va ); va1 = jl_unwrap_vararg_num (va );
1342
- }
1343
1308
if (va1 && jl_is_long (va1 )) {
1344
1309
ssize_t nt = jl_unbox_long (va1 );
1345
1310
assert (nt >= 0 );
@@ -1360,12 +1325,6 @@ static jl_value_t *inst_datatype_inner(jl_datatype_t *dt, jl_svec_t *p, jl_value
1360
1325
return ndt ;
1361
1326
}
1362
1327
}
1363
- if (did_normalize ) {
1364
- p = jl_alloc_svec (ntp );
1365
- for (size_t i = 0 ; i < ntp - 1 ; i ++ )
1366
- jl_svecset (p , i , iparams [i ]);
1367
- jl_svecset (p , ntp - 1 , last );
1368
- }
1369
1328
}
1370
1329
1371
1330
// move array of instantiated parameters to heap; we need to keep it
0 commit comments