projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
0.7.3.2:
[sbcl.git]
/
src
/
compiler
/
main.lisp
diff --git
a/src/compiler/main.lisp
b/src/compiler/main.lisp
index
82faea7
..
c44d601
100644
(file)
--- a/
src/compiler/main.lisp
+++ b/
src/compiler/main.lisp
@@
-14,7
+14,7
@@
(in-package "SB!C")
;;; FIXME: Doesn't this belong somewhere else, like early-c.lisp?
(in-package "SB!C")
;;; FIXME: Doesn't this belong somewhere else, like early-c.lisp?
-(declaim (special *constants* *free-variables* *component-being-compiled*
+(declaim (special *constants* *free-vars* *component-being-compiled*
*code-vector* *next-location* *result-fixups*
*free-funs* *source-paths*
*seen-blocks* *seen-funs* *list-conflicts-table*
*code-vector* *next-location* *result-fixups*
*free-funs* *source-paths*
*seen-blocks* *seen-funs* *list-conflicts-table*
@@
-40,13
+40,11
@@
;;; :BLOCK-COMPILE and :ENTRY-POINTS arguments that COMPILE-FILE was
;;; called with.
;;;
;;; :BLOCK-COMPILE and :ENTRY-POINTS arguments that COMPILE-FILE was
;;; called with.
;;;
-;;; *BLOCK-COMPILE-ARGUMENT* holds the original value of the
-;;; :BLOCK-COMPILE argument, which overrides any internal
-;;; declarations.
+;;; *BLOCK-COMPILE-ARG* holds the original value of the :BLOCK-COMPILE
+;;; argument, which overrides any internal declarations.
(defvar *block-compile*)
(defvar *block-compile*)
-(defvar *block-compile-argument*)
-(declaim (type (member nil t :specified)
- *block-compile* *block-compile-argument*))
+(defvar *block-compile-arg*)
+(declaim (type (member nil t :specified) *block-compile* *block-compile-arg*))
(defvar *entry-points*)
(declaim (list *entry-points*))
(defvar *entry-points*)
(declaim (list *entry-points*))
@@
-317,8
+315,8
@@
(declare (special *constraint-number* *delayed-ir1-transforms*))
(loop
(ir1-optimize-until-done component)
(declare (special *constraint-number* *delayed-ir1-transforms*))
(loop
(ir1-optimize-until-done component)
- (when (or (component-new-funs component)
- (component-reanalyze-funs component))
+ (when (or (component-new-functionals component)
+ (component-reanalyze-functionals component))
(maybe-mumble "locall ")
(locall-analyze-component component))
(dfo-as-needed component)
(maybe-mumble "locall ")
(locall-analyze-component component))
(dfo-as-needed component)
@@
-330,8
+328,8
@@
(flet ((want-reoptimization-p ()
(or (component-reoptimize component)
(component-reanalyze component)
(flet ((want-reoptimization-p ()
(or (component-reoptimize component)
(component-reanalyze component)
- (component-new-funs component)
- (component-reanalyze-funs component))))
+ (component-new-functionals component)
+ (component-reanalyze-functionals component))))
(unless (and (want-reoptimization-p)
;; We delay the generation of type checks until
;; the type constraints have had time to
(unless (and (want-reoptimization-p)
;; We delay the generation of type checks until
;; the type constraints have had time to
@@
-507,7
+505,7
@@
;;;; global data structures entirely when possible and consing up the
;;;; others from scratch instead of clearing and reusing them?
;;;; global data structures entirely when possible and consing up the
;;;; others from scratch instead of clearing and reusing them?
-;;; Clear the INFO in constants in the *FREE-VARIABLES*, etc. In
+;;; Clear the INFO in constants in the *FREE-VARS*, etc. In
;;; addition to allowing stuff to be reclaimed, this is required for
;;; correct assignment of constant offsets, since we need to assign a
;;; new offset for each component. We don't clear the FUNCTIONAL-INFO
;;; addition to allowing stuff to be reclaimed, this is required for
;;; correct assignment of constant offsets, since we need to assign a
;;; new offset for each component. We don't clear the FUNCTIONAL-INFO
@@
-522,7
+520,7
@@
(declare (ignore k))
(when (constant-p v)
(setf (leaf-info v) nil)))
(declare (ignore k))
(when (constant-p v)
(setf (leaf-info v) nil)))
- *free-variables*)
+ *free-vars*)
(values))
;;; Blow away the REFS for all global variables, and let COMPONENT
(values))
;;; Blow away the REFS for all global variables, and let COMPONENT
@@
-541,7
+539,7
@@
x))
(here-p (x)
(eq (node-component x) component)))
x))
(here-p (x)
(eq (node-component x) component)))
- (blast *free-variables*)
+ (blast *free-vars*)
(blast *free-funs*)
(blast *constants*))
(values))
(blast *free-funs*)
(blast *constants*))
(values))
@@
-557,7
+555,7
@@
;; Clear global tables.
(when (boundp '*free-funs*)
(clrhash *free-funs*)
;; Clear global tables.
(when (boundp '*free-funs*)
(clrhash *free-funs*)
- (clrhash *free-variables*)
+ (clrhash *free-vars*)
(clrhash *constants*))
;; Clear debug counters and tables.
(clrhash *constants*))
;; Clear debug counters and tables.
@@
-595,7
+593,7
@@
\f
;;;; trace output
\f
;;;; trace output
-;;; Print out some useful info about Component to Stream.
+;;; Print out some useful info about COMPONENT to STREAM.
(defun describe-component (component *standard-output*)
(declare (type component component))
(format t "~|~%;;;; component: ~S~2%" (component-name component))
(defun describe-component (component *standard-output*)
(declare (type component component))
(format t "~|~%;;;; component: ~S~2%" (component-name component))
@@
-624,7
+622,7
@@
;;;; the error context and for recovering from errors.
;;;;
;;;; The interface we provide to this stuff is the stream-oid
;;;; the error context and for recovering from errors.
;;;;
;;;; The interface we provide to this stuff is the stream-oid
-;;;; Source-Info structure. The bookkeeping is done as a side-effect
+;;;; SOURCE-INFO structure. The bookkeeping is done as a side effect
;;;; of getting the next source form.
;;; A FILE-INFO structure holds all the source information for a
;;;; of getting the next source form.
;;; A FILE-INFO structure holds all the source information for a
@@
-1117,15
+1115,8
@@
;;; Compile FORM and arrange for it to be called at load-time. Return
;;; the dumper handle and our best guess at the type of the object.
;;; Compile FORM and arrange for it to be called at load-time. Return
;;; the dumper handle and our best guess at the type of the object.
-(defun compile-load-time-value
- (form &optional
- (name (let ((*print-level* 2) (*print-length* 3))
- (format nil "load time value of ~S"
- (if (and (listp form)
- (eq (car form) 'make-value-cell))
- (second form)
- form)))))
- (let ((lambda (compile-load-time-stuff form name t)))
+(defun compile-load-time-value (form)
+ (let ((lambda (compile-load-time-stuff form t)))
(values
(fasl-dump-load-time-value-lambda lambda *compile-object*)
(let ((type (leaf-type lambda)))
(values
(fasl-dump-load-time-value-lambda lambda *compile-object*)
(let ((type (leaf-type lambda)))
@@
-1135,13
+1126,13
@@
;;; Compile the FORMS and arrange for them to be called (for effect,
;;; not value) at load time.
;;; Compile the FORMS and arrange for them to be called (for effect,
;;; not value) at load time.
-(defun compile-make-load-form-init-forms (forms name)
- (let ((lambda (compile-load-time-stuff `(progn ,@forms) name nil)))
+(defun compile-make-load-form-init-forms (forms)
+ (let ((lambda (compile-load-time-stuff `(progn ,@forms) nil)))
(fasl-dump-toplevel-lambda-call lambda *compile-object*)))
;;; Do the actual work of COMPILE-LOAD-TIME-VALUE or
;;; COMPILE-MAKE-LOAD-FORM-INIT-FORMS.
(fasl-dump-toplevel-lambda-call lambda *compile-object*)))
;;; Do the actual work of COMPILE-LOAD-TIME-VALUE or
;;; COMPILE-MAKE-LOAD-FORM-INIT-FORMS.
-(defun compile-load-time-stuff (form name for-value)
+(defun compile-load-time-stuff (form for-value)
(with-ir1-namespace
(let* ((*lexenv* (make-null-lexenv))
(lambda (ir1-toplevel form *current-path* for-value)))
(with-ir1-namespace
(let* ((*lexenv* (make-null-lexenv))
(lambda (ir1-toplevel form *current-path* for-value)))
@@
-1234,7
+1225,11
@@
(node-component (lambda-bind x)))
:toplevel)))
lambdas
(node-component (lambda-bind x)))
:toplevel)))
lambdas
- :start start)
+ ;; this used to read ":start start", but
+ ;; start can be greater than len, which
+ ;; is an error according to ANSI - CSR,
+ ;; 2002-04-25
+ :start (min start len))
len)))
(do* ((start 0 (1+ loser))
(loser (loser start) (loser start)))
len)))
(do* ((start 0 (1+ loser))
(loser (loser start) (loser start)))
@@
-1302,7
+1297,7
@@
;;; Return (VALUES NIL WARNINGS-P FAILURE-P).
(defun sub-compile-file (info)
(declare (type source-info info))
;;; Return (VALUES NIL WARNINGS-P FAILURE-P).
(defun sub-compile-file (info)
(declare (type source-info info))
- (let* ((*block-compile* *block-compile-argument*)
+ (let* ((*block-compile* *block-compile-arg*)
(*package* (sane-package))
(*policy* *policy*)
(*lexenv* (make-null-lexenv))
(*package* (sane-package))
(*policy* *policy*)
(*lexenv* (make-null-lexenv))
@@
-1415,7
+1410,7
@@
;; extensions
(trace-file nil)
;; extensions
(trace-file nil)
- ((:block-compile *block-compile-argument*) nil))
+ ((:block-compile *block-compile-arg*) nil))
#!+sb-doc
"Compile INPUT-FILE, producing a corresponding fasl file and returning
#!+sb-doc
"Compile INPUT-FILE, producing a corresponding fasl file and returning
@@
-1584,7
+1579,7
@@
;;; deal with it.
(defvar *constants-being-created* nil)
(defvar *constants-created-since-last-init* nil)
;;; deal with it.
(defvar *constants-being-created* nil)
(defvar *constants-created-since-last-init* nil)
-;;; FIXME: Shouldn't these^ variables be bound in LET forms?
+;;; FIXME: Shouldn't these^ variables be unbound outside LET forms?
(defun emit-make-load-form (constant)
(aver (fasl-output-p *compile-object*))
(unless (or (fasl-constant-already-dumped-p constant *compile-object*)
(defun emit-make-load-form (constant)
(aver (fasl-output-p *compile-object*))
(unless (or (fasl-constant-already-dumped-p constant *compile-object*)
@@
-1632,8
+1627,7
@@
(fasl-note-handle-for-constant
constant
(compile-load-time-value
(fasl-note-handle-for-constant
constant
(compile-load-time-value
- creation-form
- (format nil "creation form for ~A" name))
+ creation-form)
*compile-object*)
nil)
(compiler-error "circular references in creation form for ~S"
*compile-object*)
nil)
(compiler-error "circular references in creation form for ~S"
@@
-1645,11
+1639,7
@@
(loop for (name form) on (cdr info) by #'cddr
collect name into names
collect form into forms
(loop for (name form) on (cdr info) by #'cddr
collect name into names
collect form into forms
- finally
- (compile-make-load-form-init-forms
- forms
- (format nil "init form~:[~;s~] for ~{~A~^, ~}"
- (cdr forms) names)))
+ finally (compile-make-load-form-init-forms forms))
nil)))
(when circular-ref
(setf (cdr circular-ref)
nil)))
(when circular-ref
(setf (cdr circular-ref)