From 99e23fa74844ef606b7f3f33768eab6466c9dfef Mon Sep 17 00:00:00 2001 From: Stas Boukarev Date: Fri, 8 Nov 2013 02:47:41 +0400 Subject: [PATCH] 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. --- src/compiler/typetran.lisp | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) 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)) -- 1.7.10.4