@@ -476,6 +476,8 @@ JL_DLLEXPORT jl_code_instance_t *jl_get_method_inferred(
476476    return  codeinst ;
477477}
478478
479+ static  void  record_precompile_statement (jl_method_instance_t  * mi , double  compilation_time , int  is_const_return_abi );
480+ 
479481JL_DLLEXPORT  jl_code_instance_t  * jl_new_codeinst (
480482        jl_method_instance_t  * mi , jl_value_t  * rettype ,
481483        jl_value_t  * inferred_const , jl_value_t  * inferred ,
@@ -501,6 +503,10 @@ JL_DLLEXPORT jl_code_instance_t *jl_new_codeinst(
501503    jl_atomic_store_relaxed (& codeinst -> invoke , NULL );
502504    if  ((const_flags  &  1 ) !=  0 ) {
503505        assert (const_flags  &  2 );
506+         if  (jl_is_method (mi -> def .value ) &&  jl_isa_compileable_sig ((jl_tupletype_t  * )mi -> specTypes , mi -> sparam_vals , mi -> def .method )) {
507+             // This code was freshly-inferred, so let's emit a `precompile(...)` statement for it 
508+             record_precompile_statement (mi , 0.0 , 1 );
509+         }
504510        jl_atomic_store_relaxed (& codeinst -> invoke , jl_fptr_const_return );
505511    }
506512    jl_atomic_store_relaxed (& codeinst -> specsigflags , 0 );
@@ -2392,7 +2398,7 @@ JL_DLLEXPORT void jl_force_trace_compile_timing_disable(void)
23922398    jl_atomic_fetch_add (& jl_force_trace_compile_timing_enabled , -1 );
23932399}
23942400
2395- static  void  record_precompile_statement (jl_method_instance_t  * mi , double  compilation_time )
2401+ static  void  record_precompile_statement (jl_method_instance_t  * mi , double  compilation_time ,  int   is_const_return_abi )
23962402{
23972403    static  ios_t  f_precompile ;
23982404    static  JL_STREAM *  s_precompile  =  NULL ;
@@ -2566,7 +2572,7 @@ jl_code_instance_t *jl_compile_method_internal(jl_method_instance_t *mi, size_t
25662572                    codeinst -> rettype_const  =  unspec -> rettype_const ;
25672573                    jl_atomic_store_release (& codeinst -> invoke , unspec_invoke );
25682574                    jl_mi_cache_insert (mi , codeinst );
2569-                     record_precompile_statement (mi , 0 );
2575+                     record_precompile_statement (mi , 0.0  ,  0 );
25702576                    return  codeinst ;
25712577                }
25722578            }
@@ -2583,7 +2589,7 @@ jl_code_instance_t *jl_compile_method_internal(jl_method_instance_t *mi, size_t
25832589                0 , 1 , ~(size_t )0 , 0 , 0 , jl_nothing , 0 );
25842590            jl_atomic_store_release (& codeinst -> invoke , jl_fptr_interpret_call );
25852591            jl_mi_cache_insert (mi , codeinst );
2586-             record_precompile_statement (mi , 0 );
2592+             record_precompile_statement (mi , 0.0  ,  0 );
25872593            return  codeinst ;
25882594        }
25892595        if  (compile_option  ==  JL_OPTIONS_COMPILE_OFF ) {
@@ -2638,7 +2644,7 @@ jl_code_instance_t *jl_compile_method_internal(jl_method_instance_t *mi, size_t
26382644        jl_mi_cache_insert (mi , codeinst );
26392645    }
26402646    else  if  (did_compile ) {
2641-         record_precompile_statement (mi , compile_time );
2647+         record_precompile_statement (mi , compile_time ,  0 );
26422648    }
26432649    jl_atomic_store_relaxed (& codeinst -> precompile , 1 );
26442650    return  codeinst ;
0 commit comments