On Wednesday, 16 November 2016 at 09:22:01 UTC, Stefan Koch wrote:
On Tuesday, 15 November 2016 at 23:46:51 UTC, Stefan Koch wrote:
I suspect that somewhere the heapPtr is not bumped or the
length is not set correctly.
Indeed the length was not set on a code-path meant for
resizeing.
The problem is fixed :)
The HeapLimit has been raised to a more reasonable limit of 2
^^ 24 Addresses. (Which means that you'll have 2 ^^ 24 Bytes in
practice.)
In fact, there is a single design decision that fosters these
kinds of problems.
And that is to go with a low-level IR.
However although it's a tough route. It's also the only solution,
(the only one I could think of), that will really enable CTFE to
scale gracefully.
My latest measurements show that even for relatively small arrays
(2 ^^ 15) bytes.
There is a 2x speedup.
When the interpreter backend.
As soon as my own jit backend is in place the performance will be
a factor of 6 better.
Makeing newCTFE 12x faster then the current engine, even on small
one-shot functions!