Skip to content

Commit d357d35

Browse files
committed
make it easier to overload evaluate_call!
1 parent df933cc commit d357d35

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

src/interpret.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,9 @@ function evaluate_call!(interp::NonRecursiveInterpreter, frame::Frame, call_expr
232232
ret = maybe_evaluate_builtin(interp, frame, call_expr, false)
233233
isa(ret, Some{Any}) && return ret.value
234234
fargs = collect_args(interp, frame, call_expr)
235+
return evaluate_call!(interp, frame, fargs, enter_generated)
236+
end
237+
function evaluate_call!(::NonRecursiveInterpreter, frame::Frame, fargs::Vector{Any}, ::Bool)
235238
return native_call(fargs, frame)
236239
end
237240

@@ -243,6 +246,9 @@ function evaluate_call!(interp::Interpreter, frame::Frame, call_expr::Expr, ente
243246
isa(ret, Some{Any}) && return ret.value
244247
call_expr = ret
245248
fargs = collect_args(interp, frame, call_expr)
249+
return evaluate_call!(interp, frame, fargs, enter_generated)
250+
end
251+
function evaluate_call!(interp::Interpreter, frame::Frame, fargs::Vector{Any}, enter_generated::Bool)
246252
if fargs[1] === Core.eval
247253
return Core.eval(fargs[2], fargs[3]) # not a builtin, but worth treating specially
248254
elseif fargs[1] === Base.rethrow

0 commit comments

Comments
 (0)