static void jl_compile_specializations(void) { // this "found" array will contain function // type signatures that were inferred but haven't been compiled jl_array_t *m = jl_alloc_vec_any(0); JL_GC_PUSH1(&m); jl_foreach_reachable_mtable(precompile_enq_all_specializations_, m); size_t i, l; for (i = 0, l = jl_array_len(m); i < l; i++) { jl_compile_hint((jl_tupletype_t*)jl_array_ptr_ref(m, i)); } JL_GC_POP(); }
static void jl_compile_specializations(void) { // this "found" array will contain function // type signatures that were inferred but haven't been compiled jl_array_t *m = jl_alloc_vec_any(0); JL_GC_PUSH1(&m); jl_foreach_reachable_mtable(precompile_enq_all_specializations_, m); // TODO: Ensure stable ordering to make inference problems more reproducible (#29923) //jl_sort_types((jl_value_t**)jl_array_data(m), jl_array_len(m)); size_t i, l = jl_array_len(m); for (i = 0; i < l; i++) { jl_method_instance_t *mi = (jl_method_instance_t*)jl_array_ptr_ref(m, i); jl_compile_now(mi); } JL_GC_POP(); }
static void jl_compile_all_defs(void) { // this "found" array will contain // TypeMapEntries for Methods and MethodInstances that need to be compiled jl_array_t *m = jl_alloc_vec_any(0); JL_GC_PUSH1(&m); while (1) { jl_foreach_reachable_mtable(compile_all_enq_, m); size_t changes = jl_array_len(m); if (!changes) break; _compile_all_deq(m); jl_array_del_end(m, changes); } JL_GC_POP(); }