Be notified of new releases
Create your free GitHub account today to subscribe to this repository for new releases and build software alongside 50 million developers.Sign up
MLKit now generates 64bit assembler under both Linux and macOS for all combinations of GC, region-based memory management, and profiling. All tests are working, including the following targets:
(cd test_dev; make test)
(cd test; make test_mlkit)
There are a number of possibilities for improvements and features that are not currently included. In particular, the KAM backend, which is the basis for SMLserver, has not yet been ported.
Possibilities for improvements include:
- Elimination of the
gen->bpointer (use alignment properties instead).
- Inlining of allocation in regions (for the common case).
- Figure out how to assign certain C callee-save registers to variables that are live across C calls.
- Many peep-hole optimisations seem possible.
- Eliminate the need for dynamic stack alignment on 16-byte boundaries.
- Test the preliminary support for generational garbage collection.
- Use conditional move instructions instead of conditional jumps when possible.
- Add Word64 and Word63 modules and friends. Whenever we have WordX, we should also have IntX. We should then also modify the default word type to be Word64.word if GC is disabled and Word63.word if GC is enabled. Immediate constants of size 64 and 63 should also be supported.