@@ -189,21 +189,25 @@ function opaque_closure(
189
189
# This implementation is copied over directly from `Core.OpaqueClosure`.
190
190
ir = CC. copy (ir)
191
191
@static if VERSION >= v " 1.12-"
192
+ ir. debuginfo. def === nothing &&
193
+ (ir. debuginfo. def = :var"generated IR for OpaqueClosure" )
192
194
# On v1.12 OpaqueClosure expects the first arg to be the environment.
193
195
ir. argtypes[1 ] = typeof (env)
194
196
end
195
- nargs = length (ir. argtypes) - 1
197
+ nargtypes = length (ir. argtypes)
198
+ nargs = nargtypes - 1
196
199
@static if VERSION >= v " 1.12-"
197
200
sig = CC. compute_oc_signature (ir, nargs, isva)
198
201
else
199
202
sig = Base. Experimental. compute_oc_signature (ir, nargs, isva)
200
203
end
201
204
src = ccall (:jl_new_code_info_uninit , Ref{CC. CodeInfo}, ())
202
- src. slotnames = fill (:none , nargs + 1 )
203
- src. slotflags = fill (zero (UInt8), length (ir . argtypes) )
205
+ src. slotnames = fill (:none , nargtypes )
206
+ src. slotflags = fill (zero (UInt8), nargtypes )
204
207
src. slottypes = copy (ir. argtypes)
205
208
src. rettype = ret_type
206
209
@static if VERSION >= v " 1.12-"
210
+ src. isva = isva
207
211
src. nargs = UInt (nargs + 1 )
208
212
end
209
213
src = CC. ir_to_codeinf! (src, ir)
0 commit comments