Optimize testing of sealed structures.
authorStas Boukarev <stassats@gmail.com>
Thu, 7 Nov 2013 22:47:41 +0000 (02:47 +0400)
committerStas Boukarev <stassats@gmail.com>
Thu, 7 Nov 2013 22:47:41 +0000 (02:47 +0400)
Don't check for the layout validity, redefining structures is
undefined, and the non-sealed case doesn't check for it already.

src/compiler/typetran.lisp

index 9090380..b6c1a8f 100644 (file)
            ((and (eq (classoid-state class) :sealed) layout
                  (not (classoid-subclasses class)))
             ;; Sealed and has no subclasses.
-            (let ((n-layout (gensym)))
-              `(and (,pred object)
-                    (let ((,n-layout (,get-layout object)))
-                      ,@(when (policy *lexenv* (>= safety speed))
-                              `((when (layout-invalid ,n-layout)
-                                  (%layout-invalid-error object ',layout))))
-                      (eq ,n-layout ',layout)))))
+            `(and (,pred object)
+                  (eq (,get-layout object) ',layout)))
            ((and (typep class 'structure-classoid) layout)
             ;; structure type tests; hierarchical layout depths
             (let ((depthoid (layout-depthoid layout))