Rework `comp-c-func-name' arguments

* lisp/emacs-lisp/comp.el (comp-c-func-name): Add FIRST argument
	to ignore the compiler context and return the first name.

	* lisp/emacs-lisp/disass.el (disassemble-internal): Update the
	`comp-c-func-name' call.
This commit is contained in:
Andrea Corallo 2020-07-02 21:32:09 +02:00
parent b67e156041
commit 8f81859497
2 changed files with 6 additions and 4 deletions

View file

@ -566,9 +566,11 @@ instruction."
(or (comp-spill-decl-spec function-name 'speed)
comp-speed))
(defun comp-c-func-name (name prefix)
(defun comp-c-func-name (name prefix &optional first)
"Given NAME return a name suitable for the native code.
Put PREFIX in front of it."
Add PREFIX in front of it. If FIRST is not nil pick the first
available name ignoring compilation context and potential name
clashes."
;; Unfortunatelly not all symbol names are valid as C function names...
;; Nassi's algorithm here:
(let* ((orig-name (if (symbolp name) (symbol-name name) name))
@ -583,7 +585,7 @@ Put PREFIX in front of it."
"-" "_" orig-name))
(human-readable (replace-regexp-in-string
(rx (not (any "0-9a-z_"))) "" human-readable)))
(if comp-ctxt
(if (null first)
;; Prevent C namespace conflicts.
(cl-loop
with h = (comp-ctxt-funcs-h comp-ctxt)

View file

@ -96,7 +96,7 @@ redefine OBJECT if it is a symbol."
(regexp-quote
(concat "<"
(comp-c-func-name
(subr-name obj) "F")
(subr-name obj) "F" t)
">:"))))
(beginning-of-line)
(delete-region (point-min) (point))