Skip to content

Commit 96b6526

Browse files
setup opaque closure form so that no other changes are necessary
1 parent 5da8e11 commit 96b6526

File tree

1 file changed

+4
-102
lines changed

1 file changed

+4
-102
lines changed

src/norecompile.jl

Lines changed: 4 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -14,104 +14,14 @@ const arglists = (Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}, Float
1414
Tuple{Vector{dualT}, Vector{Float64}, SciMLBase.NullParameters, dualT})
1515
const iip_returnlists = ntuple(x -> Nothing, length(arglists))
1616
function void(@nospecialize(f::Function))
17-
function f2(@nospecialize(du::Vector{Float64}), @nospecialize(u::Vector{Float64}),
18-
@nospecialize(p::Vector{Float64}), @nospecialize(t::Float64))
19-
f(du, u, p, t)
20-
nothing
21-
end
22-
23-
function f2(@nospecialize(du::Vector{Float64}), @nospecialize(u::Vector{Float64}),
24-
@nospecialize(p::SciMLBase.NullParameters), @nospecialize(t::Float64))
25-
f(du, u, p, t)
26-
nothing
27-
end
28-
29-
function f2(@nospecialize(du::Vector{dualT}), @nospecialize(u::Vector{dualT}),
30-
@nospecialize(p::Vector{Float64}), @nospecialize(t::Float64))
31-
f(du, u, p, t)
32-
nothing
33-
end
34-
35-
function f2(@nospecialize(du::Vector{dualT}), @nospecialize(u::Vector{dualT}),
36-
@nospecialize(p::SciMLBase.NullParameters), @nospecialize(t::Float64))
37-
f(du, u, p, t)
38-
nothing
39-
end
40-
41-
function f2(@nospecialize(du::Vector{dualT}), @nospecialize(u::Vector{Float64}),
42-
@nospecialize(p::Vector{Float64}), @nospecialize(t::dualT))
43-
f(du, u, p, t)
44-
nothing
45-
end
46-
47-
function f2(@nospecialize(du::Vector{dualT}), @nospecialize(u::Vector{Float64}),
48-
@nospecialize(p::SciMLBase.NullParameters), @nospecialize(t::dualT))
49-
f(du, u, p, t)
50-
nothing
51-
end
52-
precompile(f, (Vector{Float64}, Vector{Float64}, Vector{Float64}, Float64))
53-
precompile(f, (Vector{Float64}, Vector{Float64}, SciMLBase.NullParameters, Float64))
54-
precompile(f, (Vector{dualT}, Vector{dualT}, Vector{Float64}, Float64))
55-
precompile(f, (Vector{dualT}, Vector{dualT}, SciMLBase.NullParameters, Float64))
56-
precompile(f, (Vector{dualT}, Vector{Float64}, Vector{Float64}, dualT))
57-
precompile(f, (Vector{dualT}, Vector{Float64}, SciMLBase.NullParameters, dualT))
58-
59-
precompile(f2, (Vector{Float64}, Vector{Float64}, Vector{Float64}, Float64))
60-
precompile(f2, (Vector{Float64}, Vector{Float64}, SciMLBase.NullParameters, Float64))
61-
precompile(f2, (Vector{dualT}, Vector{dualT}, Vector{Float64}, Float64))
62-
precompile(f2, (Vector{dualT}, Vector{dualT}, SciMLBase.NullParameters, Float64))
63-
precompile(f2, (Vector{dualT}, Vector{Float64}, Vector{Float64}, dualT))
64-
precompile(f2, (Vector{dualT}, Vector{Float64}, SciMLBase.NullParameters, dualT))
65-
f2
17+
Base.Experimental.@opaque (args...)->f(args...)
6618
end
6719

6820
const oop_returnlists = (Vector{Float64},Vector{Float64},
6921
ntuple(x -> Vector{dualT}, length(arglists)-2)...)
7022

7123
function typestablemapping(@nospecialize(f::Function))
72-
function f2(@nospecialize(du::Vector{Float64}), @nospecialize(u::Vector{Float64}),
73-
@nospecialize(p::Vector{Float64}), @nospecialize(t::Float64))
74-
f(u, p, t)::Vector{Float64}
75-
end
76-
77-
function f2(@nospecialize(du::Vector{Float64}), @nospecialize(u::Vector{Float64}),
78-
@nospecialize(p::SciMLBase.NullParameters), @nospecialize(t::Float64))
79-
f(u, p, t)::Vector{Float64}
80-
end
81-
82-
function f2(@nospecialize(du::Vector{dualT}), @nospecialize(u::Vector{dualT}),
83-
@nospecialize(p::Vector{Float64}), @nospecialize(t::Float64))
84-
f(u, p, t)::Vector{dualT}
85-
end
86-
87-
function f2(@nospecialize(du::Vector{dualT}), @nospecialize(u::Vector{dualT}),
88-
@nospecialize(p::SciMLBase.NullParameters), @nospecialize(t::Float64))
89-
f(u, p, t)::Vector{dualT}
90-
end
91-
92-
function f2(@nospecialize(du::Vector{dualT}), @nospecialize(u::Vector{Float64}),
93-
@nospecialize(p::Vector{Float64}), @nospecialize(t::dualT))
94-
f(u, p, t)::Vector{dualT}
95-
end
96-
97-
function f2(@nospecialize(du::Vector{dualT}), @nospecialize(u::Vector{Float64}),
98-
@nospecialize(p::SciMLBase.NullParameters), @nospecialize(t::dualT))
99-
f(u, p, t)::Vector{dualT}
100-
end
101-
precompile(f, (Vector{Float64}, Vector{Float64}, Vector{Float64}, Float64))
102-
precompile(f, (Vector{Float64}, Vector{Float64}, SciMLBase.NullParameters, Float64))
103-
precompile(f, (Vector{dualT}, Vector{dualT}, Vector{Float64}, Float64))
104-
precompile(f, (Vector{dualT}, Vector{dualT}, SciMLBase.NullParameters, Float64))
105-
precompile(f, (Vector{dualT}, Vector{Float64}, Vector{Float64}, dualT))
106-
precompile(f, (Vector{dualT}, Vector{Float64}, SciMLBase.NullParameters, dualT))
107-
108-
precompile(f2, (Vector{Float64}, Vector{Float64}, Vector{Float64}, Float64))
109-
precompile(f2, (Vector{Float64}, Vector{Float64}, SciMLBase.NullParameters, Float64))
110-
precompile(f2, (Vector{dualT}, Vector{dualT}, Vector{Float64}, Float64))
111-
precompile(f2, (Vector{dualT}, Vector{dualT}, SciMLBase.NullParameters, Float64))
112-
precompile(f2, (Vector{dualT}, Vector{Float64}, Vector{Float64}, dualT))
113-
precompile(f2, (Vector{dualT}, Vector{Float64}, SciMLBase.NullParameters, dualT))
114-
f2
24+
Base.Experimental.@opaque (args...)->f(args...)
11525
end
11626

11727
const NORECOMPILE_ARGUMENT_MESSAGE = """
@@ -132,19 +42,11 @@ function Base.showerror(io::IO, e::NoRecompileArgumentError)
13242
end
13343

13444
function wrapfun_oop(ff, inputs::Tuple)
135-
IT = Tuple{map(typeof, inputs)...}
136-
if IT NORECOMPILE_SUPPORTED_ARGS
137-
throw(NoRecompileArgumentError(IT))
138-
end
139-
FunctionWrappersWrappers.FunctionWrappersWrapper(void(ff), arglists, oop_returnlists)
45+
void(ff)
14046
end
14147

14248
function wrapfun_iip(ff, inputs::Tuple)
143-
IT = Tuple{map(typeof, inputs)...}
144-
if IT NORECOMPILE_SUPPORTED_ARGS
145-
throw(NoRecompileArgumentError(IT))
146-
end
147-
FunctionWrappersWrappers.FunctionWrappersWrapper(void(ff), arglists, iip_returnlists)
49+
void(ff)
14850
end
14951

15052
function unwrap_fw(fw::FunctionWrapper)

0 commit comments

Comments
 (0)