From 483a2d39df48ef17f446f4c41171654a10ce62b2 Mon Sep 17 00:00:00 2001 From: Andrea Corallo Date: Mon, 24 Jun 2019 11:33:44 +0200 Subject: [PATCH] add XUNTAG --- src/comp.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/comp.c b/src/comp.c index 2bffba08334..f754778468b 100644 --- a/src/comp.c +++ b/src/comp.c @@ -496,6 +496,24 @@ emit_lval_XLP (gcc_jit_lvalue *obj) comp.lisp_obj_as_ptr); } +static gcc_jit_rvalue * +emit_rval_XUNTAG (gcc_jit_rvalue *a, gcc_jit_type *type, unsigned lisp_word_tag) +{ + /* #define XUNTAG(a, type, ctype) ((ctype *) + ((char *) XLP (a) - LISP_WORD_TAG (type))) */ + + return emit_cast (type, + gcc_jit_context_new_binary_op ( + comp.ctxt, + NULL, + GCC_JIT_BINARY_OP_MINUS, + comp.emacs_int_type, + emit_rval_XLI (a), + gcc_jit_context_new_rvalue_from_int (comp.ctxt, + comp.int_type, + lisp_word_tag))); +} + static gcc_jit_rvalue * emit_TAGGEDP (gcc_jit_rvalue *obj, unsigned tag) { -- 2.39.5