]> git.eshelyaron.com Git - emacs.git/commitdiff
inline car cdr
authorAndrea Corallo <andrea_corallo@yahoo.it>
Thu, 15 Aug 2019 16:49:36 +0000 (18:49 +0200)
committerAndrea Corallo <akrl@sdf.org>
Wed, 1 Jan 2020 10:34:00 +0000 (11:34 +0100)
src/comp.c

index fed777e9e0b713cb15207b4541d849d6e0319e8e..dd43ed403447056c5f5ba2a1daadc71eda34b9eb 100644 (file)
@@ -1409,6 +1409,26 @@ emit_consp (Lisp_Object insn)
                                   1, &res);
 }
 
+static gcc_jit_rvalue *
+emit_car (Lisp_Object insn)
+{
+  gcc_jit_rvalue *x = emit_mvar_val (SECOND (insn));
+  return gcc_jit_context_new_call (comp.ctxt,
+                                  NULL,
+                                  comp.car,
+                                  1, &x);
+}
+
+static gcc_jit_rvalue *
+emit_cdr (Lisp_Object insn)
+{
+  gcc_jit_rvalue *x = emit_mvar_val (SECOND (insn));
+  return gcc_jit_context_new_call (comp.ctxt,
+                                  NULL,
+                                  comp.cdr,
+                                  1, &x);
+}
+
 \f
 /****************************************************************/
 /* Inline function definition and lisp data structure follows.  */
@@ -2219,6 +2239,8 @@ DEFUN ("comp-init-ctxt", Fcomp_init_ctxt, Scomp_init_ctxt,
       register_emitter (QFadd1, emit_add1);
       register_emitter (QFsub1, emit_sub1);
       register_emitter (QFconsp, emit_consp);
+      register_emitter (QFcar, emit_car);
+      register_emitter (QFcdr, emit_cdr);
     }
 
   comp.ctxt = gcc_jit_context_acquire();
@@ -2622,6 +2644,8 @@ syms_of_comp (void)
   DEFSYM (QFadd1, "Fadd1");
   DEFSYM (QFsub1, "Fsub1");
   DEFSYM (QFconsp, "Fconsp");
+  DEFSYM (QFcar, "Fcar");
+  DEFSYM (QFcdr, "Fcdr");
 
   defsubr (&Scomp_init_ctxt);
   defsubr (&Scomp_release_ctxt);