Chris Hanson [Thu, 2 Aug 2001 04:30:16 +0000 (04:30 +0000)]
Implement unlink_variable and associated primitive, which is not yet
tested.
Also, more cleanups to "lookup.c", particularly in code that accesses
cache reference lists. Increased abstraction in this area is being
prompted by potential design changes to allow linking variables with
different names.
Chris Hanson [Tue, 31 Jul 2001 03:12:15 +0000 (03:12 +0000)]
Completely rewrite the variable-reference code. New design is
considerably simpler, having discarded all the legacy code from the
Butterfly. Furthermore, two hacks to speed up the interpreter,
caching of variable locations and in-line variable reference, have
been removed. This makes the interpreter slower, but has no effect on
compiled code, and has several important benefits. One benefit is
that we can now implement undefine.
New design allows ENVIRONMENT-LINK-NAME to link to a variable that is
already bound (previous signalled an error in this case).
Eliminate "in-line" variable references in the interpreter. All
reference machinery is now defined in "lookup.c".
Define THE_GLOBAL_ENV and THE_NULL_ENV, and predicates to detect
them. Eliminate GO_TO_GLOBAL and END_OF_CHAIN definitions. Latter
was a name conflict under OS/2. Change definition of ENVIRONMENT_P
so that it is false for THE_NULL_ENV.
Define lots of macros to provide abstract access to the data
structures used for variable references. Change terminology, so
that instead of "trap extension" we now use "cache", and so on for
the substructures of the cache.
Add "guards" to allow .h files to be loaded more than once.
Remove variable-access procedures from "extern.h"; new procedures
are now defined in "lookup.h".
Chris Hanson [Sat, 21 Jul 2001 05:49:59 +0000 (05:49 +0000)]
Fix problem: errors during keyboard-macro execution were leaving the
editor in the command reader that was spawned to execute the keyboard
macro, rather than returning to the reader that was in control when
the keyboard-macro execution was initiated.
Some of the keyboard-macro state was being mismanaged by unnecessary
calls to KEYBOARD-MACRO-DISABLE. This was exacerbated because
KEYBOARD-MACRO-DISABLE was setting *KEYBOARD-MACRO-EXECUTING?* to #F
when it should have been left alone.
Chris Hanson [Thu, 19 Jul 2001 18:25:22 +0000 (18:25 +0000)]
Fix bug: when multiple USUAL-INTEGRATIONS declarations are given, the
excluded names should be the union of all of the declarations, but
instead were the intersection. This situation arises when using
COMPILE-FILE, which forces an additional USUAL-INTEGRATIONS
declarations on each file.
Chris Hanson [Mon, 16 Jul 2001 02:44:01 +0000 (02:44 +0000)]
Must unblock all signals at start. A recent example that has caused
problems is that GNOME can sometimes cause Scheme to be started with
SIGCHLD blocked.
Chris Hanson [Tue, 10 Jul 2001 05:30:31 +0000 (05:30 +0000)]
Extensive reworking to get entity references done more or less right.
There remains a problem with recursive entity expansion -- there is a
mismatch between the tests and my reading of the specification.
Chris Hanson [Mon, 2 Jul 2001 18:21:01 +0000 (18:21 +0000)]
Completely reorganize the language preprocessors, so that they are no
longer monolithic procedures. Also lay the code out differently so
that it is broken into two major segments: the preprocessor and the
code generator.
Chris Hanson [Mon, 2 Jul 2001 12:14:35 +0000 (12:14 +0000)]
Replace WITH-CURRENT-POINTER and NO-POINTERS with new procedure
CALL-WITH-UNKNOWN-POINTER. Change all references from "pointers" to
"pointer", since it's better to think of this as a single pointer.
(The delayed backtracking feature is an implementation detail, so it
shouldn't be reflected in the name.) Rename NEW-BACKTRACK-POINTER to
BACKTRACK-TO. Rename CURRENT-POINTER to POINTER-REFERENCE.
Chris Hanson [Mon, 2 Jul 2001 05:08:22 +0000 (05:08 +0000)]
Rework handling of the pointers. There were some subtle bugs in the
implementation that could have caused incorrect code generation. This
code looks good but is still a bit confusing; I may not have it right
yet. This code isn't yet tested.
Chris Hanson [Mon, 2 Jul 2001 01:20:32 +0000 (01:20 +0000)]
Restructure crypto, gdbm, and curses tests to depend on existence of
appropriate header files as well as the library files. The presence
of the library file is no guarantee that we have the headers.
Chris Hanson [Fri, 29 Jun 2001 05:23:24 +0000 (05:23 +0000)]
* Track the line number of the current buffer position, so that error
messages can refer to the line. Change representation of buffer
pointers to include the line number. Add operation to generate a
string that shows the line number and character number of either a
given pointer or the current position.
* Eliminate DECREMENT-PARSER-BUFFER-POINTER, which was unused and
makes implementing the line number more difficult.
* Add -NO-ADVANCE versions of procedures that match single characters.
* Change terminology: the index of the current character in the buffer
is called a "position". The word "pointer" is reserved to refer to
pointer objects that are handed to the users, which themselves refer
to positions.
Chris Hanson [Fri, 29 Jun 2001 05:19:24 +0000 (05:19 +0000)]
* Track the line number of the current buffer position, so that error
messages can refer to the line. Change representation of buffer
pointers to include the line number. Add operation to generate a
string that shows the line number and character number of either a
given pointer or the current position.
* Eliminate DECREMENT-PARSER-BUFFER-POINTER, which was unused and
makes implementing the line number more difficult.
* Add -NO-ADVANCE versions of procedures that match single characters.
* Change terminology: the index of the current character in the buffer
is called a "position". The word "pointer" is reserved to refer to
pointer objects that are handed to the users, which themselves refer
to positions.
Chris Hanson [Fri, 29 Jun 2001 05:18:19 +0000 (05:18 +0000)]
* Track the line number of the current buffer position, so that error
messages can refer to the line. Change representation of buffer
pointers to include the line number. Add operation to generate a
string that shows the line number and character number of either a
given pointer or the current position.
* Eliminate DECREMENT-PARSER-BUFFER-POINTER, which was unused and
makes implementing the line number more difficult.
* Add -NO-ADVANCE versions of procedures that match single characters.
* Change terminology: the index of the current character in the buffer
is called a "position". The word "pointer" is reserved to refer to
pointer objects that are handed to the users, which themselves refer
to positions.
Chris Hanson [Fri, 29 Jun 2001 05:17:21 +0000 (05:17 +0000)]
* Track the line number of the current buffer position, so that error
messages can refer to the line. Change representation of buffer
pointers to include the line number. Add operation to generate a
string that shows the line number and character number of either a
given pointer or the current position.
* Eliminate DECREMENT-PARSER-BUFFER-POINTER, which was unused and
makes implementing the line number more difficult.
* Add -NO-ADVANCE versions of procedures that match single characters.
* Change terminology: the index of the current character in the buffer
is called a "position". The word "pointer" is reserved to refer to
pointer objects that are handed to the users, which themselves refer
to positions.
Chris Hanson [Tue, 26 Jun 2001 18:52:35 +0000 (18:52 +0000)]
Fix problem with optimizer: needed to add notion of default rules that
are used when a more specific pattern isn't available. Also,
generalize OPTIMIZE-GROUP-EXPRESSION so that it can be used by
VECTOR-APPEND.
Chris Hanson [Fri, 15 Jun 2001 20:38:51 +0000 (20:38 +0000)]
Change representation of character sets so that they do not satisfy
STRING?. Unfortunately, this requires a complete recompilation of the
system, since the primitives SUBSTRING-FIND-NEXT-CHAR-IN-SET and
SUBSTRING-FIND-PREVIOUS-CHAR-IN-SET were being hard-coded by the
syntaxer.
Chris Hanson [Tue, 12 Jun 2001 01:05:44 +0000 (01:05 +0000)]
Start the folder-probe thread only when the folder is ONLINE, and stop
the thread when the folder is OFFLINE. Make sure that the buffer is
disassociated from it's folder when the buffer is killed.
Chris Hanson [Tue, 12 Jun 2001 00:58:15 +0000 (00:58 +0000)]
Start the folder-probe thread only when the folder is ONLINE, and stop
the thread when the folder is OFFLINE. Make sure that the buffer is
disassociated from it's folder when the buffer is killed.
Chris Hanson [Tue, 12 Jun 2001 00:47:39 +0000 (00:47 +0000)]
Change OPEN-RESOURCE and CLOSE-RESOURCE so that all of their behavior
is pushed down into the type-dependent modules. (Previously, they had
some type-independent code.) This, plus one explicit call, now means
that the STATUS modification event is now consistently signalled
whenever the connection status changes.
Chris Hanson [Sat, 9 Jun 2001 00:30:38 +0000 (00:30 +0000)]
INPUT-BUFFER/READ-SUBSTRING must use generic arithmetic for indexes
into the substring, because it might be an xstring that is larger than
the fixnum range.