From faebebc8f4b4587c9c1849e20473ef9ef6678ded Mon Sep 17 00:00:00 2001 From: krasimir Date: Wed, 25 May 2016 09:36:05 +0000 Subject: pgf_generate_all now works with literals as well --- src/runtime/c/pgf/jit.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) (limited to 'src/runtime/c/pgf/jit.c') diff --git a/src/runtime/c/pgf/jit.c b/src/runtime/c/pgf/jit.c index 011d10899..4fd80dac0 100644 --- a/src/runtime/c/pgf/jit.c +++ b/src/runtime/c/pgf/jit.c @@ -154,6 +154,57 @@ pgf_jit_predicate(PgfReader* rdr, PgfAbstr* abstr, abscat->predicate = (PgfFunction) jit_get_ip().ptr; + if (strcmp(abscat->name, "String") == 0) { + gu_printf(out, err, " MK_STRING\n"); + + jit_prepare(2); + jit_pusharg_p(JIT_VCLOS); + jit_pusharg_p(JIT_VSTATE); + jit_finish(pgf_reasoner_mk_string); + +#ifdef PGF_JIT_DEBUG + gu_puts(" RET\n", out, err); +#endif + // compile RET + jit_bare_ret(); + + return; + } + + if (strcmp(abscat->name, "Int") == 0) { + gu_printf(out, err, " MK_INT\n"); + + jit_prepare(2); + jit_pusharg_p(JIT_VCLOS); + jit_pusharg_p(JIT_VSTATE); + jit_finish(pgf_reasoner_mk_int); + +#ifdef PGF_JIT_DEBUG + gu_puts(" RET\n", out, err); +#endif + // compile RET + jit_bare_ret(); + + return; + } + + if (strcmp(abscat->name, "Float") == 0) { + gu_printf(out, err, " MK_FLOAT\n"); + + jit_prepare(2); + jit_pusharg_p(JIT_VCLOS); + jit_pusharg_p(JIT_VSTATE); + jit_finish(pgf_reasoner_mk_float); + +#ifdef PGF_JIT_DEBUG + gu_puts(" RET\n", out, err); +#endif + // compile RET + jit_bare_ret(); + + return; + } + PgfAbsFun* absfun = NULL; PgfAbsFun* next_absfun = NULL; -- cgit v1.2.3