[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/beardbolt c00d09a850 122/323: Use hashtables instead of
From: |
ELPA Syncer |
Subject: |
[elpa] externals/beardbolt c00d09a850 122/323: Use hashtables instead of lists as sets for labels used |
Date: |
Thu, 9 Mar 2023 10:58:23 -0500 (EST) |
branch: externals/beardbolt
commit c00d09a8507b080470f802c71cbef32cc7d22b02
Author: Jay Kamat <jaygkamat@gmail.com>
Commit: Jay Kamat <jaygkamat@gmail.com>
Use hashtables instead of lists as sets for labels used
Issue #9
---
rmsbolt.el | 25 ++++++++++++-------------
1 file changed, 12 insertions(+), 13 deletions(-)
diff --git a/rmsbolt.el b/rmsbolt.el
index 79bf730c8b..7f06deef7e 100644
--- a/rmsbolt.el
+++ b/rmsbolt.el
@@ -663,7 +663,7 @@ Lifted from
https://emacs.stackexchange.com/questions/35936/disassembly-of-a-byt
"Find used labels in ASM-LINES generated from SRC-BUFFER."
(let ((match nil)
(current-label nil)
- (labels-used nil)
+ (labels-used (make-hash-table :test #'equal))
(weak-usages (make-hash-table :test #'equal)))
(dolist (line asm-lines)
(setq match (and
@@ -674,7 +674,7 @@ Lifted from
https://emacs.stackexchange.com/questions/35936/disassembly-of-a-byt
(setq match (and (string-match rmsbolt-defines-global line)
(match-string 1 line)))
(when match
- (cl-pushnew match labels-used :test #'equal))
+ (puthash match t labels-used))
;; When we have no line or a period started line, skip
(unless (or (= 0 (length line))
(string-prefix-p "." line)
@@ -684,7 +684,7 @@ Lifted from
https://emacs.stackexchange.com/questions/35936/disassembly-of-a-byt
(string-match-p rmsbolt-defines-function line))
;; Add labels indescriminantly
(dolist (l (rmsbolt-re-seq rmsbolt-label-find line))
- (cl-pushnew l labels-used :test #'equal))
+ (puthash l t labels-used))
(when (and current-label
(or (string-match-p rmsbolt-data-defn line)
@@ -700,16 +700,15 @@ Lifted from
https://emacs.stackexchange.com/questions/35936/disassembly-of-a-byt
max-label-iter)
(not completed))
(let ((to-add nil))
- (mapc
- (lambda (label)
- (mapc
- (lambda(now-used)
- (when (not (cl-find now-used labels-used :test #'equal))
- (cl-pushnew now-used to-add :test #'equal)))
- (gethash label weak-usages)))
+ (maphash
+ (lambda (label _v)
+ (dolist (now-used (gethash label weak-usages))
+ (when (not (gethash now-used labels-used))
+ (cl-pushnew now-used to-add :test #'equal))))
labels-used)
(if to-add
- (mapc (lambda (l) (cl-pushnew l labels-used :test #'equal))
to-add)
+ (dolist (l to-add)
+ (puthash l t labels-used))
(setq completed t))))
labels-used)))
@@ -779,7 +778,7 @@ Argument SRC-BUFFER source buffer."
(string-match rmsbolt-assignment-def line)))
(match (when raw-match
(match-string 1 line)))
- (used-label (cl-find match used-labels :test #'equal)))
+ (used-label-p (gethash match used-labels)))
(cl-tagbody
;; Process file name hints
(when (string-match rmsbolt-source-file line)
@@ -814,7 +813,7 @@ Argument SRC-BUFFER source buffer."
;; continue means we don't add to the ouptut
(when match
- (if (not used-label)
+ (if (not used-label-p)
;; Unused label
(when (buffer-local-value 'rmsbolt-filter-labels src-buffer)
(go continue))
- [elpa] externals/beardbolt 171a23628c 090/323: Reorder and clarify readme usage, (continued)
- [elpa] externals/beardbolt 171a23628c 090/323: Reorder and clarify readme usage, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 26fc524912 083/323: Fix usage of if-let*, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 060f170a61 085/323: Clear overlays upon exiting rmsbolt mode, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 47e9fa1f59 112/323: Update README, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt c6831044c6 092/323: Update README, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 5c5e0e35db 115/323: Add prototype support for emacs lisp bytecode, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 032b3d8eef 107/323: Add melpa badge, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt d1b0f7c2ba 118/323: Fix compilation warnings, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 0ed6a01cd1 119/323: Fix initial run of emacs-lisp disassembler, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 77842a5f78 126/323: Add elisp support to docs, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt c00d09a850 122/323: Use hashtables instead of lists as sets for labels used,
ELPA Syncer <=
- [elpa] externals/beardbolt c009c2df44 130/323: Trim left side of strings to activate 'starting with period' opt, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 9e38f2238b 135/323: Add support for functions as arguments to :compile-cmd, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 1cc069a121 132/323: Quote filenames before passing them as shell arguments, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 495d481a94 136/323: Move rmsbolt-command initialization to end, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 39055a3dc4 133/323: Fix disassembly of partial files in C/C++, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 27e7bb714f 139/323: Add suppport for PHP, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 4b6abc5ef8 129/323: Optimize rmsbolt-process-src-asm-lines, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 67238e0272 138/323: Add rmsbolt-default-directory customization, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 9b2c85397c 149/323: Add texinfo version of docs, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt ec99a1aa31 146/323: Attempt to fix whitespace clearing on hot recompiles, ELPA Syncer, 2023/03/09