[cmucl-commit] CMUCL commit: src (3 files)
Raymond Toy
rtoy at common-lisp.net
Sun Aug 21 17:16:01 CEST 2011
Date: Sunday, August 21, 2011 @ 08:16:01
Author: rtoy
Path: /project/cmucl/cvsroot/src
Modified: compiler/ltv.lisp compiler/main.lisp general-info/release-20c.txt
Improve type progagation for LOAD-TIME-VALUE.
Patch from Helmut Eller, cmucl-imp 2011-06-11.
------------------------------+
compiler/ltv.lisp | 6 +++---
compiler/main.lisp | 13 ++++++++-----
general-info/release-20c.txt | 1 +
3 files changed, 12 insertions(+), 8 deletions(-)
Index: src/compiler/ltv.lisp
diff -u src/compiler/ltv.lisp:1.4 src/compiler/ltv.lisp:1.5
--- src/compiler/ltv.lisp:1.4 Mon Apr 19 08:08:20 2010
+++ src/compiler/ltv.lisp Sun Aug 21 08:16:01 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/ltv.lisp,v 1.4 2010/04/19 15:08:20 rtoy Rel $")
+ "$Header: /project/cmucl/cvsroot/src/compiler/ltv.lisp,v 1.5 2011/08/21 15:16:01 rtoy Exp $")
;;;
;;; **********************************************************************
;;;
@@ -35,10 +35,10 @@
(compile-load-time-value (if read-only-p
form
`(make-value-cell ,form)))
- (declare (ignore type))
(ir1-convert start cont
(if read-only-p
- `(%load-time-value ',handle)
+ `(truly-the ,(type-specifier type)
+ (%load-time-value ',handle))
`(value-cell-ref (%load-time-value ',handle)))))
(let ((value
(handler-case (eval form)
Index: src/compiler/main.lisp
diff -u src/compiler/main.lisp:1.160 src/compiler/main.lisp:1.161
--- src/compiler/main.lisp:1.160 Mon Mar 28 05:07:34 2011
+++ src/compiler/main.lisp Sun Aug 21 08:16:01 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/main.lisp,v 1.160 2011/03/28 12:07:34 rtoy Exp $")
+ "$Header: /project/cmucl/cvsroot/src/compiler/main.lisp,v 1.161 2011/08/21 15:16:01 rtoy Exp $")
;;;
;;; **********************************************************************
;;;
@@ -1246,10 +1246,13 @@
(let ((lambda (compile-load-time-stuff form name t)))
(values
(fasl-dump-load-time-value-lambda lambda *compile-object*)
- (let ((type (leaf-type lambda)))
- (if (function-type-p type)
- (single-value-type (function-type-returns type))
- *wild-type*)))))
+ (or (let ((return (lambda-return lambda)))
+ (if return
+ (single-value-type (return-result-type return))))
+ (let ((type (leaf-type lambda)))
+ (if (function-type-p type)
+ (single-value-type (function-type-returns type))))
+ *wild-type*))))
;;; COMPILE-MAKE-LOAD-FORM-INIT-FORMS -- internal.
;;;
Index: src/general-info/release-20c.txt
diff -u src/general-info/release-20c.txt:1.28 src/general-info/release-20c.txt:1.29
--- src/general-info/release-20c.txt:1.28 Sun Aug 21 00:43:39 2011
+++ src/general-info/release-20c.txt Sun Aug 21 08:16:01 2011
@@ -57,6 +57,7 @@
- CMUCL no longer exits if you specify a core file with an
executable image. A warning is printed instead and the core
file is used.
+ - Improve type propagation for LOAD-TIME-VALUE.
* ANSI compliance fixes:
- Fixes for signaling errors with READ-CHAR and READ-BYTE
More information about the cmucl-commit
mailing list