]> git.eshelyaron.com Git - emacs.git/commitdiff
function name as annotation
authorAndrea Corallo <andrea_corallo@yahoo.it>
Wed, 10 Jul 2019 16:55:19 +0000 (18:55 +0200)
committerAndrea Corallo <akrl@sdf.org>
Wed, 1 Jan 2020 10:33:52 +0000 (11:33 +0100)
lisp/emacs-lisp/comp.el
src/comp.c

index 934c76f8429116fa365237731fef1ad93d9e2532..077e7a1eb33b8ad232a28f11090336b7e35453f3 100644 (file)
@@ -206,6 +206,10 @@ To be used when ncall-conv is nil.")
     (setf (comp-mvar-slot (comp-slot)) (comp-sp))
     (push (list '=slot (comp-slot) src-slot) comp-limple)))
 
+(defun comp-emit-annotation (str)
+  "Emit annotation STR."
+  (push `(comment ,str) comp-limple))
+
 (defun comp-push-const (val)
   "Push VAL into frame.
 VAL is known at compile time."
@@ -294,6 +298,8 @@ VAL is known at compile time."
          (comp-limple ()))
     ;; Prologue
     (comp-push-block 'entry)
+    (comp-emit-annotation (concat "Function: "
+                                  (symbol-name (comp-func-symbol-name func))))
     (cl-loop for i below (comp-args-mandatory (comp-func-args func))
              do (progn
                   (cl-incf (comp-sp))
index 1a74605934ab01efcbee2b7efa5a0f51e083f737..d6e09226cdded02bcbd54808a329507a835d430f 100644 (file)
@@ -982,7 +982,7 @@ emit_limple_inst (Lisp_Object inst)
       gcc_jit_block_end_with_jump (comp.block, NULL, target);
       comp.block = target;
     }
-  else if (EQ (op, Q_call_ass))
+  else if (EQ (op, Qcall_ass))
     {
       /* Ex: (=call #s(comp-mvar 6 1 nil nil nil)
                      (call Fcar #s(comp-mvar 4 0 nil nil nil))).  */
@@ -999,7 +999,7 @@ emit_limple_inst (Lisp_Object inst)
                                    comp.frame[slot_n],
                                    res);
     }
-  else if (EQ (op, Q_par_ass))
+  else if (EQ (op, Qpar_ass))
     {
       /* Ex: (=par #s(comp-mvar 2 0 nil nil nil) 0).  */
       EMACS_UINT slot_n = XFIXNUM (FUNCALL1 (comp-mvar-slot, arg0));
@@ -1012,9 +1012,14 @@ emit_limple_inst (Lisp_Object inst)
                                    comp.frame[slot_n],
                                    param);
     }
-  else if (EQ (op, Q_const_ass))
+  else if (EQ (op, Qconst_ass))
     {
     }
+  else if (EQ (op, Qcomment))
+    {
+      /* Ex: (comment "Function: foo").  */
+      emit_comment((char *) SDATA (arg0));
+    }
   else if (EQ (op, Qreturn))
     {
       gcc_jit_block_end_with_return (comp.block,
@@ -1997,13 +2002,14 @@ void
 syms_of_comp (void)
 {
   /* Limple instruction set.  */
+  DEFSYM (Qcomment, "comment");
   DEFSYM (Qblock, "block");
   DEFSYM (Qjump, "jump");
   DEFSYM (Qcall, "call");
   DEFSYM (Qncall, "ncall");
-  DEFSYM (Q_par_ass, "=par");
-  DEFSYM (Q_call_ass, "=call");
-  DEFSYM (Q_const_ass, "=const");
+  DEFSYM (Qpar_ass, "=par");
+  DEFSYM (Qcall_ass, "=call");
+  DEFSYM (Qconst_ass, "=const");
   DEFSYM (Qreturn, "return");
 
   defsubr (&Scomp_init_ctxt);