When looking at numerous backtraces, I find that the pattern LispThread.execute->Symbol.execute->function.execute happens very often. The only thing Symbol.execute does is forward the call to the function in its function slot.
Now, we could save ourselves this stackframe by taking "the stack hit" in LispThread.execute the following way:
if (function instanceof Symbol) function.getSymbolFunction().execute() else function.execute()
where the execute function in LispThread currently only contains function.execute()...
I found our implementation uses a *lot* more stack than the average Java application. This may be a way to reduce that a bit. What about it?
Bye,
Erik.