From a9bbe0a2488348adbeb5af6f42be114a53541c3f Mon Sep 17 00:00:00 2001 From: Yichao Yu Date: Fri, 9 Jan 2015 03:32:38 -0500 Subject: [PATCH] missing compile --- src/gf.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/gf.c b/src/gf.c index a338e3ed3d303..2e9e3bf003fd3 100644 --- a/src/gf.c +++ b/src/gf.c @@ -1671,6 +1671,7 @@ DLLEXPORT jl_value_t *jl_gf_invoke_lookup(jl_function_t *gf, jl_tuple_t *types) return (jl_value_t*)m; } +// tt has to be a leaf type. jl_function_t* jl_gf_invoke_get_specialization(jl_function_t *gf, jl_tuple_t *types, jl_tuple_t *tt) @@ -1693,6 +1694,7 @@ jl_gf_invoke_get_specialization(jl_function_t *gf, jl_tuple_t *types, mfunc = jl_method_table_assoc_exact_by_type(m->invokes, tt); } if (mfunc != jl_bottom_func) { + jl_compile(mfunc); return mfunc; } @@ -1714,18 +1716,14 @@ jl_gf_invoke_get_specialization(jl_function_t *gf, jl_tuple_t *types, assert(ti != (jl_value_t*)jl_bottom_type); (void)ti; // don't bother computing this if no arguments are tuples - size_t i; - for (i = 0;i < jl_tuple_len(tt);i++) { - if (jl_is_tuple(jl_tupleref(tt,i))) { + for (size_t i = 0;i < jl_tuple_len(tt);i++) { + if (jl_is_tuple(jl_tupleref(tt, i))) { + newsig = (jl_tuple_t*)jl_instantiate_type_with( + (jl_value_t*)m->sig, &jl_tupleref(tpenv, 0), + jl_tuple_len(tpenv) / 2); break; } } - if (i < jl_tuple_len(tt)) { - newsig = - (jl_tuple_t*)jl_instantiate_type_with((jl_value_t*)m->sig, - &jl_tupleref(tpenv, 0), - jl_tuple_len(tpenv) / 2); - } } mfunc = cache_method(m->invokes, tt, m->func, newsig, tpenv); JL_GC_POP();