diff options
| author | krasimir <krasimir@chalmers.se> | 2016-05-25 09:36:05 +0000 |
|---|---|---|
| committer | krasimir <krasimir@chalmers.se> | 2016-05-25 09:36:05 +0000 |
| commit | faebebc8f4b4587c9c1849e20473ef9ef6678ded (patch) | |
| tree | 4f3cc25fac14432315630ba5ca8235591c717769 /src/runtime/c/pgf/jit.c | |
| parent | 41a3054e9be03f7496fdbe7d0716e7986524bb35 (diff) | |
pgf_generate_all now works with literals as well
Diffstat (limited to 'src/runtime/c/pgf/jit.c')
| -rw-r--r-- | src/runtime/c/pgf/jit.c | 51 |
1 files changed, 51 insertions, 0 deletions
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; |
