[project @ 1999-12-10 15:59:41 by sewardj]
authorsewardj <unknown>
Fri, 10 Dec 1999 15:59:57 +0000 (15:59 +0000)
committersewardj <unknown>
Fri, 10 Dec 1999 15:59:57 +0000 (15:59 +0000)
commit51c33894862dfd591d71018a70f4ca3914b17f7b
tree2f76b3441a30ee1fc5697244099dec8996fa5b08
parent0491574d08a1fef8f33065d8528ff9b9147c1cca
[project @ 1999-12-10 15:59:41 by sewardj]
Major improvements in interface processing, and minor supporting
improvements to CT-storage management.

* Make the iface parser return the complete interface as a single
  tree, which is processed later.  Added abs syntax tags
  I_INTERFACE .. I_VALUE to support this.

* Add tagged ("z") 2,3,4,5 tuples.  Because they are tagged, they can't
  be confused with lists, etc.  Selectors zfst, zsnd ... zsel45, zsel55
  check tags first.  Iface processing uses z-tuples wherever it can.

* Add unap as a safe "inverse" of ap; it checks tags.  So
  unap(TAG1, ap(TAG2,cell)) == cell but only if TAG1==TAG2, else
  assertion failure.

* In interface.c, clean up the startGHC*/endGHC* functions.
  processInterfaces() is the top-level driver; it makes 4
  passes over the supplied iface trees.

* Throw away iface symbols not mentioned in export lists.

* Use iface export lists to construct both the export and
  eval environments for a module.

* Don't use Texts to refer to things.  Instead use ConId and
  VarId.  Added ConId and VarId as synonyms for Cell in
  storage.h.

* Add findSimpleInstance in storage.c.
17 files changed:
ghc/interpreter/codegen.c
ghc/interpreter/compiler.c
ghc/interpreter/connect.h
ghc/interpreter/derive.c
ghc/interpreter/hugs.c
ghc/interpreter/input.c
ghc/interpreter/interface.c
ghc/interpreter/lift.c
ghc/interpreter/link.c
ghc/interpreter/machdep.c
ghc/interpreter/parser.y
ghc/interpreter/static.c
ghc/interpreter/storage.c
ghc/interpreter/storage.h
ghc/interpreter/subst.c
ghc/interpreter/translate.c
ghc/interpreter/type.c