From 3b8c906d75f97f0bf40fb9162c7df9ab4daf3c2c Mon Sep 17 00:00:00 2001 From: John Lorentzson Date: Thu, 3 Jul 2025 16:51:47 +0200 Subject: [PATCH] Store ASM-FUNCTIONs in a hash table keyed on name TODO: Populate the table based on the asm source code declaration comments and signal an error when a named function is missing. --- wip-duuqnd/user-side-compiler/asm-function.lisp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/wip-duuqnd/user-side-compiler/asm-function.lisp b/wip-duuqnd/user-side-compiler/asm-function.lisp index fdb39b1..51d601b 100644 --- a/wip-duuqnd/user-side-compiler/asm-function.lisp +++ b/wip-duuqnd/user-side-compiler/asm-function.lisp @@ -1,10 +1,14 @@ (in-package #:user-side-compiler) -;;; STUB, TODO +(defvar *asm-functions* (make-hash-table :test #'equalp)) (defclass asm-function () ((%name :accessor name :initarg :name))) (define-transformation (token (token-name asm-function)) - ;; TODO: Choose from a list, don't just create like this - (make-instance 'asm-function :name (name token))) + (multiple-value-bind (asm-function existsp) + (gethash (name token) *asm-functions*) + (if existsp + asm-function + (setf (gethash (name token) *asm-functions*) + (make-instance 'asm-function :name (name token))))))