From: Andrea Corallo Date: Mon, 24 Jun 2019 09:33:44 +0000 (+0200) Subject: add XUNTAG X-Git-Tag: emacs-28.0.90~2727^2~1440 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=483a2d39df48ef17f446f4c41171654a10ce62b2;p=emacs.git add XUNTAG --- 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) {