Change instructions alist to a hash table.
authorJoe Marshall <eval.apply@gmail.com>
Wed, 18 Jan 2012 04:12:35 +0000 (20:12 -0800)
committerJoe Marshall <eval.apply@gmail.com>
Wed, 18 Jan 2012 04:12:35 +0000 (20:12 -0800)
src/compiler/back/syntax.scm

index 388fb43443f43378828565551e2fdd0ed5209707..91665016e4b856b4168ab8529734b8952cb6da58 100644 (file)
@@ -69,20 +69,17 @@ USA.
        (match-result))))
 
 (define (instruction-lookup instruction)
-  (pattern-lookup
-   (cdr (or (assq (car instruction) instructions)
-           (error "INSTRUCTION-LOOKUP: Unknown keyword" (car instruction))))
-   (cdr instruction)))
+  (let ((pattern (hash-table/get instructions (car instruction) #f)))
+    (if pattern
+       (pattern-lookup pattern (cdr instruction))
+       (error "INSTRUCTION-LOOKUP: Unknown keyword" (car instruction)))))
 
 (define (add-instruction! keyword lookup)
-  (let ((entry (assq keyword instructions)))
-    (if entry
-       (set-cdr! entry lookup)
-       (set! instructions (cons (cons keyword lookup) instructions))))
+  (hash-table/put! instructions keyword lookup)
   keyword)
 
 (define instructions
-  '())
+  (make-strong-eq-hash-table))
 \f
 (define (integer-syntaxer expression environment coercion-type size)
   (let ((name (make-coercion-name coercion-type size)))