@@ -168,16 +168,27 @@ end
168
168
# Overdub{Intercept} #
169
169
# --------------------#
170
170
171
+ function _overdub_generator end
172
+
171
173
for N in 0 : MAX_ARGS
172
174
arg_names = [Symbol (" _CASSETTE_$i " ) for i in 2 : (N+ 1 )]
173
175
arg_types = [:(unbox (C, $ T)) for T in arg_names]
176
+ stub = Core. GeneratedFunctionStub (_overdub_generator,
177
+ Any[:f , arg_names... ],
178
+ Any[:F , :C , :M , :world , :debug ],
179
+ @__LINE__ ,
180
+ Symbol (@__FILE__ ),
181
+ true )
174
182
@eval begin
175
- @generated function (f:: Overdub{Intercept,F,Settings{C,M,world,debug}} )( $ (arg_names... )) where {F,C,M,world,debug}
183
+ function _overdub_generator (f:: Overdub{Intercept,F,Settings{C,M,world,debug}} , $ (arg_names... )) where {F,C,M,world,debug}
176
184
signature = Tuple{unbox (C, F),$ (arg_types... )}
177
- method_body = lookup_method_body (signature, $ arg_names, world, debug)
185
+ method, method_body = lookup_method_body (signature, $ arg_names, world, debug)
178
186
if isa (method_body, CodeInfo)
179
187
method_body = overdub_new! (overdub_calls! (getpass (C, M)(signature, method_body)))
180
188
method_body. inlineable = true
189
+ if isa (method, Method)
190
+ method_body. method_for_inference_heuristics = method
191
+ end
181
192
else
182
193
arg_names = $ arg_names
183
194
method_body = quote
@@ -188,5 +199,8 @@ for N in 0:MAX_ARGS
188
199
debug && Core. println (" RETURNING Overdub(...) BODY: " , method_body)
189
200
return method_body
190
201
end
202
+ function (f:: Overdub{Intercept,F,Settings{C,M,world,debug}} )($ (arg_names... )) where {F,C,M,world,debug}
203
+ $ (Expr (:meta , :generated_only , stub))
204
+ end
191
205
end
192
206
end
0 commit comments