Several changes:
- Closures are allocated differently: the compiler prepares a pattern,
the linker finalizes it, the garbage collector relocates it, and
the pattern is copied at runtime to make a new closure.
- Tighten up the closure code: eliminate the privilege-bit-clearing
instruction, and share the closure gc stubs between all the closures
in a block.
- Add a code segment facility to the linearizer.
- Add a padding facility to the assembler.
- Compiled code blocks are now aligned to floating-point boundaries
so that they can contain embedded floating-point values and closure
patterns can be copied using floating-point loads and stores.
- Floating-point constants are now embedded in the code area,
requiring fewer operations.