Completely rewrite the variable-reference code. New design is
authorChris Hanson <org/chris-hanson/cph>
Tue, 31 Jul 2001 03:12:15 +0000 (03:12 +0000)
committerChris Hanson <org/chris-hanson/cph>
Tue, 31 Jul 2001 03:12:15 +0000 (03:12 +0000)
commit84a3db4469e127771008514b7025c833ee83f4f9
tree0a5f79d35a00976786a7130a1a29f7de2427a43a
parentd9bd02e7beeefd5a672ccd9743d679f2bf4f5ea6
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".

Eliminate all unused trap kinds.
16 files changed:
v7/src/microcode/boot.c
v7/src/microcode/cmpint.c
v7/src/microcode/debug.c
v7/src/microcode/extern.h
v7/src/microcode/fasload.c
v7/src/microcode/hooks.c
v7/src/microcode/interp.c
v7/src/microcode/lookprm.c
v7/src/microcode/lookup.c
v7/src/microcode/lookup.h
v7/src/microcode/object.h
v7/src/microcode/os2.h
v7/src/microcode/scode.h
v7/src/microcode/sdata.h
v7/src/microcode/trap.h
v7/src/microcode/utils.c