I was not able to compile the scheme part of the Kawa project because
the compiler is getting out of Heap Space when trying to compile the
file `gui.scm`.
....
(compiling XML.scm to gnu.kawa.slib.XML)
(compiling XStrings.scm to gnu.kawa.slib.XStrings)
(compiling gui.scm to gnu.kawa.slib.gui)
gui.scm:152: internal error while compiling gui.scm
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2760)
at java.util.Arrays.copyOf(Arrays.java:2734)
at java.util.ArrayList.ensureCapacity(ArrayList.java:167)
at java.util.ArrayList.addAll(ArrayList.java:474)
at gnu.expr.PushApply.forkNext(PushApply.java:276)
at gnu.expr.PushApply.forkPop(PushApply.java:284)
at gnu.expr.PushApply.visitIfExp(PushApply.java:138)
at gnu.expr.PushApply.visitIfExp(PushApply.java:23)
This is something I've seen but I haven't quite been able to
pin it down: Sometimes it seems a problem, but when I try to
narrow it down to when it happens, then it disappears.
However, I have a general idea how this can be fixed. The idea
is to replace this data-structure:
ArrayList<HashSet<LambdaExp>> canFinishCondition
by a Map<LambdaExp,IntNum>, where the IntNum result is a
bitmap of "paths that can finish". I have reason to believe
this would behave better, but the devil is in the details.