Date: Wednesday, January 26, 2011 @ 19:49:32
Author: rtoy
Path: /project/cmucl/cvsroot/src/code
Modified: reader.lisp
Micro optimization: In SET-CMT-ENTRY, if the char-code is above
attribute-table-limit and if the newvalue is #'read-token, we don't
actually add the entry to the character-macro-hash-table, because that
is the default value for the hash-table. This helps to keep the
hash-table size small.
-------------+
reader.lisp | 12 +++++++++---
1 file changed, 9 insertions(+)…
[View More], 3 deletions(-)
Index: src/code/reader.lisp
diff -u src/code/reader.lisp:1.67 src/code/reader.lisp:1.68
--- src/code/reader.lisp:1.67 Tue Apr 20 13:57:45 2010
+++ src/code/reader.lisp Wed Jan 26 19:49:32 2011
@@ -5,7 +5,7 @@
;;; Carnegie Mellon University, and has been placed in the public domain.
;;;
(ext:file-comment
- "$Header: /project/cmucl/cvsroot/src/code/reader.lisp,v 1.67 2010-04-20 17:57:45 rtoy Rel $")
+ "$Header: /project/cmucl/cvsroot/src/code/reader.lisp,v 1.68 2011-01-27 00:49:32 rtoy Exp $")
;;;
;;; **********************************************************************
;;;
@@ -275,8 +275,14 @@
(setf (elt (the simple-vector (character-macro-table rt))
code)
(coerce newvalue 'function))
- (setf (gethash code (character-macro-hash-table rt))
- (coerce newvalue 'function)))))
+ (let ((f (coerce newvalue 'function)))
+ ;; Don't add an entry if the function would be the same as
+ ;; the default. This needs to be coordinated with
+ ;; GET-CMT-ENTRY above.
+ (if (eq f #'read-token)
+ f
+ (setf (gethash code (character-macro-hash-table rt))
+ f))))))
(defun undefined-macro-char (stream char)
(unless *read-suppress*
[View Less]
Date: Friday, January 21, 2011 @ 10:44:58
Author: rtoy
Path: /project/cmucl/cvsroot/src/code
Modified: foreign.lisp
For Darwin, we need to specify -arch i386 if we need to run ld so that
we produce 32-bit binaries instead of the default 64-bit (on 10.6 and
later).
--------------+
foreign.lisp | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
Index: src/code/foreign.lisp
diff -u src/code/foreign.lisp:1.59 src/code/foreign.lisp:1.60
--- src/code/foreign.lisp:1.59 Tue Apr …
[View More]20 13:57:44 2010
+++ src/code/foreign.lisp Fri Jan 21 10:44:58 2011
@@ -5,7 +5,7 @@
;;; Carnegie Mellon University, and has been placed in the public domain.
;;;
(ext:file-comment
- "$Header: /project/cmucl/cvsroot/src/code/foreign.lisp,v 1.59 2010-04-20 17:57:44 rtoy Rel $")
+ "$Header: /project/cmucl/cvsroot/src/code/foreign.lisp,v 1.60 2011-01-21 15:44:58 rtoy Exp $")
;;;
;;; **********************************************************************
;;;
@@ -881,6 +881,8 @@
#+(or solaris linux) "-G"
#+(or freebsd OpenBSD NetBSD irix) "-shared"
#+darwin "-dylib"
+ #+darwin "-arch"
+ #+darwin "i386"
"-o"
output-file
;; Cause all specified libs to be loaded in full
[View Less]
Date: Tuesday, January 11, 2011 @ 22:57:44
Author: rtoy
Path: /project/cmucl/cvsroot/cmucl-www/cmucl-www/www/news
Modified: index.html
Update with 2011-01 changes.
------------+
index.html | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
Index: cmucl-www/cmucl-www/www/news/index.html
diff -u cmucl-www/cmucl-www/www/news/index.html:1.44 cmucl-www/cmucl-www/www/news/index.html:1.45
--- cmucl-www/cmucl-www/www/news/index.html:1.44 Mon Dec 6 20:25:14 2010
+++ …
[View More]cmucl-www/cmucl-www/www/news/index.html Tue Jan 11 22:57:44 2011
@@ -11,6 +11,39 @@
<p>
<dl>
+<dt><strong>Snapshot 2011-01</strong>
+<dd>
+ The 2011-01 snapshot has been released. See the release notes for
+ details, but here is a quick summary of the changes between the
+ this snapshot and the previous snapshot.
+ <ul>
+ <li> Initial support for Solaris/x86. CMUCL will run on Solaris/x86
+ with all features available. </li>
+ <li> <code>UNINTERN</code> no longer removes the wrong symbol. <code>UNINTERN</code> would
+ remove the symbol when inherited from another package although it
+ should not.
+ <li> <code>DEFSTRUCT</code> allows multiple keyword constructors as required by the spec..
+ </li>
+ <li> <code>SUBSEQ</code> with an end index less than the start index sometimes
+ crashes CMUCL. Now, signal an error if the boudns are not
+ valid.
+ </li>
+ <li> Localization support was causing many calls to stat trying to
+ find non-existent translation files. This has been fixed so
+ that the results are cached. (If new translations are added,
+ the cache will need to be cleared or cmucl restarted.) This
+ change cuts building time by half on Solaris/sparc.
+ </li>
+ <li> On NetBSD, function-end breakpoints, especially for
+ tail-recursive functions, are working now.
+ </li>
+ <li> On NetBSD, display of FP numbers (sse2 and x87) during tracing
+ has been corrected. Previously, random values were displayed.
+ </li>
+ <li> Executables images can now be created on NetBSD again.</li>
+ </ul>
+</dd>
+
<dt>2010-12 snapshot
<dd>
Some of the important changes are listed below. See the <a
[View Less]
Date: Tuesday, January 11, 2011 @ 19:47:39
Author: rtoy
Path: /project/cmucl/cvsroot/cmucl-www/cmucl-www/www
Modified: index.html
Update with release notes for 2011-01.
------------+
index.html | 49 +++++++++++++++++++++++++++----------------------
1 file changed, 27 insertions(+), 22 deletions(-)
Index: cmucl-www/cmucl-www/www/index.html
diff -u cmucl-www/cmucl-www/www/index.html:1.19 cmucl-www/cmucl-www/www/index.html:1.20
--- cmucl-www/cmucl-www/www/index.html:1.19 Mon Dec 6 …
[View More]20:25:14 2010
+++ cmucl-www/cmucl-www/www/index.html Tue Jan 11 19:47:39 2011
@@ -68,31 +68,36 @@
Also see <a href="news/index.html">News</a> for older news.
<dl>
-<dt><strong>Snapshot 2010-12</strong>
+<dt><strong>Snapshot 2011-01</strong>
<dd>
- The 2010-11 snapshot has been released. See the release notes for
+ The 2011-01 snapshot has been released. See the release notes for
details, but here is a quick summary of the changes between the
- this snapshot and the 2010-11 snapshot.
+ this snapshot and the previous snapshot.
<ul>
- <li> ASDF2 updated to version 2.010.</li>
- <li> On x86, <code>REALPART</code> and <code>IMAGPART</code> no longer incorrectly returns 0
- instead of the correct part of a complex number in some
- situations.</li>
- <li> The command line parser now correctly handles the case where
- "--" is the first command option.</li>
- <li> <code>build.sh</code> was accidenally loading the site-init file, but it
- shouldn't. </li>
- <li> On sparc, the vops to add a float to a complex were broken,
- resulting in a complex number with the float as realpart and
- garbage for the imaginary part. This is now fixed.</li>
- <li> <code>XLIB::GET-BEST-AUTHORIZATION</code> will now return authorization data
- if the protocol is :local, if the xauth file contains just
- "localhost/unix:0". Previously, no authorization data was
- returned because <code>GET-BEST-AUTHORIZATION</code> was looking for the
- hostname.</li>
- <li> <code>FORMAT</code> signals an warning if <code>~:;</code> is used inside <code>~:[.</code></li>
- <li> <code>SET-SYSTEM-EXTERNAL-FORMAT</code> was not actually setting the filename
- encoding if given.</li>
+ <li> Initial support for Solaris/x86. CMUCL will run on Solaris/x86
+ with all features available. </li>
+ <li> <code>UNINTERN</code> no longer removes the wrong symbol. <code>UNINTERN</code> would
+ remove the symbol when inherited from another package although it
+ should not.
+ <li> <code>DEFSTRUCT</code> allows multiple keyword constructors as required by the spec..
+ </li>
+ <li> <code>SUBSEQ</code> with an end index less than the start index sometimes
+ crashes CMUCL. Now, signal an error if the boudns are not
+ valid.
+ </li>
+ <li> Localization support was causing many calls to stat trying to
+ find non-existent translation files. This has been fixed so
+ that the results are cached. (If new translations are added,
+ the cache will need to be cleared or cmucl restarted.) This
+ change cuts building time by half on Solaris/sparc.
+ </li>
+ <li> On NetBSD, function-end breakpoints, especially for
+ tail-recursive functions, are working now.
+ </li>
+ <li> On NetBSD, display of FP numbers (sse2 and x87) during tracing
+ has been corrected. Previously, random values were displayed.
+ </li>
+ <li> Executables images can now be created on NetBSD again.</li>
</ul>
</dd>
[View Less]
Date: Tuesday, January 11, 2011 @ 19:41:34
Author: rtoy
Path: /project/cmucl/cvsroot/src/compiler
Modified: srctran.lisp
Transform (EQ foo NIL) to the equivalent (IF foo NIL T). Optimization
suggested by Helmut Eller on cmucl-imp, 2011-01-08.
--------------+
srctran.lisp | 25 ++++++++++++++++++++++++-
1 file changed, 24 insertions(+), 1 deletion(-)
Index: src/compiler/srctran.lisp
diff -u src/compiler/srctran.lisp:1.173 src/compiler/srctran.lisp:1.174
--- src/compiler/srctran.…
[View More]lisp:1.173 Tue Apr 20 13:57:46 2010
+++ src/compiler/srctran.lisp Tue Jan 11 19:41:34 2011
@@ -5,7 +5,7 @@
;;; Carnegie Mellon University, and has been placed in the public domain.
;;;
(ext:file-comment
- "$Header: /project/cmucl/cvsroot/src/compiler/srctran.lisp,v 1.173 2010-04-20 17:57:46 rtoy Rel $")
+ "$Header: /project/cmucl/cvsroot/src/compiler/srctran.lisp,v 1.174 2011-01-12 00:41:34 rtoy Exp $")
;;;
;;; **********************************************************************
;;;
@@ -2945,6 +2945,29 @@
(%deftransform x '(function * *) #'commutative-arg-swap
"place constant arg last."))
+;;; Convert (EQ foo NIL) and (EQ NIL foo) into the equivalent (if foo
+;;; nil t), like we do for NULL and NOT so that IF optimizations will
+;;; eliminate redundant negations.
+(deftransform eq ((x y) (t t) * :when :both)
+ ;; It would be nice to use commutative-arg-swap above for this.
+ ;; Then we only need to handle one case. But if we do that
+ ;; commutative-arg-swap converts (eq 'declare x) to (eq x declare),
+ ;; losing the quote on declare. I'm too lazy to fix that in
+ ;; commutative-arg-swap, so we do everything here.
+ (cond ((and (constant-continuation-p x)
+ (not (constant-continuation-p y))
+ (eq nil (continuation-value x)))
+ ;; (EQ NIL foo) case
+ `(if y nil t))
+ ((and (constant-continuation-p y)
+ (not (constant-continuation-p x))
+ (eq nil (continuation-value y)))
+ ;; (EQ foo NIL) case
+ `(if x nil t))
+ (t
+ ;; Give up on all others.
+ (give-up))))
+
;;; Handle the case of a constant boole-code.
;;;
(deftransform boole ((op x y) * * :when :both)
[View Less]