Skip to content

Commit 550e429

Browse files
committed
trace-compile: don't generate precompile statements for OpaqueClosure methods
These Methods cannot be looked up via their type signature, so they are incompatible with the `precompile(...)` mechanism unfortunately.
1 parent ed987f2 commit 550e429

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/gf.c

+6-3
Original file line numberDiff line numberDiff line change
@@ -2636,7 +2636,8 @@ jl_code_instance_t *jl_compile_method_internal(jl_method_instance_t *mi, size_t
26362636
codeinst->rettype_const = unspec->rettype_const;
26372637
jl_atomic_store_release(&codeinst->invoke, unspec_invoke);
26382638
jl_mi_cache_insert(mi, codeinst);
2639-
record_precompile_statement(mi, 0);
2639+
if (!def->is_for_opaque_closure)
2640+
record_precompile_statement(mi, 0);
26402641
return codeinst;
26412642
}
26422643
}
@@ -2653,7 +2654,8 @@ jl_code_instance_t *jl_compile_method_internal(jl_method_instance_t *mi, size_t
26532654
0, 1, ~(size_t)0, 0, jl_nothing, 0, NULL);
26542655
jl_atomic_store_release(&codeinst->invoke, jl_fptr_interpret_call);
26552656
jl_mi_cache_insert(mi, codeinst);
2656-
record_precompile_statement(mi, 0);
2657+
if (!jl_is_method(def) || !def->is_for_opaque_closure)
2658+
record_precompile_statement(mi, 0);
26572659
return codeinst;
26582660
}
26592661
if (compile_option == JL_OPTIONS_COMPILE_OFF) {
@@ -2702,7 +2704,8 @@ jl_code_instance_t *jl_compile_method_internal(jl_method_instance_t *mi, size_t
27022704
codeinst = NULL;
27032705
}
27042706
else if (did_compile) {
2705-
record_precompile_statement(mi, compile_time);
2707+
if (!jl_is_method(def) || !def->is_for_opaque_closure)
2708+
record_precompile_statement(mi, compile_time);
27062709
}
27072710
JL_GC_POP();
27082711
}

0 commit comments

Comments
 (0)