@@ -717,7 +717,7 @@ static ssize_t lookup_type_idx_linearvalue(jl_svec_t *cache, jl_value_t *key1, j
717717 return ~cl ;
718718}
719719
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 )
721721{
722722 JL_TIMING (TYPE_CACHE_LOOKUP );
723723 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
12391239 return NULL ;
12401240}
12411241
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-
12661242static 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 );
12671243
12681244static 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
13251301 jl_value_t * va = jl_unwrap_unionall (last );
13261302 jl_value_t * va0 = jl_unwrap_vararg (va ), * va1 = jl_unwrap_vararg_num (va );
13271303 // 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 ) {
13311305 JL_GC_POP ();
13321306 return (jl_value_t * )jl_anytuple_type ;
13331307 }
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- }
13431308 if (va1 && jl_is_long (va1 )) {
13441309 ssize_t nt = jl_unbox_long (va1 );
13451310 assert (nt >= 0 );
@@ -1360,12 +1325,6 @@ static jl_value_t *inst_datatype_inner(jl_datatype_t *dt, jl_svec_t *p, jl_value
13601325 return ndt ;
13611326 }
13621327 }
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- }
13691328 }
13701329
13711330 // move array of instantiated parameters to heap; we need to keep it
0 commit comments