[cl-store-cvs] CVS cl-store/sbcl

sross sross at common-lisp.net
Tue Mar 14 10:58:59 UTC 2006


Update of /project/cl-store/cvsroot/cl-store/sbcl
In directory clnet:/tmp/cvs-serv22833/sbcl

Modified Files:
	custom.lisp 
Log Message:
Fixed structure definition storing for more recent sbcl versions.


--- /project/cl-store/cvsroot/cl-store/sbcl/custom.lisp	2005/10/04 08:14:02	1.10
+++ /project/cl-store/cvsroot/cl-store/sbcl/custom.lisp	2006/03/14 10:58:59	1.11
@@ -101,11 +101,36 @@
   (funcall (compile nil `(lambda () ,@(sbcl-struct-defs dd))))
   (find-class (dd-name dd)))
 
+;; From 0.9.6.25 sb-kernel::%defstruct
+;; takes a source location as a third argument.
+(eval-when (:compile-toplevel)
+  (labels ((make-version (string)
+             (map-into (make-list 4 :initial-element 0)
+                       #'parse-integer
+                       (asdf::split string nil '(#\.))))
+           (version>= (v1 v2)
+             (loop for x in (make-version v1)
+                   for y in (make-version v2)
+                   when (> x y) :do (return t)
+                   when (> y x) :do (return nil)
+                   finally (return t))))
+    (when (version>= (lisp-implementation-version)
+                     "0.9.6.25")
+      (pushnew :defstruct-has-source-location *features*))))
+
+asdf::version-satisfies
+(defun sb-kernel-defstruct (dd supers source)
+  (declare (ignorable source))
+  #+defstruct-has-source-location 
+  (sb-kernel::%defstruct dd supers source)
+  #-defstruct-has-source-location
+  (sb-kernel::%defstruct dd supers))
+
 (defun sbcl-define-structure (dd supers)
   (cond ((or *nuke-existing-classes*  
              (not (find-class (dd-name dd) nil)))
          ;; create-struct
-         (sb-kernel::%defstruct dd supers)
+         (sb-kernel-defstruct dd supers nil)
          ;; compiler stuff
          (sb-kernel::%compiler-defstruct dd supers) 
          ;; create make-?




More information about the Cl-store-cvs mailing list