X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Ftypetran.lisp;h=0eba7aa8d2eaf2ca2116a934cd9a9304c8f35742;hb=2287399f246955badf9d61bf123145e76eaf884d;hp=8d8b421b485632ff6acc4abeedfb61c25618038d;hpb=a682f4c392bc874a6a898632889319ebdd8821fc;p=sbcl.git diff --git a/src/compiler/typetran.lisp b/src/compiler/typetran.lisp index 8d8b421..0eba7aa 100644 --- a/src/compiler/typetran.lisp +++ b/src/compiler/typetran.lisp @@ -137,6 +137,7 @@ (define-type-predicate rationalp rational) (define-type-predicate realp real) (define-type-predicate sequencep sequence) + (define-type-predicate extended-sequence-p extended-sequence) (define-type-predicate simple-bit-vector-p simple-bit-vector) (define-type-predicate simple-string-p simple-string) (define-type-predicate simple-vector-p simple-vector) @@ -415,8 +416,8 @@ class:~% ~S" class)) (t - ;; Delay the type transform to give type propagation a chance. - (delay-ir1-transform node :constraint) + ;; Delay the type transform to give type propagation a chance. + (delay-ir1-transform node :constraint) ;; Otherwise transform the type test. (multiple-value-bind (pred get-layout) @@ -456,8 +457,17 @@ (and (> (layout-depthoid ,n-layout) ,depthoid) (locally (declare (optimize (safety 0))) - (eq (svref (layout-inherits ,n-layout) - ,depthoid) + ;; Use DATA-VECTOR-REF directly, + ;; since that's what SVREF in a + ;; SAFETY 0 lexenv will eventually be + ;; transformed to. This can give a + ;; large compilation speedup, since + ;; %INSTANCE-TYPEPs are frequently + ;; created during GENERATE-TYPE-CHECKS, + ;; and the normal aref transformation path + ;; is pretty heavy. + (eq (data-vector-ref (layout-inherits ,n-layout) + ,depthoid) ',layout)))))))) ((and layout (>= (layout-depthoid layout) 0)) ;; hierarchical layout depths for other things (e.g. @@ -475,7 +485,8 @@ (let ((,n-inherits (layout-inherits ,n-layout))) (declare (optimize (safety 0))) (and (> (length ,n-inherits) ,depthoid) - (eq (svref ,n-inherits ,depthoid) + ;; See above. + (eq (data-vector-ref ,n-inherits ,depthoid) ',layout)))))))) (t (/noshow "default case -- ,PRED and CLASS-CELL-TYPEP")