1.0.7.35: SLOT-VALUE and SET-SLOT-VALUE transforms aren't important
authorNikodemus Siivola <nikodemus@random-state.net>
Sat, 21 Jul 2007 00:05:15 +0000 (00:05 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Sat, 21 Jul 2007 00:05:15 +0000 (00:05 +0000)
 * No compiler notes for default policy.

 * Test case.

src/pcl/compiler-support.lisp
tests/clos.pure.lisp
version.lisp-expr

index f32755b..e00deee 100644 (file)
 ;;; slightly more cheaply then the transforms. (Transforms add new
 ;;; lambdas, which requires more work by the compiler.)
 
-(deftransform slot-value ((object slot-name) * * :important t)
+(deftransform slot-value ((object slot-name))
   "optimize"
   (let (c-slot-name)
     (if (and (pcl-boot-state-complete-p)
 
 (deftransform sb-pcl::set-slot-value ((object slot-name new-value)
                                       (t symbol t) t
-                                      :important t
-                                      ;; see comment in the
-                                      ;; compiler-macro
+                                      ;; Safe code wants to check the
+                                      ;; type, and the global accessor
+                                      ;; won't do that. Also see the
+                                      ;; comment in the
+                                      ;; compiler-macro.
                                       :policy (< safety 3))
   "optimize"
   (let (c-slot-name)
index 803b48a..aec1850 100644 (file)
                      (when (and std (< std last))
                        (push `(:std ,c) result))))))
     (assert (null result))))
+
+;; No compiler-notes for non-constant slot-names in default policy.
+(handler-case
+    (compile nil '(lambda (x y z)
+                   (setf (slot-value x z)
+                         (slot-value y z))))
+  (sb-ext:compiler-note (e)
+    (error e)))
+
+
index f331a94..fe8d58b 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"1.0.7.34"
+"1.0.7.35"