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

index ff0f5699c2857df7378887fdafeb39c7183aaf09..71dda173995a7543d9a85ff52f8c2306285f1ffb 100644 (file)
@@ -1386,9 +1386,9 @@ emit_limple_insn (Lisp_Object insn)
 }
 
 \f
-/*******************************/
-/* Code emitters for inlines.  */
-/*******************************/
+/**************/
+/* Inliners.  */
+/**************/
 
 static gcc_jit_rvalue *
 emit_add1 (Lisp_Object insn)
@@ -1452,6 +1452,15 @@ emit_numperp (Lisp_Object insn)
                                   &res);
 }
 
+static gcc_jit_rvalue *
+emit_integerp (Lisp_Object insn)
+{
+  gcc_jit_rvalue *x = emit_mvar_val (SECOND (insn));
+  gcc_jit_rvalue *res = emit_INTEGERP (x);
+  return gcc_jit_context_new_call (comp.ctxt, NULL, comp.bool_to_lisp_obj, 1,
+                                  &res);
+}
+
 \f
 /****************************************************************/
 /* Inline function definition and lisp data structure follows.  */
@@ -2329,6 +2338,7 @@ DEFUN ("comp-init-ctxt", Fcomp_init_ctxt, Scomp_init_ctxt,
                        emit_simple_limple_call_void_ret);
       register_emitter (Qhelper_save_restriction,
                        emit_simple_limple_call_void_ret);
+      /* Inliners.  */
       register_emitter (QFadd1, emit_add1);
       register_emitter (QFsub1, emit_sub1);
       register_emitter (QFconsp, emit_consp);
@@ -2336,6 +2346,7 @@ DEFUN ("comp-init-ctxt", Fcomp_init_ctxt, Scomp_init_ctxt,
       register_emitter (QFcdr, emit_cdr);
       register_emitter (Qnegate, emit_negate);
       register_emitter (QFnumberp, emit_numperp);
+      register_emitter (QFintegerp, emit_integerp);
     }
 
   comp.ctxt = gcc_jit_context_acquire();
@@ -2745,6 +2756,7 @@ syms_of_comp (void)
   DEFSYM (QFcdr, "Fcdr");
   DEFSYM (Qnegate, "negate");
   DEFSYM (QFnumberp, "Fnumberp");
+  DEFSYM (QFintegerp, "Fintegerp");
 
   defsubr (&Scomp_init_ctxt);
   defsubr (&Scomp_release_ctxt);