Skip to content

Commit

Permalink
[1.11 backport] trace-compile: don't generate precompile statements…
Browse files Browse the repository at this point in the history
… for OpaqueClosure methods (#55072) (#55225)

These Methods cannot be looked up via their type signature, so they are
incompatible with the `precompile(...)` mechanism.
  • Loading branch information
topolarity authored Jul 23, 2024
1 parent 3a35aec commit 46e4740
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion src/gf.c
Original file line number Diff line number Diff line change
Expand Up @@ -2393,6 +2393,8 @@ static void record_precompile_statement(jl_method_instance_t *mi)
return;
if (!jl_is_method(def))
return;
if (def->is_for_opaque_closure)
return; // OpaqueClosure methods cannot be looked up by their types, so are incompatible with `precompile(...)`

JL_LOCK(&precomp_statement_out_lock);
if (s_precompile == NULL) {
Expand Down Expand Up @@ -2569,7 +2571,7 @@ jl_code_instance_t *jl_compile_method_internal(jl_method_instance_t *mi, size_t
jl_atomic_store_release(&codeinst->invoke, ucache_invoke);
jl_mi_cache_insert(mi, codeinst);
}
else if (did_compile) {
else if (did_compile && codeinst->owner == jl_nothing) {
record_precompile_statement(mi);
}
jl_atomic_store_relaxed(&codeinst->precompile, 1);
Expand Down

0 comments on commit 46e4740

Please sign in to comment.