[prev in list] [next in list] [prev in thread] [next in thread] 

List:       sbcl-commits
Subject:    [Sbcl-commits] master: Implement CLOSUREP without using WIDETAG-OF
From:       "Douglas Katzman" <snuglas () users ! sourceforge ! net>
Date:       2014-04-28 15:06:01
Message-ID: E1Wen8J-0000Je-Ok () sfs-ml-4 ! v29 ! ch3 ! sourceforge ! com
[Download RAW message or body]

The branch "master" has been updated in SBCL:
       via  6657f58827bc1b4d1b3e1c53a7b2397d0fc014e4 (commit)
      from  97ea245146c433449b360c7cf0e2755104634d2d (commit)

- Log -----------------------------------------------------------------
commit 6657f58827bc1b4d1b3e1c53a7b2397d0fc014e4
Author: Douglas Katzman <dougk@google.com>
Date:   Mon Apr 28 10:49:48 2014 -0400

    Implement CLOSUREP without using WIDETAG-OF
---
 src/code/kernel.lisp                     |    3 +--
 src/compiler/generic/late-type-vops.lisp |    2 ++
 src/compiler/generic/vm-fndb.lisp        |    1 +
 src/compiler/typetran.lisp               |    1 +
 4 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/code/kernel.lisp b/src/code/kernel.lisp
index 18dfabe..653d68b 100644
--- a/src/code/kernel.lisp
+++ b/src/code/kernel.lisp
@@ -164,9 +164,8 @@
 
 ;;;; CLOSURE type and accessors
 
-(declaim (inline closurep))
 (defun closurep (object)
-  (= sb!vm:closure-header-widetag (widetag-of object)))
+  (closurep object))
 
 (deftype closure ()
   '(satisfies closurep))
diff --git a/src/compiler/generic/late-type-vops.lisp b/src/compiler/generic/late-type-vops.lisp
index 4a9016b..c83542b 100644
--- a/src/compiler/generic/late-type-vops.lisp
+++ b/src/compiler/generic/late-type-vops.lisp
@@ -110,6 +110,8 @@
 (!define-type-vops fdefn-p nil nil nil
   (fdefn-widetag))
 
+(!define-type-vops closurep nil nil nil (closure-header-widetag))
+
 (!define-type-vops funcallable-instance-p nil nil nil
   (funcallable-instance-header-widetag))
 
diff --git a/src/compiler/generic/vm-fndb.lisp b/src/compiler/generic/vm-fndb.lisp
index 4416b8b..744fef5 100644
--- a/src/compiler/generic/vm-fndb.lisp
+++ b/src/compiler/generic/vm-fndb.lisp
@@ -63,6 +63,7 @@
            #!+#.(cl:if (cl:= 64 sb!vm:n-word-bits) '(and) '(or))
            signed-byte-64-p
            weak-pointer-p code-component-p lra-p
+           closurep
            funcallable-instance-p)
   (t) boolean (movable foldable flushable))
 
diff --git a/src/compiler/typetran.lisp b/src/compiler/typetran.lisp
index 840a4dc..dec9679 100644
--- a/src/compiler/typetran.lisp
+++ b/src/compiler/typetran.lisp
@@ -195,6 +195,7 @@
   (define-type-predicate simple-vector-p simple-vector)
   (define-type-predicate stringp string)
   (define-type-predicate %instancep instance)
+  (define-type-predicate closurep closure)
   (define-type-predicate funcallable-instance-p funcallable-instance)
   (define-type-predicate symbolp symbol)
   (define-type-predicate vectorp vector))

-----------------------------------------------------------------------


hooks/post-receive
-- 
SBCL

------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.  Get 
unparalleled scalability from the best Selenium testing platform available.
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
_______________________________________________
Sbcl-commits mailing list
Sbcl-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sbcl-commits
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic