From: Andrea Corallo Date: Wed, 10 Jul 2019 16:55:19 +0000 (+0200) Subject: function name as annotation X-Git-Tag: emacs-28.0.90~2727^2~1367 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=65918ebff8ed764a3dcfb3d7f4c95a4cb854b0f7;p=emacs.git function name as annotation --- diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el index 934c76f8429..077e7a1eb33 100644 --- a/lisp/emacs-lisp/comp.el +++ b/lisp/emacs-lisp/comp.el @@ -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)) diff --git a/src/comp.c b/src/comp.c index 1a74605934a..d6e09226cdd 100644 --- a/src/comp.c +++ b/src/comp.c @@ -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);