Skip to content

Commit d8af2ed

Browse files
nsajkoKristofferC
authored andcommitted
Compiler/ssair/passes: _lift_svec_ref: improve type stability (#57633)
Making the closure capture a `SimpleVector` instead of a type should improve type stability. Also deduplicated some common subexpressions while at it. (cherry picked from commit 885b1cd)
1 parent c04db34 commit d8af2ed

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

Compiler/src/ssair/passes.jl

+9-7
Original file line numberDiff line numberDiff line change
@@ -1027,17 +1027,19 @@ end
10271027
sig = sig.body
10281028
isa(sig, DataType) || return nothing
10291029
sig.name === Tuple.name || return nothing
1030-
length(sig.parameters) >= 1 || return nothing
1030+
sig_parameters = sig.parameters::SimpleVector
1031+
length_sig_parameters = length(sig_parameters)
1032+
length_sig_parameters >= 1 || return nothing
10311033

1032-
i = let sig=sig
1033-
findfirst(j::Int->has_typevar(sig.parameters[j], tvar), 1:length(sig.parameters))
1034+
function has_typevar_closure(j::Int)
1035+
has_typevar(sig_parameters[j], tvar)
10341036
end
1037+
1038+
i = findfirst(has_typevar_closure, 1:length_sig_parameters)
10351039
i === nothing && return nothing
1036-
let sig=sig
1037-
any(j::Int->has_typevar(sig.parameters[j], tvar), i+1:length(sig.parameters))
1038-
end && return nothing
1040+
any(has_typevar_closure, i+1:length_sig_parameters) && return nothing
10391041

1040-
arg = sig.parameters[i]
1042+
arg = sig_parameters[i]
10411043

10421044
rarg = def.args[2 + i]
10431045
isa(rarg, SSAValue) || return nothing

0 commit comments

Comments
 (0)