ViewVC logotype

Log of /src/compiler/locall.lisp

Parent Directory Parent Directory | Revision Log Revision Log

Links to HEAD: (view) (annotate)
Links to cross-sol-x86-base: (view) (annotate)
Sticky Tag:

Revision 1.61 - (view) (annotate) - [select for diffs]
Fri Mar 19 15:19:00 2010 UTC (4 years ago) by rtoy
Branch: MAIN
CVS Tags: GIT-CONVERSION, HEAD, RELEASE_20b, cross-sol-x86-2010-12-20, cross-sol-x86-base, cross-sol-x86-merged, cross-sparc-branch-base, post-merge-intl-branch, release-20b-pre1, release-20b-pre2, snapshot-2010-04, snapshot-2010-05, snapshot-2010-06, snapshot-2010-07, snapshot-2010-08, snapshot-2010-11, snapshot-2010-12, snapshot-2011-01, snapshot-2011-02, snapshot-2011-03, snapshot-2011-04, snapshot-2011-06, snapshot-2011-07, snapshot-2011-09, sparc-tramp-assem-2010-07-19, sparc-tramp-assem-base
Branch point for: RELEASE-20B-BRANCH, cross-sol-x86-branch, cross-sparc-branch, sparc-tramp-assem-branch
Changes since 1.60: +11 -10 lines
Diff to previous 1.60
Merge intl-branch 2010-03-18 to HEAD.  To build, you need to use
boot-2010-02-1 as the bootstrap file.  You should probably also use
the new -P option for build.sh to generate and update the po files
while building.

Revision 1.60 - (view) (annotate) - [select for diffs]
Mon Dec 10 18:48:57 2007 UTC (6 years, 4 months ago) by rtoy
Branch: MAIN
CVS Tags: RELEASE_19f, RELEASE_20a, amd64-dd-start, intl-2-branch-base, intl-branch-base, label-2009-03-16, label-2009-03-25, merge-sse2-packed, merge-with-19f, merged-unicode-utf16-extfmt-2009-06-11, portable-clx-base, portable-clx-import-2009-06-16, pre-merge-intl-branch, release-19e, release-19e-base, release-19e-pre1, release-19e-pre2, release-19f-base, release-19f-pre1, release-20a-base, release-20a-pre1, snapshot-2008-01, snapshot-2008-02, snapshot-2008-03, snapshot-2008-04, snapshot-2008-05, snapshot-2008-06, snapshot-2008-07, snapshot-2008-08, snapshot-2008-09, snapshot-2008-10, snapshot-2008-11, snapshot-2008-12, snapshot-2009-01, snapshot-2009-02, snapshot-2009-04, snapshot-2009-05, snapshot-2009-07, snapshot-2009-08, snapshot-2009-11, snapshot-2009-12, snapshot-2010-01, snapshot-2010-02, snapshot-2010-03, sse2-base, sse2-checkpoint-2008-10-01, sse2-merge-with-2008-10, sse2-merge-with-2008-11, sse2-packed-2008-11-12, sse2-packed-base, unicode-snapshot-2009-05, unicode-snapshot-2009-06, unicode-string-buffer-base, unicode-string-buffer-impl-base, unicode-utf16-base, unicode-utf16-char-support-2009-03-25, unicode-utf16-char-support-2009-03-26, unicode-utf16-extfmt-2009-03-27, unicode-utf16-extfmt-2009-06-11, unicode-utf16-extfmts-pre-sync-2008-11, unicode-utf16-extfmts-sync-2008-12, unicode-utf16-string-support, unicode-utf16-sync-2008-07, unicode-utf16-sync-2008-09, unicode-utf16-sync-2008-11, unicode-utf16-sync-2008-12, unicode-utf16-sync-label-2009-03-16
Branch point for: RELEASE-19F-BRANCH, RELEASE-20A-BRANCH, amd64-dd-branch, intl-2-branch, intl-branch, portable-clx-branch, release-19e-branch, sse2-branch, sse2-packed-branch, unicode-string-buffer-branch, unicode-string-buffer-impl-branch, unicode-utf16-branch, unicode-utf16-extfmt-branch
Changes since 1.59: +1 -2 lines
Diff to previous 1.59
See bug reported by Madhu, cmucl-imp, Nov 27, 2007 and the following
e-mail thread.  Solution by Helmut Eller.

o Remove incorrect line caused by bad merge in version 1.51.

Revision 1.59 - (view) (annotate) - [select for diffs]
Tue Oct 2 15:21:26 2007 UTC (6 years, 6 months ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2007-10, snapshot-2007-11, snapshot-2007-12
Changes since 1.58: +4 -1 lines
Diff to previous 1.58
o In MAYBE-CONVERT-TAIL-LOCAL-CALL, honor the notinline declaration
  when deciding if we can let convert a tail call.  This is useful for
  tracing of local functions.

o If we can't find a debug function, print a note that the (local)
  function might have been inlined.

Revision 1.58 - (view) (annotate) - [select for diffs]
Tue Oct 25 21:14:14 2005 UTC (8 years, 5 months ago) by rtoy
Branch: MAIN
CVS Tags: double-double-array-base, double-double-array-checkpoint, double-double-base, double-double-init-%make-sparc, double-double-init-checkpoint-1, double-double-init-ppc, double-double-init-sparc, double-double-init-sparc-2, double-double-init-x86, double-double-irrat-end, double-double-irrat-start, double-double-reader-base, double-double-reader-checkpoint-1, double-double-sparc-checkpoint-1, pre-telent-clx, release-19d, release-19d-base, release-19d-pre1, release-19d-pre2, snapshot-2005-11, snapshot-2005-12, snapshot-2006-01, snapshot-2006-02, snapshot-2006-03, snapshot-2006-04, snapshot-2006-05, snapshot-2006-06, snapshot-2006-07, snapshot-2006-08, snapshot-2006-09, snapshot-2006-10, snapshot-2006-11, snapshot-2006-12, snapshot-2007-01, snapshot-2007-02, snapshot-2007-03, snapshot-2007-04, snapshot-2007-05, snapshot-2007-06, snapshot-2007-07, snapshot-2007-08, snapshot-2007-09
Branch point for: double-double-array-branch, double-double-branch, double-double-reader-branch, release-19d-branch
Changes since 1.57: +7 -3 lines
Diff to previous 1.57
Compiler was not handling things like the following:

(defun zot ()
  (flet ((%f (&key)
    (%f nil nil)))

This should produce a compile-time warning and a run-time error that
NIL is not a valid keyword.

To fix this, in CONVERT-MORE-CALL listify the name so we can
distinguish no LOSER's or a LOSER whose name is NIL.

Revision 1.57 - (view) (annotate) - [select for diffs]
Sat Oct 11 11:57:55 2003 UTC (10 years, 6 months ago) by gerd
Branch: MAIN
CVS Tags: amd64-merge-start, mod-arith-base, ppc_gencgc_snap_2005-05-14, prm-before-macosx-merge-tag, release-19a, release-19a-base, release-19a-pre1, release-19a-pre2, release-19a-pre3, release-19b-base, release-19b-pre1, release-19b-pre2, release-19c, release-19c-base, release-19c-pre1, snapshot-2003-11, snapshot-2003-12, snapshot-2004-04, snapshot-2004-05, snapshot-2004-06, snapshot-2004-07, snapshot-2004-08, snapshot-2004-09, snapshot-2004-10, snapshot-2004-11, snapshot-2004-12, snapshot-2005-01, snapshot-2005-02, snapshot-2005-03, snapshot-2005-04, snapshot-2005-05, snapshot-2005-06, snapshot-2005-07, snapshot-2005-08, snapshot-2005-09, snapshot-2005-10
Branch point for: mod-arith-branch, ppc_gencgc_branch, release-19a-branch, release-19b-branch, release-19c-branch
Changes since 1.56: +18 -11 lines
Diff to previous 1.56
	ANSI test misc.16
	 => assertion failure in insert-let-body

	* src/compiler/locall.lisp (maybe-let-convert): Don't convert
	if the call's block doesn't have successors and we are not
	converting for interpretation.

Revision 1.56 - (view) (annotate) - [select for diffs]
Sat Oct 11 09:44:45 2003 UTC (10 years, 6 months ago) by gerd
Branch: MAIN
Changes since 1.55: +3 -2 lines
Diff to previous 1.55
	 (compile nil '(lambda ()
	    (flet ((%f13 () (rem 1 (min 0 (return-from %f13 17)))))
	 => nil is not of type node

	* src/compiler/locall.lisp (unconvert-tail-calls): Ignore
	refs whose values aren't used.

Revision 1.55 - (view) (annotate) - [select for diffs]
Thu Oct 2 19:23:11 2003 UTC (10 years, 6 months ago) by gerd
Branch: MAIN
Changes since 1.54: +28 -26 lines
Diff to previous 1.54
	(compile nil
	  '(lambda (c) (declare (optimize (speed 3) (debug 1)))
	     (flet ((%f18 () -36))
	        (flet ((%f13 () (let () (block b8 (return-from b8 c)))))
	 => error nil is not an integer, in dump-1-variable

	Found by Paul Dietz.

	This is caused by a lambda-var being passed to dump-1-variable
	which hasn't been packed, and so has a null tn-offset.  A ref to
	this lambda-var remains at this point because it is referenced
	from a different component.  The ref is deleted when that
	component is compiled.  The problem is that there shouldn't have
	been two components to begin with, which we prevent by recording
	additional DFO dependencies for closed-over variables and entries.

	Port from SBCL, basically.

	Does not require a bootstrap file, but a full build is necessary
	due to the renamed clambda structure slot.

	* src/compiler/dfo.lisp (dfo-walk-call-graph): Process
	new dfo dependencies.

	* src/compiler/node.lisp (clambda): Rename slot `calls'
	to `dfo-dependencies'.

	* src/compiler/locall.lisp (convert-call, convert-mv-call):
	Call note-dfo-dependency.
	(merge-lets): Change for new clambda slot name.
	(unconvert-tail-calls): Handle the case of non-clambdas in
	the dfo dependencies.

	* src/compiler/ir1util.lisp (continuation-home-lambda)
	(note-dfo-dependency): New functions.

	* src/compiler/ir1tran.lisp (ir1-convert-variable)
	(return-from, go, setq): Call note-dfo-dependency.

	* src/compiler/xref.lisp (lambda-called-p): New function.
	(prettiest-caller-name): Use lambda-called-p instead of

Revision 1.54 - (view) (annotate) - [select for diffs]
Tue Aug 5 14:04:52 2003 UTC (10 years, 8 months ago) by gerd
Branch: MAIN
CVS Tags: dynamic-extent-base, lisp-executable-base, snapshot-2003-10, sparc_gencgc, sparc_gencgc_merge
Branch point for: dynamic-extent, lisp-executable, sparc_gencgc_branch
Changes since 1.53: +4 -1 lines
Diff to previous 1.53
	DYNAMIC-EXTENT rest args.  Currently for x86 only.  Speed must be
	greater than safety for stack-allocation to actually happen, which
	is what ACL defaults to.  Use boot15.lisp to bootstrap.

	* src/bootfiles/18e/boot15.lisp: New file.

	* src/compiler/node.lisp (leaf): Add slot dynamic-extent.

	* src/compiler/x86/macros.lisp (load-size, inline-allocation)
	(not-inline-allocation): Extract from function allocation.
	(stack-allocation): New function.
	(allocation): Add arg dynamic-extent.  Call stack-allocation
	if dynamic-extent is true, and speed > safety.

	* src/compiler/x86/call.lisp (listify-rest-args): Add
	constant third arg, and pass it to allocation.

	* src/code/class.lisp (find-layout): Put part in

	* src/compiler/ir1tran.lisp (process-dynamic-extent-declaration):
	New function.
	(*suppress-dynamic-extent-declaration*): New variable.
	(process-1-declaration): Call process-dynamic-extent-declaration.
	(convert-more-entry) [#+x86]: Call %listify-rest-args with
	third arg dynamic-extent.

	* src/compiler/eval-comp.lisp (%listify-rest-args) [#+x86]:
	* src/compiler/fndb.lisp (%listify-rest-args) [#+x86]: Add
	third arg for dynamic-extent.

	Possibly temporary workaround for SBCL build problems caused by a
	situation like

	  (defvar *foo*)
	  (declaim (type foo *foo*))
	  (defstruct foo)
	  (defun foo ()
	    (let ((*foo* (some-unknown-function)))

	When a type check is being generated for the local binding of
	*foo*, *foo*'s type in the info database is still an unknown-type.
	The typep transform generates a call to %instance-typep, because
	it knows that foo is an instance.  The deftransform for
	%instance-typep does not run, so an actual call to %instance-typep
	is being generated.  A function %instance-typep doesn't exist at
	run time, though.

	* src/compiler/ir1tran.lisp (find-free-variable): If the
	variable's type is an unknown-type, reparse it, and change the
	type in the info database.

Revision 1.53 - (view) (annotate) - [select for diffs]
Sat Apr 19 12:31:31 2003 UTC (11 years ago) by gerd
Branch: MAIN
CVS Tags: remove_negative_zero_not_zero
Changes since 1.52: +2 -2 lines
Diff to previous 1.52
	Fix for LAMBDA.{27,28,29,50,32,33,34,35}, FLET.{57,58,59,60}
	test cases.

	* src/compiler/locall.lisp (convert-more-call): Handle the
	case of a null arglist.

Revision 1.52 - (view) (annotate) - [select for diffs]
Thu Nov 21 20:02:26 2002 UTC (11 years, 4 months ago) by toy
Branch: MAIN
CVS Tags: cold-pcl-base, release-18e, release-18e-base, release-18e-pre1, release-18e-pre2
Branch point for: cold-pcl, release-18e-branch
Changes since 1.51: +18 -4 lines
Diff to previous 1.51
:allow-other-keys is a valid keyword arg.  Make it so.  (This is
modelled after the corresponding code in SBCL.)

Revision 1.51 - (view) (annotate) - [select for diffs]
Wed Aug 21 17:55:20 2002 UTC (11 years, 7 months ago) by toy
Branch: MAIN
Branch point for: UNICODE-BRANCH
Changes since 1.50: +36 -13 lines
Diff to previous 1.50
A very slightly massaged patch taken from the SBCL patch by Alexey
Dejneka that fixes the bug where

   The assertion (EQ (C::LAMBDA-TAIL-SET C::CALLER)
                     (C::LAMBDA-TAIL-SET (C::LAMBDA-HOME C::CALLEE))) failed.

Revision 1.50 - (view) (annotate) - [select for diffs]
Thu Sep 7 12:16:23 2000 UTC (13 years, 7 months ago) by dtc
Branch: MAIN
Changes since 1.49: +2 -3 lines
Diff to previous 1.49
When merging lets, ensure that the converted function is removed from
the lambda-calls even when there is a recursive call to the function.

Revision 1.49 - (view) (annotate) - [select for diffs]
Thu Jul 6 18:37:03 2000 UTC (13 years, 9 months ago) by dtc
Branch: MAIN
Changes since 1.48: +2 -2 lines
Diff to previous 1.48
Reworking of the values-type system to overcome a number of inconsistencies
causing problems:

o Redefine coerce-to-values to convert a single value type into (values type),
  rather than the former definition (values type &rest t). A single value
  type such as fixnum is now equivalent to (values fixnum). Values-type-union
  and values-type-intersection will canonicalise values types with a
  single value such as (values fixnum) back to a single value type
  such as fixnum.

o Now when the compiler makes assertions for the first value of
  continuations that may be generating multiple values it asserts the
  type as (values type &rest t), or as (value &optional type &rest t) if
  it is not sure that the continuation does generate a value.

o Enhance the type check generation to better handle the now common
  values types with optional and rest arguments. Add the new function
  Values-types-asserted which converts asserted optional and rest
  arguments to required arguments that have been proven to be delivered,
  Thus an assertion such as (values &optional fixnum &rest t) will
  generate a fixnum type check if the proven type if (values t).

o The compiler is now far more likely to pickup attempts to use an
  assertion to select a subset of values. For example
  (the (values fixnum) (values x y)) will generated a compiler warning.

o Update single values type assertions where appropriate to clarify that
  the received values may be optional or that multiple values may be
  received. For example, a macro argument which had been asserted to be
  a list via (the list ,...) would now be asserted to be
  (the (values &optional list &rest t)) etc.

o Have the IR1 translator for THE convert single value types into
  (values &optional type &rest t) so that code such as
  (the fixnum (values x y)) will still work acceptably. This does not
  restrict the possible type assertions as the values types may be used
  and are not modified.

Revision 1.48 - (view) (annotate) - [select for diffs]
Fri Dec 3 16:28:28 1999 UTC (14 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.47: +6 -3 lines
Diff to previous 1.47
Add a check for null continuation destinations in
maybe-convert-to-assignment, aborting the conversion if such a ref is
found. Problem noted by Peter Van Eynde; patch based on a suggestion
from Rob. Add a similar check in maybe-let-convert which is bound to
have similar problems. This will most likely need more work as
aborting is not optimal, and there appear to be other similar problems.

Revision 1.47 - (view) (annotate) - [select for diffs]
Sun Mar 1 21:55:45 1998 UTC (16 years, 1 month ago) by dtc
Branch: MAIN
Changes since 1.46: +2 -2 lines
Diff to previous 1.46
Fix doc. typos "the the" -> "the".

Revision 1.46 - (view) (annotate) - [select for diffs]
Mon Oct 31 04:27:28 1994 UTC (19 years, 5 months ago) by ram
Branch: MAIN
Branch point for: RELENG_18
Changes since 1.45: +1 -3 lines
Diff to previous 1.45
Fix headed boilerplate.

Revision 1.45 - (view) (annotate) - [select for diffs]
Thu Feb 10 21:18:44 1994 UTC (20 years, 2 months ago) by ram
Branch: MAIN
Changes since 1.44: +10 -7 lines
Diff to previous 1.44
Tweak CONVERT-CALL-IF-POSSIBLE to not try to convert calls in top-level code
which call code in another component (because we already failed to convert the
call before.)

Revision 1.44 - (view) (annotate) - [select for diffs]
Thu Jan 6 18:07:06 1994 UTC (20 years, 3 months ago) by ram
Branch: MAIN
Changes since 1.43: +5 -3 lines
Diff to previous 1.43
In UNCONVERT-TAIL-CALLS, do ENSURE-BLOCK-START so that we can manipulate the
use list.

Revision 1.43 - (view) (annotate) - [select for diffs]
Tue Nov 16 18:28:35 1993 UTC (20 years, 5 months ago) by ram
Branch: MAIN
Changes since 1.42: +2 -1 lines
Diff to previous 1.42
Don't inline expand when *converting-for-interpreter*.

Revision 1.42 - (view) (annotate) - [select for diffs]
Fri Sep 10 19:09:16 1993 UTC (20 years, 7 months ago) by wlott
Branch: MAIN
Changes since 1.41: +6 -2 lines
Diff to previous 1.41
Added support for &more args

Revision 1.41 - (view) (annotate) - [select for diffs]
Sat May 8 00:42:36 1993 UTC (20 years, 11 months ago) by ram
Branch: MAIN
Changes since 1.40: +2 -1 lines
Diff to previous 1.40
When iterating over the lamdba-calls in unconverting tail calls, have
to ignore any deleted lambdas.

Revision 1.40 - (view) (annotate) - [select for diffs]
Sun Jan 17 20:38:06 1993 UTC (21 years, 3 months ago) by wlott
Branch: MAIN
Changes since 1.39: +3 -3 lines
Diff to previous 1.39
Chagned make-xep-lambda to declare the number of supplied arguments as an
index instead of a fixnum, because it cannot be negative.

Revision 1.39 - (view) (annotate) - [select for diffs]
Tue Nov 3 07:06:03 1992 UTC (21 years, 5 months ago) by ram
Branch: MAIN
Changes since 1.38: +4 -2 lines
Diff to previous 1.38
Enhance comment.

Revision 1.38 - (view) (annotate) - [select for diffs]
Tue Sep 22 14:10:07 1992 UTC (21 years, 6 months ago) by ram
Branch: MAIN
Changes since 1.37: +43 -24 lines
Diff to previous 1.37
Inhibit assignment conversion (as well as let conversion) in calls to named
local functions in the initial component.  When converting an assignment to a
let, don't do LET-CONVERT again, because we've already done it, just

Revision 1.37 - (view) (annotate) - [select for diffs]
Tue Sep 22 00:04:37 1992 UTC (21 years, 7 months ago) by ram
Branch: MAIN
Changes since 1.36: +19 -15 lines
Diff to previous 1.36
Analyze functions in COMPONENT-REANALYZE-FUNCTIONS as well as the

Revision 1.36 - (view) (annotate) - [select for diffs]
Mon Sep 21 15:37:46 1992 UTC (21 years, 7 months ago) by ram
Branch: MAIN
Changes since 1.35: +29 -6 lines
Diff to previous 1.35
Catch LOCAL-CALL-LOSSAGE around the call to ir1-convert-lambda when inline
expanding local functions.  
In MAYBE-LET-CONVERT, don't convert calls to named functions when the call is
in an initial component (delay until ir1 optimization.)

Revision 1.35 - (view) (annotate) - [select for diffs]
Mon Sep 7 16:01:25 1992 UTC (21 years, 7 months ago) by ram
Branch: MAIN
Changes since 1.34: +91 -62 lines
Diff to previous 1.34
Now local-call conversion is responsible for copying lambdas for 
copy-per-call inlining.
Tweaked top-level code separation stuff to interface with dfo properly.

Revision 1.34 - (view) (annotate) - [select for diffs]
Tue Jul 21 18:45:34 1992 UTC (21 years, 9 months ago) by ram
Branch: MAIN
Branch point for: patch_16
Changes since 1.33: +4 -2 lines
Diff to previous 1.33
Make the analogous change to CONVERT-MV-CALL.

Revision 1.33 - (view) (annotate) - [select for diffs]
Tue Jul 21 17:27:05 1992 UTC (21 years, 9 months ago) by ram
Branch: MAIN
Changes since 1.32: +12 -8 lines
Diff to previous 1.32
We must do merge-tail-sets before potential let-conversion so that we will
correctly recognize all tail calls.

Revision 1.32 - (view) (annotate) - [select for diffs]
Wed Jun 10 13:57:49 1992 UTC (21 years, 10 months ago) by ram
Branch: MAIN
Changes since 1.31: +6 -2 lines
Diff to previous 1.31
Changed CONVERT-CALL-IF-POSSIBLE to not attempt to convert when the call is in
a deleted function or a delete-p block.

Revision 1.31 - (view) (annotate) - [select for diffs]
Thu Jun 4 17:42:35 1992 UTC (21 years, 10 months ago) by ram
Branch: MAIN
Changes since 1.30: +46 -10 lines
Diff to previous 1.30
Moved tail-set merging here from IR1-OPTIMIZE-RETURN, since it wasn't being
triggered reliably (and required IR1 optimization to run to completion for
correctness.)  Now we merge tail sets whenever we convert a local call that
delivers its value to a return (regardless of whether it is truly TR.)  This
liberalization actually improves type inference: previously non-TR calls would
mess up type inference.

Now MERGE-TAIL-SETS must be called whenever IR1 is modified so that a local
call is changed to be potentially tail recursive (i.e. deliver its value to a
return.)  It seems that the only such place is in MAYBE-DELETE-EXIT in ir1opt.

Revision 1.30 - (view) (annotate) - [select for diffs]
Tue Jun 2 18:48:09 1992 UTC (21 years, 10 months ago) by ram
Branch: MAIN
Changes since 1.29: +15 -8 lines
Diff to previous 1.29
In UNCONVERT-TAIL-CALLS, don't unconvert the tail calls for the assignment we
are currently converting.  In MAYBE-CONVERT-TO-ASSIGNMENT, moved assignment of
functional-kind to before the LET-CONVERT so that we can know when we are
converting an assignment.

Revision 1.29 - (view) (annotate) - [select for diffs]
Mon Apr 27 19:47:24 1992 UTC (21 years, 11 months ago) by ram
Branch: MAIN
Changes since 1.28: +2 -6 lines
Diff to previous 1.28
Changed assertion to use MAIN-ENTRY instead of writing it out.

Revision 1.28 - (view) (annotate) - [select for diffs]
Wed Apr 15 15:38:27 1992 UTC (22 years ago) by wlott
Branch: MAIN
Changes since 1.27: +6 -2 lines
Diff to previous 1.27
Fixed the assertion that Rob added to no longer assume that the functional
is a lambda, because it might be an optional-dispatch.

Revision 1.27 - (view) (annotate) - [select for diffs]
Tue Apr 14 18:10:10 1992 UTC (22 years ago) by ram
Branch: MAIN
Changes since 1.26: +6 -1 lines
Diff to previous 1.26
Added an assertion that we don't try to local call convert when the caller and
callee are in different components.

Revision 1.26 - (view) (annotate) - [select for diffs]
Tue Apr 14 16:24:13 1992 UTC (22 years ago) by ram
Branch: MAIN
Changes since 1.25: +10 -4 lines
Diff to previous 1.25
Removed debugging code and fixed some misleading comments.

Revision 1.25 - (view) (annotate) - [select for diffs]
Thu Apr 9 20:09:58 1992 UTC (22 years ago) by ram
Branch: MAIN
Changes since 1.24: +55 -21 lines
Diff to previous 1.24
Added UNCONVERT-TAIL-CALLS step in LET conversion which marks calls as no
longer TR when we convert a LET in a non-tail position.
Fixed comment in MAYBE-CONVERT-TO-ASSIGNMENT to make clear that we only attempt
conversion when there is <= 1 non-recursive call.  This ensures that we will
never need to back out of assignment conversion.

Revision 1.24 - (view) (annotate) - [select for diffs]
Sun Feb 23 17:43:10 1992 UTC (22 years, 1 month ago) by ram
Branch: MAIN
Changes since 1.23: +3 -3 lines
Diff to previous 1.23
When checking if the call we are about to convert is going to be deleted, look
at the block holding the combination, not the ref, since the combination may be
deleted when the ref isn't.

Revision 1.23 - (view) (annotate) - [select for diffs]
Wed Dec 11 17:14:07 1991 UTC (22 years, 4 months ago) by ram
Branch: MAIN
Changes since 1.22: +218 -76 lines
Diff to previous 1.22
Majorly changed LET stuff to support assignments.  Added 
Generalized let conversion to handle both assignments and normal LETs.
Now local calls that we can prove will be TR are converted to jump
directly to the function.  We set NODE-TAIL-P to indicate this.
RETURN nodes may be deleted because of this.  We have to handle 
let conversion where the caller's RETURN was deleted due to tail 
Changed MERGE-LETS to remove the lambda from the tail-set and set the

Revision 1.22 - (view) (annotate) - [select for diffs]
Fri Nov 15 13:41:17 1991 UTC (22 years, 5 months ago) by ram
Branch: MAIN
Changes since 1.21: +2 -2 lines
Diff to previous 1.21
Fixed CONVERT-MV-CALL to be like CONVERT-CALL in that it converts the call to
:LOCAL before calling CHANGE-REF-LEAF so that the new call can be immediately

Revision 1.21 - (view) (annotate) - [select for diffs]
Mon Aug 26 17:28:01 1991 UTC (22 years, 7 months ago) by ram
Branch: MAIN
Changes since 1.20: +2 -2 lines
Diff to previous 1.20
Fixed the fix for maybe-inline to really be a fix.

Revision 1.20 - (view) (annotate) - [select for diffs]
Thu Aug 22 16:07:46 1991 UTC (22 years, 8 months ago) by ram
Branch: MAIN
Changes since 1.19: +2 -2 lines
Diff to previous 1.19
Merged Simon's fix to local-call-analyze-1 to make it work on maybe-inline

Revision 1.19 - (view) (annotate) - [select for diffs]
Mon Jul 29 16:02:27 1991 UTC (22 years, 8 months ago) by ram
Branch: MAIN
Changes since 1.18: +13 -8 lines
Diff to previous 1.18
Changed LOCAL-CALL-ANALYZE to call DELETE-FUNCTIONAL when it comes across a
new local function with no references.

Revision 1.18 - (view) (annotate) - [select for diffs]
Sat Apr 20 14:12:00 1991 UTC (23 years ago) by ram
Branch: MAIN
Changes since 1.17: +7 -3 lines
Diff to previous 1.17
Use the interface cookie when converting an XEP.

Revision 1.17 - (view) (annotate) - [select for diffs]
Thu Apr 4 14:10:18 1991 UTC (23 years ago) by ram
Branch: MAIN
Changes since 1.16: +17 -14 lines
Diff to previous 1.16
Removed deleting of never-used functions from here, since this is too
early during block compilation.
Changed let conversion to join components when the function is in a 
different component.

Revision 1.16 - (view) (annotate) - [select for diffs]
Sun Mar 10 18:35:33 1991 UTC (23 years, 1 month ago) by ram
Branch: MAIN
Changes since 1.15: +12 -16 lines
Diff to previous 1.15
Added an assertion that a function that we are converting a call to
is not already a let.
Changed let conversion to use MAYBE-REMOVE-FREE-FUNCTION.
Fixed ECASE syntax in convert-more-call so that we won't choke
on calls with optionals.

Revision 1.15 - (view) (annotate) - [select for diffs]
Wed Feb 20 14:58:29 1991 UTC (23 years, 2 months ago) by ram
Branch: MAIN
Changes since 1.14: +8 -4 lines
Diff to previous 1.14
New file header with RCS stuff.

Revision 1.14 - (view) (annotate) - [select for diffs]
Fri Feb 1 12:36:48 1991 UTC (23 years, 2 months ago) by ram
Branch: MAIN
Changes since 1.13: +2 -2 lines
Diff to previous 1.13
Fixed paren error that was breaking keyword arg parsing.

Revision 1.13 - (view) (annotate) - [select for diffs]
Wed Jan 30 23:24:54 1991 UTC (23 years, 2 months ago) by ram
Branch: MAIN
Changes since 1.12: +59 -53 lines
Diff to previous 1.12
Changed CONVERT-KEYWORD-CALL to CONVERT-MORE-CALL, and made it work when
there is a rest arg.  We just insert a call to LIST with the more args.

Revision 1.12 - (view) (annotate) - [select for diffs]
Sat Jan 12 16:12:13 1991 UTC (23 years, 3 months ago) by ram
Branch: MAIN
Changes since 1.11: +1 -0 lines
Diff to previous 1.11
Mark XEPs as EVER-USED so that we don't get spurious unused function

Revision 1.11 - (view) (annotate) - [select for diffs]
Thu Jan 3 13:08:49 1991 UTC (23 years, 3 months ago) by ram
Branch: MAIN
Changes since 1.10: +9 -3 lines
Diff to previous 1.10
Added efficency note for when a rest arg prevents local call conversion.
Made let conversion set the LAMBDA-CALL-LEXENV.

Revision 1.10 - (view) (annotate) - [select for diffs]
Wed Oct 17 19:57:43 1990 UTC (23 years, 6 months ago) by ram
Branch: MAIN
Changes since 1.9: +4 -3 lines
Diff to previous 1.9
In LOCAL-CALL-ANALYZE-1, added an explicit test for :CLEANUP functions,
since we count on these being a local call (we never make an XEP.)

Revision 1.9 - (view) (annotate) - [select for diffs]
Fri Oct 5 15:12:44 1990 UTC (23 years, 6 months ago) by ram
Branch: MAIN
Changes since 1.8: +7 -6 lines
Diff to previous 1.8
Fixed some broken declarations and the file header comment.

Revision 1.8 - (view) (annotate) - [select for diffs]
Thu Aug 16 16:25:20 1990 UTC (23 years, 8 months ago) by ram
Branch: MAIN
Changes since 1.7: +12 -6 lines
Diff to previous 1.7
Added code to LOCAL-CALL-ANALYZE to delete functions that were never

Revision 1.7 - (view) (annotate) - [select for diffs]
Mon Aug 6 15:13:11 1990 UTC (23 years, 8 months ago) by ram
Branch: MAIN
Changes since 1.6: +10 -1 lines
Diff to previous 1.6
When substituting for the result continuation in let conversion, intersect
the combination's derived type with the derived types of the dummy's
uses.  This serves to propagate TRULY-THE through lets.

Revision 1.6 - (view) (annotate) - [select for diffs]
Mon Jul 23 14:53:48 1990 UTC (23 years, 9 months ago) by ram
Branch: MAIN
Changes since 1.5: +12 -26 lines
Diff to previous 1.5
Lexenv changes: block-lambda => block-home-lambda, etc.  No longer
need to do anything with cleanups in let conversion.

Revision 1.5 - (view) (annotate) - [select for diffs]
Tue May 29 16:16:29 1990 UTC (23 years, 10 months ago) by ram
Branch: MAIN
Branch point for: eval_debug
Changes since 1.4: +13 -5 lines
Diff to previous 1.4
When *CONVERTING-FOR-INTERPRETER*, convert multi-ref calls even in top-level
code.  Possibly a hack, given that this is to make interpreted 
unwind-protect work, and top-level NLX doesn't work in general in compiled
When let-converting, blow away any entry for this function in *FREE-FUNCTIONS(
so that we don't add references to functions after they are let converted.
[This was a problem with semi-inline functions...]

Revision 1.4 - (view) (annotate) - [select for diffs]
Sat May 12 20:37:43 1990 UTC (23 years, 11 months ago) by ram
Branch: MAIN
Changes since 1.3: +1 -2 lines
Diff to previous 1.3
Changed check for flushing arg count error to be (zerop safety).

Revision 1.3 - (view) (annotate) - [select for diffs]
Tue Apr 24 15:45:04 1990 UTC (23 years, 11 months ago) by ram
Branch: MAIN
Changes since 1.2: +31 -17 lines
Diff to previous 1.2
Changes to support new top-level form handling: references in top-level
lambdas are only converted when there is only one reference (ensuring
that top-level code isn't joined to real code.)
Let conversion propagates the home's environment to the new lets, since the

home may now have an environment.

Revision 1.2 - (view) (annotate) - [select for diffs]
Mon Feb 19 10:50:05 1990 UTC (24 years, 2 months ago) by ram
Branch: MAIN
Changes since 1.1: +4 -1 lines
Diff to previous 1.1
that it gets the correct cleanup computed by NODE-ENDS-BLOCK.

Revision 1.1 - (view) (annotate) - [select for diffs]
Tue Feb 6 11:29:17 1990 UTC (24 years, 2 months ago) by wlott
Branch: MAIN
Initial revision

This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.

  Diffs between and
  Type of Diff should be a

Sort log by:

  ViewVC Help
Powered by ViewVC 1.1.5