chiark / gitweb /
src/method-proto.lisp: Use new `definst' private-slot-name feature.
[sod] / src / method-proto.lisp
index 5687802bad3a19e53ee265c84ab30515e04927a0..d2ab7610f298596b5c3963e0173d05e1b674bba8 100644 (file)
@@ -135,7 +135,8 @@ (defgeneric compute-effective-methods (class)
    The list needn't be in any particular order."))
 
 (export '(method-entry method-entry-effective-method
-         method-entry-chain-head method-entry-chain-tail))
+         method-entry-chain-head method-entry-chain-tail
+         method-entry-role))
 (defclass method-entry ()
   ((%method :initarg :method :type effective-method
            :reader method-entry-effective-method)
@@ -263,6 +264,7 @@ (defgeneric method-entry-slot-name (entry)
 
    The default method indirects through `method-entry-slot-name-by-role'."))
 
+(export 'method-entry-slot-name-by-role)
 (defgeneric method-entry-slot-name-by-role (entry role name)
   (:documentation "Easier implementation for `method-entry-slot-name'.")
   (:method ((entry method-entry) (role (eql nil)) name) name)
@@ -336,13 +338,10 @@ (defgeneric simple-method-body (method codegen target)
 
 ;;; Additional instructions.
 
-;; HACK: use gensyms for the `class' and `expr' slots to avoid leaking the
-;; slot names, because `expr' is exported by our package, and `class' is
-;; actually from the `common-lisp' package.
 (definst convert-to-ilayout (stream :export t)
-    (#1=#:class chain-head #2=#:expr)
+    (%class chain-head %expr)
   (format stream "SOD_ILAYOUT(~@<~A, ~_~A, ~_~A~:>)"
-         #1# (sod-class-nickname chain-head) #2#))
+         class (sod-class-nickname chain-head) expr))
 
 ;;; Utilities.