svm: instructions is now a hash table.
authorMatt Birkholz <matt@birkholz.chandler.az.us>
Wed, 1 Feb 2012 18:38:03 +0000 (11:38 -0700)
committerMatt Birkholz <matt@birkholz.chandler.az.us>
Wed, 1 Feb 2012 18:38:03 +0000 (11:38 -0700)
src/compiler/machines/svm/assembler-runtime.scm

index 6162c603369fdb1e40c55dc712df55cce5168238..d6ead44baab93c6d7fc95954dad68b14dbe1c3fc 100644 (file)
@@ -125,19 +125,17 @@ USA.
 ;;(define-import instructions (compiler lap-syntaxer))
 
 (define (add-instruction! keyword assemblers)
-  (let ((entry (assq keyword instructions)))
-    (if (pair? entry)
-       (set-cdr! entry assemblers)
-       (set! instructions (cons (cons keyword assemblers) instructions)))))
+  (hash-table/put! instructions keyword assemblers)
+  keyword)
 
 (define (add-instruction-assembler! keyword assembler)
-  (let ((entry (assq keyword instructions)))
-    (if entry
-       (set-cdr! entry (cons assembler (cdr entry)))
-       (set! instructions (cons (list keyword assembler) instructions)))))
+  (let ((assemblers (hash-table/get instructions keyword #f)))
+    (if assemblers
+       (hash-table/put! instructions keyword (cons assembler assemblers))
+       (hash-table/put! instructions keyword (list assembler)))))
 
 (define (clear-instructions!)
-  (set! instructions '()))
+  (hash-table/clear! instructions))
 
 (define (init-assembler-instructions!)
   ;; Initialize the assembler's instruction database using the