From: Stas Boukarev Date: Thu, 7 Nov 2013 22:47:41 +0000 (+0400) Subject: Optimize testing of sealed structures. X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=99e23fa74844ef606b7f3f33768eab6466c9dfef;p=sbcl.git Optimize testing of sealed structures. Don't check for the layout validity, redefining structures is undefined, and the non-sealed case doesn't check for it already. --- diff --git a/src/compiler/typetran.lisp b/src/compiler/typetran.lisp index 9090380..b6c1a8f 100644 --- a/src/compiler/typetran.lisp +++ b/src/compiler/typetran.lisp @@ -543,13 +543,8 @@ ((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))