mit-scheme.git
35 years ago* Rewrite the flonum lap-generation rules to perform register-reusing,
Chris Hanson [Thu, 26 Oct 1989 07:41:21 +0000 (07:41 +0000)]
* Rewrite the flonum lap-generation rules to perform register-reusing,
as is already the case for fixnum rules.  Generalize some tools so
that most code can be shared between fixnum and flonum rules.

* Implement assorted changes to conform to new R4RS arithmetic.

* Redesign closure-analysis/procedure-undrifting.  New design should
perform better than old, and I believe that this one is substantially
more correct.

* Add "variable indirections", which come into play when the a
variable is known to be bound to the value of another variable which
is bound in an ancestor frame of the first variable (i.e. the first
variable can be considered an alias for the second).

* Don't inline-code procedures with rest variables.

* New pass notices when two returns are equivalent, and merges them.
Another new pass notices when the tails of two basic blocks are
equivalent, and merges them.  These two work together to eliminate
multiple copies of suffixes in various cases (most notably
predicates).

* Introduce concept that certain procedures are "boolean-valued" and
can be treated specially if they appear in the predicate of a
disjunction.

* Disconnect registerizable-parameter code because it introduces
instability in the three-stage compilation test.  This code doesn't
seem to be doing much right now anyway.

* Fix bug in "remote links": must use another addressing-mode when the
offset is too large to fit in 16 bits.

* Add rule to permit static-links to be pushed in two instructions
instead of three on the 68020.

* Change RTL constructors to reduce the number of intermediate
registers generated for trivial expressions.  Improve definition of
"trivial expression" to include certain kinds of constants.

* Change open-coded combinations in the case where they appear in
reduction position, and where the open-coding of the combination will
include a close-coded call.  The new strategy is to setup the
arguments as if the combination was close-coded, then open-code
assuming the arguments are in those positions.  This has the advantage
of allowing the internal close-coded call to be transformed into a
jump with no clumsy argument manipulation required.

* Change RTL CSE to treat small (8-bit) numeric constants as cheaper
than registers.

35 years agoInitial revision
Chris Hanson [Thu, 26 Oct 1989 07:40:33 +0000 (07:40 +0000)]
Initial revision

35 years ago* All-new arithmetic and number I/O conforms with R4RS.
Chris Hanson [Thu, 26 Oct 1989 06:50:33 +0000 (06:50 +0000)]
* All-new arithmetic and number I/O conforms with R4RS.

* The variable

  (access flonum-unparser-hook (->environment '(runtime number)))

accepts two arguments (the flonum and the radix), and returns either
the string representation or #f.

* `*unparser-radix*' is recognized only when it is one of (2 8 10 16),
and it affects only exact rationals.  Inexact numbers and non-rational
complex numbers are always printed in base 10.  The radix prefix is
suppressed in base 10, or in the other bases when the number's
absolute value is less than the radix.

* Written representation of compiled entries changed to show the
"block number".

* `pp' no longer accepts hash numbers as arguments; use #@ if you want
that effect (you will need to type '#@ for scode objects).

* `trace'/`break' output changed to show arguments more clearly.

35 years agoInitial revision
Chris Hanson [Thu, 26 Oct 1989 06:49:01 +0000 (06:49 +0000)]
Initial revision

35 years agoA variety of changes to complement the installation of the R4RS
Chris Hanson [Thu, 26 Oct 1989 06:28:19 +0000 (06:28 +0000)]
A variety of changes to complement the installation of the R4RS
arithmetic system in the runtime system.  Most of these changes add
new expansions for arithmetic operations.

35 years agoMinor reorganization.
Guillermo J. Rozas [Thu, 26 Oct 1989 04:25:29 +0000 (04:25 +0000)]
Minor reorganization.

35 years agoWrite the initialization code.
Guillermo J. Rozas [Thu, 26 Oct 1989 04:23:27 +0000 (04:23 +0000)]
Write the initialization code.
Add the SCHEME_UTILITY table and define the TRAMPOLINE_K_ numbers.

35 years agoMore cleaning of the trampoline code so that the assembly language
Guillermo J. Rozas [Tue, 24 Oct 1989 06:05:08 +0000 (06:05 +0000)]
More cleaning of the trampoline code so that the assembly language
is easier to write.

35 years agoSome cleanup of the trampoline code.
Guillermo J. Rozas [Mon, 23 Oct 1989 21:40:57 +0000 (21:40 +0000)]
Some cleanup of the trampoline code.

35 years agoUpdate to use new microcode types and macros.
Guillermo J. Rozas [Mon, 23 Oct 1989 21:36:48 +0000 (21:36 +0000)]
Update to use new microcode types and macros.

35 years agoAdd missing SCHEME_UTILITYs.
Guillermo J. Rozas [Mon, 23 Oct 1989 16:46:59 +0000 (16:46 +0000)]
Add missing SCHEME_UTILITYs.
Fix a bug in comutil_link, and make the restart block match the 68k
and vax versions.
Reorganize and reformat slightly.

35 years agoChange the way that SCHEME_UTILITYs are invoked, and add all of the
Guillermo J. Rozas [Mon, 23 Oct 1989 03:01:25 +0000 (03:01 +0000)]
Change the way that SCHEME_UTILITYs are invoked, and add all of the
utilities currently being used by the compiler.

35 years agoAdd proc_type for the IBM RT.
Guillermo J. Rozas [Fri, 20 Oct 1989 12:39:28 +0000 (12:39 +0000)]
Add proc_type for the IBM RT.

35 years agoInitial revision
Guillermo J. Rozas [Fri, 20 Oct 1989 12:36:54 +0000 (12:36 +0000)]
Initial revision

35 years agoRemove static keyword from the declaration of memory_base. GCC does
Guillermo J. Rozas [Fri, 20 Oct 1989 04:44:00 +0000 (04:44 +0000)]
Remove static keyword from the declaration of memory_base.  GCC does
not like something to be declared both extern and static, and it is
declared extern in object.h, included here.

35 years agoFix syntax/cond so that:
Guillermo J. Rozas [Sat, 14 Oct 1989 15:48:39 +0000 (15:48 +0000)]
Fix syntax/cond so that:
a: (cond) is legal.
b: (cond 3) gives a reasonable error message.

35 years agoFix a bug in the error exits for &> .
Guillermo J. Rozas [Wed, 11 Oct 1989 15:30:29 +0000 (15:30 +0000)]
Fix a bug in the error exits for &> .

35 years agoAdd a global call/cc .
Guillermo J. Rozas [Wed, 11 Oct 1989 15:26:52 +0000 (15:26 +0000)]
Add a global call/cc .

35 years ago`stack-frame/ref' needs to be able to address elements in subsequent
Chris Hanson [Tue, 10 Oct 1989 11:38:30 +0000 (11:38 +0000)]
`stack-frame/ref' needs to be able to address elements in subsequent
stack frames as well as the given one.

35 years ago`environment-parent' wasn't skipping over intermediate static-links
Chris Hanson [Tue, 10 Oct 1989 11:37:35 +0000 (11:37 +0000)]
`environment-parent' wasn't skipping over intermediate static-links
correctly.

35 years agoAdd new integer and flonum primitives. Delete arithmetic ops that
Chris Hanson [Wed, 4 Oct 1989 02:49:48 +0000 (02:49 +0000)]
Add new integer and flonum primitives.  Delete arithmetic ops that
will no longer be primitives.

35 years ago*** empty log message ***
Chris Hanson [Tue, 3 Oct 1989 22:56:03 +0000 (22:56 +0000)]
*** empty log message ***

35 years agoFix bug which prevented correct recognition of debugging info for the
Chris Hanson [Tue, 3 Oct 1989 22:55:38 +0000 (22:55 +0000)]
Fix bug which prevented correct recognition of debugging info for the
root block of a multiple-block compilation.

35 years agoAdd handling for dbg-variables with type `indirect'.
Chris Hanson [Tue, 3 Oct 1989 22:54:29 +0000 (22:54 +0000)]
Add handling for dbg-variables with type `indirect'.

35 years agoChange order of source directories to match order in which files are
Chris Hanson [Fri, 29 Sep 1989 22:18:36 +0000 (22:18 +0000)]
Change order of source directories to match order in which files are
compiled by "comp.cbf".

35 years agoAdd global definitions for selected flonum and integer-generic
Chris Hanson [Thu, 28 Sep 1989 21:33:52 +0000 (21:33 +0000)]
Add global definitions for selected flonum and integer-generic
primitives.

35 years agoAdd primitives `fixnum-quotient' and `fixnum-remainder'.
Chris Hanson [Thu, 28 Sep 1989 21:19:51 +0000 (21:19 +0000)]
Add primitives `fixnum-quotient' and `fixnum-remainder'.

35 years agoAdd missing rule.
Guillermo J. Rozas [Mon, 25 Sep 1989 21:45:36 +0000 (21:45 +0000)]
Add missing rule.

35 years agoAdd new primitive `flonum-denormalize'.
Chris Hanson [Mon, 25 Sep 1989 17:59:43 +0000 (17:59 +0000)]
Add new primitive `flonum-denormalize'.

35 years agoFix bug in `grow_data_buffer': forgot to update the pointers into the
Chris Hanson [Mon, 25 Sep 1989 17:47:41 +0000 (17:47 +0000)]
Fix bug in `grow_data_buffer': forgot to update the pointers into the
reallocated structure.

35 years agoAdd new primitive `flonum-denormalize'.
Chris Hanson [Mon, 25 Sep 1989 16:51:23 +0000 (16:51 +0000)]
Add new primitive `flonum-denormalize'.

35 years agoFix definition of `flonum_normalize'.
Chris Hanson [Sun, 24 Sep 1989 16:15:01 +0000 (16:15 +0000)]
Fix definition of `flonum_normalize'.

35 years agoExport `microcode-id/floating-epsilon'.
Chris Hanson [Sun, 24 Sep 1989 15:44:23 +0000 (15:44 +0000)]
Export `microcode-id/floating-epsilon'.

35 years agoEliminate hand-coded flonum parameters in favor of those in "float.h".
Chris Hanson [Sun, 24 Sep 1989 15:25:19 +0000 (15:25 +0000)]
Eliminate hand-coded flonum parameters in favor of those in "float.h".
These new parameters can be generated by hard-params, or if the system
has <float.h> we can use that instead.

35 years agoEliminate hand-coded flonum parameters in favor of those in "float.h".
Chris Hanson [Sun, 24 Sep 1989 15:13:11 +0000 (15:13 +0000)]
Eliminate hand-coded flonum parameters in favor of those in "float.h".
These new parameters can be generated by hard-params, or if the system
has <float.h> we can use that instead.

35 years agofixed-objects-vector now contains flonum-epsilon instead of
Chris Hanson [Sun, 24 Sep 1989 14:51:41 +0000 (14:51 +0000)]
fixed-objects-vector now contains flonum-epsilon instead of
flonum-exponent-bits.

35 years agofixed-objects-vector now contains flonum-epsilon instead of
Chris Hanson [Sun, 24 Sep 1989 14:47:07 +0000 (14:47 +0000)]
fixed-objects-vector now contains flonum-epsilon instead of
flonum-exponent-bits.

35 years agoMicrocode's fixed-objects-vector now contains flonum-epsilon instead
Chris Hanson [Sun, 24 Sep 1989 14:18:07 +0000 (14:18 +0000)]
Microcode's fixed-objects-vector now contains flonum-epsilon instead
of flonum-exponent-bits; change microcode table code to accomodate.

35 years agoAdd primitives to normalize flonums, and to produce the key flonum
Chris Hanson [Sun, 24 Sep 1989 13:50:26 +0000 (13:50 +0000)]
Add primitives to normalize flonums, and to produce the key flonum
parameters: number of bits in significand, and smallest number which
can be added to one and still produce different result.

35 years ago*** empty log message ***
Chris Hanson [Sun, 24 Sep 1989 03:46:29 +0000 (03:46 +0000)]
*** empty log message ***

35 years agoDon't set `*info-output-filename*' or `*rtl-output-pathname*' in
Chris Hanson [Sun, 24 Sep 1989 03:39:40 +0000 (03:39 +0000)]
Don't set `*info-output-filename*' or `*rtl-output-pathname*' in
`compiler:reset!'; they are fluid-bound instead.

35 years agoChange criterion used to decide whether or not to close procedures.
Chris Hanson [Sun, 24 Sep 1989 03:37:31 +0000 (03:37 +0000)]
Change criterion used to decide whether or not to close procedures.
New criterion is to examine `procedure-closure-context', which will be
set to #t by the closure analysis iff it decides that the procedure
needs to be closed.

35 years agoChange code back to clobber the procedure-block's parent when a
Chris Hanson [Sun, 24 Sep 1989 03:33:55 +0000 (03:33 +0000)]
Change code back to clobber the procedure-block's parent when a
procedure is undrifted.  If this is not done the operations
`block-ancestor-or-self?' and `block-nearest-common-ancestor' return
the wrong answers, and consequently must be replaced with new
operations that take the undrifting into account (yet another set of
nearly-identical operations!).

Rather than do this, I attacked the problem of why clobbering the
parent causes problems.  The losing scenario seems to be as follows:
procedure A is a child of procedure B; procedure B and procedure C are
siblings; procedure A is a free-caller of procedure C (and so is
procedure B by transitivity); procedure B has drifted up one or more
blocks, while A and C have not drifted at all.

The problem occurs when A is examined before B for undrifting: because
C is not accessible from A (due to B's drifting), it is undrifted.
Later, B is also undrifted (because it is also a free-caller of C);
note that had B been undrifted before we looked at A there would have
been no reason to undrift A.  Finally, `setup-block-types!' closes
both A and B because they have been undrifted, which allows them both
to reference their free variables; this reference is possible
-because- the original parent was not changed when the undrifting
occurred.  Had the original parent been changed at that time, the
closing would have failed.

Now many times the only reason that A and B are being closed is
because of the undrifting -- there is really no reason for them to be
closed at all (in these cases, we would have been better off never
having tried to drift procedure A in the first place).  Furthermore,
because this closing is bypassing the normal closing mechanism, some
other inconsistencies are introduced, in particular the
`virtual-closure?' bit is not cleared (it was the bug caused by this
inconsistency which forced me to reexamine this code in the first
place).

OK, so let's try this again.  Suppose we -don't- close undrifted
procedures unless there's some other reason to do so (which we can
detect by looking at the `closure-context' or `closure-reasons').
Then the way to avoid the losing scenario above is to guarantee that
we undrift B before considering A for undrifting.  This is easily
accomplished by performing a topological sort on the `free-callers'.
This sorting is sufficient because the decision to undrift A can only
depend on ancestors who are also members of the `free-callers' set.

So that's the story: I've added a topological sort of
`procedure-free-callers', changed `undrift-procedure!' to immediately
update the `procedure-closing-block', and changed `setup-block-types!'
to base the closing decision on `procedure-closure-context' rather
than (the now inaptly named) `close-procedure?'.

35 years agoFix a few random bugs.
Chris Hanson [Fri, 22 Sep 1989 09:33:16 +0000 (09:33 +0000)]
Fix a few random bugs.

35 years agoAdd new switch `HAS_MODF', and conditionalize "missing.c" to use it.
Chris Hanson [Fri, 22 Sep 1989 08:47:32 +0000 (08:47 +0000)]
Add new switch `HAS_MODF', and conditionalize "missing.c" to use it.
Change makefile to include "missing.o".

35 years agoAdd new switch `HAS_MODF', and conditionalize "missing.c" to use it.
Chris Hanson [Fri, 22 Sep 1989 08:45:36 +0000 (08:45 +0000)]
Add new switch `HAS_MODF', and conditionalize "missing.c" to use it.
Change makefile to include "missing.o".

35 years agoWork around bug in portable representation of flonums: the flonum 0.0
Chris Hanson [Thu, 21 Sep 1989 22:53:12 +0000 (22:53 +0000)]
Work around bug in portable representation of flonums: the flonum 0.0
is written as "06 + 0".  But this program always reads two numbers
after the sign, and furthermore treats the first one as the exponent,
and the -second- as the size in bits.  This caused it to gobble up the
type code of the next word by accident.

35 years agoFix typo which caused segmentation violation on disk-restore.
Chris Hanson [Thu, 21 Sep 1989 22:48:51 +0000 (22:48 +0000)]
Fix typo which caused segmentation violation on disk-restore.

35 years ago*** empty log message ***
Chris Hanson [Thu, 21 Sep 1989 02:36:27 +0000 (02:36 +0000)]
*** empty log message ***

35 years agoUpgrade to handle split compiled-code files. Improve constants
Chris Hanson [Thu, 21 Sep 1989 01:55:35 +0000 (01:55 +0000)]
Upgrade to handle split compiled-code files.  Improve constants
comparison.

35 years ago*** empty log message ***
Chris Hanson [Wed, 20 Sep 1989 23:23:37 +0000 (23:23 +0000)]
*** empty log message ***

35 years agoInitial revision
Chris Hanson [Wed, 20 Sep 1989 23:23:20 +0000 (23:23 +0000)]
Initial revision

35 years agoMassive rewrite of microcode. All new object macros and organization.
Chris Hanson [Wed, 20 Sep 1989 23:13:36 +0000 (23:13 +0000)]
Massive rewrite of microcode.  All new object macros and organization.
New number primitives to support R4RS-compatible number system.
This microcode requires runtime version 14.58 or later.

35 years agoFix another bug in first class environment code when combined with
Guillermo J. Rozas [Wed, 20 Sep 1989 16:39:48 +0000 (16:39 +0000)]
Fix another bug in first class environment code when combined with
compile-by-procedures.

35 years agoMicrocode version 11 requires this runtime version.
Chris Hanson [Wed, 20 Sep 1989 15:11:40 +0000 (15:11 +0000)]
Microcode version 11 requires this runtime version.

35 years agoChange algorithm used to compute prime numbers to make it more
Chris Hanson [Wed, 20 Sep 1989 15:06:47 +0000 (15:06 +0000)]
Change algorithm used to compute prime numbers to make it more
efficient.

35 years agoEliminate dependency on return value of modifier.
Chris Hanson [Wed, 20 Sep 1989 15:05:47 +0000 (15:05 +0000)]
Eliminate dependency on return value of modifier.

35 years agoAdd Harris HCX type.
Chris Hanson [Tue, 19 Sep 1989 17:53:38 +0000 (17:53 +0000)]
Add Harris HCX type.

35 years agoInitial revision
Chris Hanson [Tue, 19 Sep 1989 17:51:29 +0000 (17:51 +0000)]
Initial revision

35 years agoFix bug in 1d-table/alist, and add 1d-table/for-each.
Guillermo J. Rozas [Fri, 15 Sep 1989 18:10:43 +0000 (18:10 +0000)]
Fix bug in 1d-table/alist, and add 1d-table/for-each.

35 years agoFix bug in 1d-table/alist, and add 1d-table/for-each.
Guillermo J. Rozas [Fri, 15 Sep 1989 17:18:08 +0000 (17:18 +0000)]
Fix bug in 1d-table/alist, and add 1d-table/for-each.

35 years agoPatch remaining bug in interaction between compile-by-procedures? and
Guillermo J. Rozas [Fri, 15 Sep 1989 17:08:20 +0000 (17:08 +0000)]
Patch remaining bug in interaction between compile-by-procedures? and
first class environment decomposition.

For the time being, compile-by-procedures? is disabled within non top
level first class blocks (ie. in-package and make-environment).
This should ultimately be fixed.

35 years agoFix bugs in fggen/{canon,fggen}.scm introduced when
Guillermo J. Rozas [Wed, 13 Sep 1989 20:44:32 +0000 (20:44 +0000)]
Fix bugs in fggen/{canon,fggen}.scm introduced when
compiler:compile-by-procedure? was added.

35 years agoCreate switch COMPILER:OPEN-CODE-FLOATING-POINT-ARITHMETIC? in order to ensure
Arthur Gleckler [Tue, 5 Sep 1989 22:34:52 +0000 (22:34 +0000)]
Create switch COMPILER:OPEN-CODE-FLOATING-POINT-ARITHMETIC? in order to ensure
Bobcat floating-point open-coding is only attempted for Bobcats.

35 years agoFix bug in last change.
Chris Hanson [Tue, 29 Aug 1989 21:39:43 +0000 (21:39 +0000)]
Fix bug in last change.

35 years agoSetup error-handling when re-evaluating arguments (as in
Chris Hanson [Tue, 29 Aug 1989 20:04:27 +0000 (20:04 +0000)]
Setup error-handling when re-evaluating arguments (as in
repeat-complex-command), and also when reading expressions from the
keyboard.

35 years ago* Add Jinx's changes to support 6 bit type codes.
Chris Hanson [Mon, 28 Aug 1989 18:34:25 +0000 (18:34 +0000)]
* Add Jinx's changes to support 6 bit type codes.

35 years ago* Add Jinx's changes to support 6 bit type codes. Make these the
Chris Hanson [Mon, 28 Aug 1989 18:30:12 +0000 (18:30 +0000)]
* Add Jinx's changes to support 6 bit type codes.  Make these the
default for HP 9000 series 300.

* Update Ppband to handle compiled code.

* Significant rewrite of parts of the bignum code.  This is the
beginning of a redesign of this code.

* Regularize some of the object selector macros.

35 years ago*** empty log message ***
Chris Hanson [Tue, 22 Aug 1989 18:08:48 +0000 (18:08 +0000)]
*** empty log message ***

35 years agoChange the compiler so that each top-level procedure in the input
Chris Hanson [Mon, 21 Aug 1989 19:34:39 +0000 (19:34 +0000)]
Change the compiler so that each top-level procedure in the input
expression is compiled separately, producing a different compiled-code
block for each.  The load-time linking is removed from the sub-blocks
to be performed in the code for the top-level expression, thus
allowing it to be discarded after the expression is evaluated; only
the code needed by the procedures is retained.

The old behavior of the compiler can be obtained by setting the switch
`compiler:compile-by-procedures?' to #f.

35 years agoChange the cold-load to do purification differently -- this is needed
Chris Hanson [Fri, 18 Aug 1989 19:15:16 +0000 (19:15 +0000)]
Change the cold-load to do purification differently -- this is needed
to guarantee that as much as possible gets purified, without purifying
storage that is temporary for the cold-load.  This is done by leaving
everything in the heap until the cold-load is essentially finished,
then purifying everything at once.

35 years agoAbstract out the operation that decides how to purify compiled code,
Chris Hanson [Fri, 18 Aug 1989 19:10:01 +0000 (19:10 +0000)]
Abstract out the operation that decides how to purify compiled code,
call it `load/purification'.  This is used by the cold-loader.

35 years ago(fasload/update-debugging-info): Change this so that it makes a single
Chris Hanson [Fri, 18 Aug 1989 19:08:45 +0000 (19:08 +0000)]
(fasload/update-debugging-info): Change this so that it makes a single
copy of the new filename which is shared among all of the
compiled-code blocks in the file.  For per-top-level-procedure
compilation, this makes a big difference.

35 years agoMake `load-debugging-info-on-demand?' affect only
Chris Hanson [Thu, 17 Aug 1989 16:52:57 +0000 (16:52 +0000)]
Make `load-debugging-info-on-demand?' affect only
`compiled-procedure/name'.

35 years agoFix classic bug: incorrect interaction between stream and side-effect.
Chris Hanson [Thu, 17 Aug 1989 16:02:55 +0000 (16:02 +0000)]
Fix classic bug: incorrect interaction between stream and side-effect.

35 years ago(sf-conditionally): Don't echo "up to date" message unless
Chris Hanson [Thu, 17 Aug 1989 15:59:21 +0000 (15:59 +0000)]
(sf-conditionally): Don't echo "up to date" message unless
specifically requested to.

35 years ago(sf-conditionally): Don't echo "up to date" message unless
Chris Hanson [Thu, 17 Aug 1989 15:54:13 +0000 (15:54 +0000)]
(sf-conditionally): Don't echo "up to date" message unless
specifically requested to.

35 years ago* Compiler now knows how to emit a different form of
Chris Hanson [Thu, 17 Aug 1989 14:51:21 +0000 (14:51 +0000)]
* Compiler now knows how to emit a different form of
`dbg-info-vector', which contains not only the compiled-code blocks
(as before), but also a pointer which is the root to be used if the
code is to be purified.  The runtime system needed to be changed to
accomodate this.

* Change default for `load-debugging-info-on-demand?' back to false.

* Fix `scode-constant?' to handle compiled-code-entry objects
correctly.

35 years agoChange "FASDumping" message to "Dumping", to match change to
Chris Hanson [Thu, 17 Aug 1989 13:53:39 +0000 (13:53 +0000)]
Change "FASDumping" message to "Dumping", to match change to
"FASLoading" message.

35 years agoMust replicate export from `(package)' here.
Chris Hanson [Thu, 17 Aug 1989 12:18:09 +0000 (12:18 +0000)]
Must replicate export from `(package)' here.

35 years agoRecode procedures that use `caar', `cadr', etc. to use sequences of
Chris Hanson [Thu, 17 Aug 1989 07:50:55 +0000 (07:50 +0000)]
Recode procedures that use `caar', `cadr', etc. to use sequences of
`car' and `cdr'.  This produces more efficient code since `sf' won't
inline-code these procedures in this file because they are defined
here.

35 years agoOptionally allow comments to appear with bogus syntax.
Chris Hanson [Wed, 16 Aug 1989 11:46:23 +0000 (11:46 +0000)]
Optionally allow comments to appear with bogus syntax.

35 years agoFor #@<n> -- if the object referred to is SCode, quote it so that
Chris Hanson [Wed, 16 Aug 1989 01:06:14 +0000 (01:06 +0000)]
For #@<n> -- if the object referred to is SCode, quote it so that
evaluating the result of the parse produces the object.

35 years agoFix stupid typo.
Chris Hanson [Tue, 15 Aug 1989 15:14:34 +0000 (15:14 +0000)]
Fix stupid typo.

35 years ago* Implement `entity' data abstraction to manipulate the microcode's
Chris Hanson [Tue, 15 Aug 1989 13:20:46 +0000 (13:20 +0000)]
* Implement `entity' data abstraction to manipulate the microcode's
data type of that name.  Change everything to use it.

* Implement new procedure `gc-clean' that interleaves `gc-flip' and
`trigger-secondary-gc-daemons!' until everything is reclaimed.  Change
`disk-save' to use it.  Cause this operation to be invoked when
running out of memory.

* Add secondary GC daemons to clean up debugging info, and to reset
`prime-number-stream'.

* Extend the procedures `procedure-lambda' and `procedure-environment'
to handle compiled procedures by using debugging information if it is
available.

* Extend all the procedure operations to handle entities.

* Change `pp', `pa', and `->environment' to accept any procedure as an
argument; previously these only accepted compound procedures.

* Change the unsyntaxer to handle compiled expressions by using their
debugging source code if it is available.

* Change name of `*compiler-info/load-on-demand?*' to
`load-debugging-info-on-demand?', and make it be #T by default.

* Change `load' to print "loading..." message for source files as well
as binary files.  These messages are controlled by
`load/suppress-loading-message?'.

* Change `environment-bound-names' to ignore the binding which is used
to hold an environment's package.

* Fix bug in `make-null-interpreter-environment' which prevented it
from being called more than once.

35 years agoCanonicalization of expressions causes certain expressions to be
Chris Hanson [Tue, 15 Aug 1989 12:59:19 +0000 (12:59 +0000)]
Canonicalization of expressions causes certain expressions to be
rewritten in a form that is unsuitable for use as the debugging source
code.  Change the canonicalization code to save the original code.
Change the fg-generator to use the original code as the debugging
source instead of the code that it is compiling.

35 years agoSpecial case: don't bother generating a new environment when
Chris Hanson [Tue, 15 Aug 1989 10:00:56 +0000 (10:00 +0000)]
Special case: don't bother generating a new environment when
evaluating a constant.

35 years agoBug report from Jinx: `prealloc' may change the file pointer, so the
Chris Hanson [Tue, 15 Aug 1989 07:15:47 +0000 (07:15 +0000)]
Bug report from Jinx: `prealloc' may change the file pointer, so the
hp-ux code that uses it must check.

35 years ago*** empty log message ***
Chris Hanson [Mon, 14 Aug 1989 11:51:13 +0000 (11:51 +0000)]
*** empty log message ***

35 years agoMove some of the window-control variables to the files in which they
Chris Hanson [Mon, 14 Aug 1989 10:23:44 +0000 (10:23 +0000)]
Move some of the window-control variables to the files in which they
are used.  Rename `cursor-centering-threshold' to `scroll-step' for
compatibility with Emacs.  Delete the disfunctional command
`toggle-screen-video'.

35 years agoSuppress redisplay of minibuffer messages during keyboard-macro
Chris Hanson [Mon, 14 Aug 1989 09:49:13 +0000 (09:49 +0000)]
Suppress redisplay of minibuffer messages during keyboard-macro
execution.

35 years agoExport variable `completion-auto-help' to (edwin) package.
Chris Hanson [Mon, 14 Aug 1989 09:48:37 +0000 (09:48 +0000)]
Export variable `completion-auto-help' to (edwin) package.

35 years agoSort list of key bindings before printing it.
Chris Hanson [Mon, 14 Aug 1989 09:30:57 +0000 (09:30 +0000)]
Sort list of key bindings before printing it.

35 years ago* Rewrite core group operations, image operations, window operations,
Chris Hanson [Mon, 14 Aug 1989 09:23:13 +0000 (09:23 +0000)]
* Rewrite core group operations, image operations, window operations,
and the regular-expression compiler to use fixnum arithmetic.  This
has a pronounced performance effect.

* Change "decls" to pass integrable-procedure definitions between a
few crucial files.

* New variable `enable-emacs-key-names' controls whether keys are
displayed using Emacs-style names or Scheme-style names.  The default
is Emacs-style.

* C-h C-b now runs `describe-bindings' as in Emacs.

35 years agoChange file-loading prompts to use trailing dots.
Chris Hanson [Mon, 14 Aug 1989 09:14:45 +0000 (09:14 +0000)]
Change file-loading prompts to use trailing dots.

35 years agoWhen subtracting register A from register B, where register B is not
Chris Hanson [Sun, 13 Aug 1989 09:57:21 +0000 (09:57 +0000)]
When subtracting register A from register B, where register B is not
dead, must always allocate a new alias.  Stupid trick that was being
pulled involving `exg' instruction could never have worked.

35 years agoInitial revision
Chris Hanson [Sat, 12 Aug 1989 08:33:51 +0000 (08:33 +0000)]
Initial revision

35 years ago* Change internal names of various user procedures to correspond to
Chris Hanson [Sat, 12 Aug 1989 08:32:56 +0000 (08:32 +0000)]
* Change internal names of various user procedures to correspond to
the external names:

edwin edit
edwin-discard-state! reset-editor
edwin-reset create-editor
edwin-reset-args create-editor-args
edwin-set-display! set-editor-display-type!

The external interface to Edwin now consists of the following
procedures:

(EDIT)
(RESET-EDITOR)
(RESET-EDITOR-WINDOWS)
As before.

(EDITOR-DISPLAY-TYPE)
Returns the display-type of the current editor.  This is
either a symbol or #F.

(EDITOR-DISPLAY-TYPES)
Returns the names of all the known display types, in a list.

(CREATE-EDITOR DISPLAY-TYPE . ARGS)
Initializes a display of the given type, passing the args to
the screen-construction code.

CREATE-EDITOR-ARGS
This variable is a list of arguments to be passed to
`create-editor' if it is necessary for `edit' to call it.

* Add new command `define-command', which is solely a placeholder for
the documentation string it possesses.

* Implement editor variable `inhibit-startup-message' -- see the
documentation string.

* `enable-transcript-buffer' is now #F by default -- it is normally
enabled in Scheme-Interaction mode only.

* Change the definitions of the commands `set-environment' and
`set-syntax-table' to set the editor variables `scheme-environment'
and `scheme-syntax-table'.  The old behavior of these commands is
available via the new commands `set-repl-environment' and
`set-repl-syntax-table'.  Other new commands are
`set-default-environment' and `set-default-syntax-table'.

* Change definition of `scheme-syntax-table', allowing it to be a
symbol which is regarded as a variable to be evaluated relative to the
evaluation environment.

* Add init files, which are found in "~/.edwin".  The new global
variable `inhibit-editor-init-file?' (defined in the system global
environment), prevents your init file from being loaded if it is true.

* Add new "find-file initialization" hack: this is invoked whenever
`find-file' or `revert-buffer' is done.  The reason for this hack is
to allow a database file to contain evaluation environment and
syntax-table information for the editor.

When a `find-file' (or `revert-buffer') is done, the editor looks in
the directory of the file for one of two files:

1. If the file's name is "foo.scm", the editor looks for a
file "foo.ffi" (-only- if the type is ".scm").  Otherwise,

2. The editor looks for the file ".edwin-ffi".

If one of these files are found, it is loaded into the editor (if the
first file is found, the second is ignored).  The loading is performed
in the (edwin) package with `edwin-syntax-table'.  The result of
loading the file must be a Scheme procedure which accepts no
arguments; this procedure will be added to the buffer's
initializations, to be performed the next time the buffer is selected.

The procedure `standard-scheme-find-file-initialization' is useful in
this regard.

It should be straightforward to automatically generate these files
from the package-modeller.

* The binding for `describe-command' has been changed from `C-h d' to
`C-h f' for compatibility with Emacs.

* Under some circumstances, files in the user's home directory tree
will be displayed using the "~/" notation.

* Implement overlooked command `x-set-position'.

----------------------------------------------------------------------

* Change definition of `load-edwin-file' procedure to make it more
generally useful for loading files into the editor.  Similar changes
to the `load-file' and `load-library' commands.

* Bullet-proof the evaluation environment and syntax-table code so
that they signal an editor-error if unable to be resolved to the
appropriate kind of object.

----------------------------------------------------------------------

* Cause a modeline-event to occur whenever a buffer's clipping is
changed.

* Change handling of `edwin-initialization' so that the code is run
inside the command-reader loop -- thus making sure that all of the
editor's dynamic-state is bound.

* Fix bug in command-reader: undo boundaries were not being marked
when they should have been.

* Change `kill-buffer' to pick a different replacement buffer for each
of its windows, if possible.

35 years ago* Change `environment-link-name' to call `->environment' on its two
Chris Hanson [Sat, 12 Aug 1989 08:18:37 +0000 (08:18 +0000)]
* Change `environment-link-name' to call `->environment' on its two
environment arguments.

* Move `vector-binary-search' to the global environment.  Fix a bug in
it -- a confusion between the < used for comparing integers, and that
for comparing keys.

* New variable `load/suppress-loading-message?' prevents the file
loader from printing the "loading -- done" messages.

* Implement `pathname-relative?' which accepts two pathnames; if the
second has a directory part which is a "prefix" of the first, this
returns a copy of the first pathname with the "prefix" removed.
Example:

    (pathname-relative? (->pathname "/usr/bin")
(->pathname "/usr/"))
   ==> #[pathname 5 "bin"]

35 years ago* Change `environment-link-name' to call `->environment' on its two
Chris Hanson [Sat, 12 Aug 1989 08:18:31 +0000 (08:18 +0000)]
* Change `environment-link-name' to call `->environment' on its two
environment arguments.

* Move `vector-binary-search' to the global environment.  Fix a bug in
it -- a confusion between the < used for comparing integers, and that
for comparing keys.

* New variable `load/suppress-loading-message?' prevents the file
loader from printing the "loading -- done" messages.

* Implement `pathname-relative?' which accepts two pathnames; if the
second has a directory part which is a "prefix" of the first, this
returns a copy of the first pathname with the "prefix" removed.
Example:

    (pathname-relative? (->pathname "/usr/bin")
(->pathname "/usr/"))
   ==> #[pathname 5 "bin"]