From 5238cd1e6a9b3c310743fdb4497f8f16d965367e Mon Sep 17 00:00:00 2001 From: Andrea Corallo Date: Tue, 21 May 2019 21:24:34 +0200 Subject: [PATCH] add varbind support --- src/comp.c | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/src/comp.c b/src/comp.c index 9713a6fd459..5bc2c8fa4e8 100644 --- a/src/comp.c +++ b/src/comp.c @@ -353,30 +353,34 @@ compile_f (const char *f_name, ptrdiff_t bytestr_length, } break; + case Bvarbind6: + op = FETCH; + goto varbind; + + case Bvarbind7: + op = FETCH2; + goto varbind; + case Bvarbind: - printf("Bvarbind\n"); - break; case Bvarbind1: - printf("Bvarbind1\n"); - break; case Bvarbind2: - printf("Bvarbind2\n"); - break; case Bvarbind3: - printf("Bvarbind3\n"); - break; case Bvarbind4: - printf("Bvarbind4\n"); - break; case Bvarbind5: - printf("Bvarbind5\n"); - break; - case Bvarbind6: - printf("Bvarbind6\n"); - break; - case Bvarbind7: - printf("Bvarbind7\n"); - break; + op -= Bvarbind; + varbind: + { + POP1; + args[1] = args[0]; + args[0] = gcc_jit_context_new_rvalue_from_ptr(comp.ctxt, + comp.lisp_obj, + vectorp[op]); + + res = jit_emit_call ("specbind", 2, args); + PUSH (gcc_jit_lvalue_as_rvalue (res)); + break; + } + case Bcall: printf("Bcall\n"); break; -- 2.39.5