From 8ad297ee59ccbbfbab8e3f9ebc465cf740d363a1 Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Sat, 26 Nov 2016 20:55:48 +0100 Subject: log --- log.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/log.md b/log.md index 4025a30..69106d8 100644 --- a/log.md +++ b/log.md @@ -465,3 +465,33 @@ Start = append (fromto toRec 1 100) (fromto toRec 500 1000) ``` Seems to work fine so far. + +### 2016-11-26 + +Some updates, log is outdated... + +- I had mixed the `heap_size` and `heap_size_multiple` variables in `cgopts.s` + in September, and setting them correctly breaks some programs (one example is + `lqueen.icl`). It most likely indicates a problem that was already there but + somehow did not occur before. + +- Adapted the RTS to use aliases for register names, so that optimisation can + be done easily. **TODO**: there is an optimisation possibility with + registers, as some narrow thumb instructions can only use r0-r7; the + most-used registers should be there. + +- A number of programs that this log claimed were working seems broken now, + perhaps I didn't check with small heap sizes before? + +- The compacting compiler is broken. + +--- + +There is an issue in `ccall`s; they attempt to do `and sp,sp,#-8` which is not +allowed (see 3.7 of the Thumb-2 supplement). The quick solution is to `mov` to +the scratch register, do the operation there, and then move back (implemented +in cg `4290310`). + +Tried compiling the Clean compiler with a hacked clm. Had to `strip cocl` +manually, then achieved a size of 5.1M (5325412 bytes) compared to 5.3M +(5475152) for ARM. Segfaults, of course, when tried to use. -- cgit v1.2.3