Skip to content

Commit dc77b19

Browse files
committed
preempt args iteration only for _apply_iterate
1 parent 3b53ef2 commit dc77b19

File tree

2 files changed

+20
-24
lines changed

2 files changed

+20
-24
lines changed

bin/generate_builtins.jl

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -146,14 +146,13 @@ function maybe_evaluate_builtin(frame, call_expr, expand::Bool)
146146
print(io,
147147
"""
148148
$head f === $fstr
149-
argswrapped = getargs(args, frame)
149+
args = getargs(args, frame)
150150
if !expand
151-
return Some{Any}($fstr(argswrapped...))
151+
return Some{Any}($fstr(args...))
152152
end
153-
new_expr = Expr(:call, argswrapped[1])
154-
popfirst!(argswrapped)
155-
argsflat = append_any(argswrapped...)
156-
for x in argsflat
153+
new_expr = Expr(:call, args[1])
154+
popfirst!(args)
155+
for x in args
157156
push!(new_expr.args, (isa(x, Symbol) || isa(x, Expr) || isa(x, QuoteNode)) ? QuoteNode(x) : x)
158157
end
159158
return new_expr

src/builtins.jl

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -52,38 +52,35 @@ function maybe_evaluate_builtin(frame, call_expr, expand::Bool)
5252
return Some{Any}(===(getargs(args, frame)...))
5353
end
5454
elseif f === Core._apply
55-
argswrapped = getargs(args, frame)
55+
args = getargs(args, frame)
5656
if !expand
57-
return Some{Any}(Core._apply(argswrapped...))
57+
return Some{Any}(Core._apply(args...))
5858
end
59-
new_expr = Expr(:call, argswrapped[1])
60-
popfirst!(argswrapped)
61-
argsflat = append_any(argswrapped...)
62-
for x in argsflat
59+
new_expr = Expr(:call, args[1])
60+
popfirst!(args)
61+
for x in args
6362
push!(new_expr.args, (isa(x, Symbol) || isa(x, Expr) || isa(x, QuoteNode)) ? QuoteNode(x) : x)
6463
end
6564
return new_expr
6665
elseif @static isdefined(Core, :_call_latest) ? f === Core._call_latest : false
67-
argswrapped = getargs(args, frame)
66+
args = getargs(args, frame)
6867
if !expand
69-
return Some{Any}(Core._call_latest(argswrapped...))
68+
return Some{Any}(Core._call_latest(args...))
7069
end
71-
new_expr = Expr(:call, argswrapped[1])
72-
popfirst!(argswrapped)
73-
argsflat = append_any(argswrapped)
74-
for x in argsflat
70+
new_expr = Expr(:call, args[1])
71+
popfirst!(args)
72+
for x in args
7573
push!(new_expr.args, (isa(x, Symbol) || isa(x, Expr) || isa(x, QuoteNode)) ? QuoteNode(x) : x)
7674
end
7775
return new_expr
7876
elseif @static isdefined(Core, :_apply_latest) ? f === Core._apply_latest : false
79-
argswrapped = getargs(args, frame)
77+
args = getargs(args, frame)
8078
if !expand
81-
return Some{Any}(Core._apply_latest(argswrapped...))
79+
return Some{Any}(Core._apply_latest(args...))
8280
end
83-
new_expr = Expr(:call, argswrapped[1])
84-
popfirst!(argswrapped)
85-
argsflat = append_any(argswrapped...)
86-
for x in argsflat
81+
new_expr = Expr(:call, args[1])
82+
popfirst!(args)
83+
for x in args
8784
push!(new_expr.args, (isa(x, Symbol) || isa(x, Expr) || isa(x, QuoteNode)) ? QuoteNode(x) : x)
8885
end
8986
return new_expr

0 commit comments

Comments
 (0)