diff options
Diffstat (limited to 'log.md')
-rw-r--r-- | log.md | 30 |
1 files changed, 30 insertions, 0 deletions
@@ -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. |