1.0.29.53: ...really this time...
authorNikodemus Siivola <nikodemus@random-state.net>
Sun, 28 Jun 2009 21:21:04 +0000 (21:21 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Sun, 28 Jun 2009 21:21:04 +0000 (21:21 +0000)
 (Missed version.lisp-expr and tests/compiler-test-util.lisp)

tests/compiler-test-util.lisp [new file with mode: 0644]
version.lisp-expr

diff --git a/tests/compiler-test-util.lisp b/tests/compiler-test-util.lisp
new file mode 100644 (file)
index 0000000..1ed4fa6
--- /dev/null
@@ -0,0 +1,48 @@
+;;;; Utilities for verifying features of compiled code
+
+;;;; This software is part of the SBCL system. See the README file for
+;;;; more information.
+;;;;
+;;;; While most of SBCL is derived from the CMU CL system, the test
+;;;; files (like this one) were written from scratch after the fork
+;;;; from CMU CL.
+;;;;
+;;;; This software is in the public domain and is provided with
+;;;; absolutely no warranty. See the COPYING and CREDITS files for
+;;;; more information.
+
+(defpackage :compiler-test-util
+  (:nicknames :ctu)
+  (:use :cl :sb-c :sb-kernel)
+  (:export #:compiler-derived-type
+           #:find-value-cell-values
+           #:find-named-callees))
+
+(cl:in-package :ctu)
+
+(unless (fboundp 'compiler-derived-type)
+  (defknown compiler-derived-type (t) (values t t) (movable flushable unsafe))
+  (deftransform compiler-derived-type ((x) * * :node node)
+    (sb-c::delay-ir1-transform node :optimize)
+    `(values ',(type-specifier (sb-c::lvar-type x)) t))
+  (defun compiler-derived-type (x)
+    (declare (ignore x))
+    (values t nil)))
+
+(defun find-value-cell-values (fun)
+  (let ((code (fun-code-header (%fun-fun fun))))
+    (loop for i from sb-vm::code-constants-offset below (get-header-data code)
+          for c = (code-header-ref code i)
+          when (= sb-vm::value-cell-header-widetag (widetag-of c))
+          collect (sb-vm::value-cell-ref c))))
+
+(defun find-named-callees (fun &key (type t) (name nil namep))
+  (let ((code (sb-kernel:fun-code-header (sb-kernel:%fun-fun fun))))
+    (loop for i from sb-vm::code-constants-offset below (sb-kernel:get-header-data code)
+          for c = (sb-kernel:code-header-ref code i)
+          when (and (typep c 'sb-impl::fdefn)
+                    (let ((fun (sb-impl::fdefn-fun c)))
+                      (and (typep fun type)
+                           (or (not namep)
+                               (equal name (sb-impl::fdefn-name c))))))
+          collect (sb-impl::fdefn-fun c))))
index 243108a..694ce09 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"1.0.29.52"
+"1.0.29.53"