New fasl version to support ephemerons.
authorTaylor R Campbell <campbell@mumble.net>
Sat, 4 Sep 2010 05:10:17 +0000 (05:10 +0000)
committerTaylor R Campbell <campbell@mumble.net>
Sat, 4 Sep 2010 05:10:17 +0000 (05:10 +0000)
commit4d5a689dc34dda582b80682a0d939b3cff9c7811
tree7de0c5499c110f0aad7dedb62f86af187f80885d
parent49c97d282cedcb5211566343ea0647e39e21334b
New fasl version to support ephemerons.

In the process, complete the transition to the STACK_END fasl format.

In the EPHEMERON fasl format, the fasl header has an extra field for
the number of ephemerons stored in the fasl, for which the fasloader
reserves space in ephemeron_array.

The fasdumper chooses between the C_CODE, STACK_END, or EPHEMERON
fasl format for maximum compatibility:

- If there are any ephemerons in the fasl, the fasdumper chooses the
  EPHEMERON format.  Older microcodes don't know about ephemerons and
  thus can't handle such fasls anyway.

- If dumping a band, the fasdumper chooses the STACK_END format,
  since the only differences between the C_CODE format and the
  STACK_END format matter only for bands.  Support for reading the
  STACK_END format was added in version 15 of the microcode; any
  newly created bands are not likely to be used in older microcodes
  than that anyway.

- Otherwise, the fasdumper chooses the C_CODE format, like before.
src/microcode/fasdump.c
src/microcode/fasl.c
src/microcode/fasl.h
src/microcode/fasload.c
src/microcode/memmag.c
src/microcode/memmag.h