Lazily create the little used portions of the Lisp stack.
Aggressively cache and control the use of memory by the underlying Lisp stack frame representation by introducing the private LispThread.StackFrame and LispThread.StackSegments classes. Dmitry Nadezhin contributes the following: LispStackFrame object are allocated on every LispThread.execute(...) . However, they are seldom [accessed] ([... verify via] inspect[tion of the] stack trace). This patch delays allocation of LispStackFrame objects until they are requested. Raw information about stack frames is stored in stack. Stack is an Object array (more precisely a list of [...]4 [Mib] Object arrays). Implement org.armedbear.lisp.protocol.Inspectable on StackSegment (incomplete). We are going to need a way to try to less agressively grab 4Mib chunks in low memory situations. Promote comments to javadoc in LispThread where it makes sense (incomplete). Remove "first", "second", "third" accessor forms in LispStackFrame in favor of exclusive use of varargs. This may affect usage on pre jre-1.5.0 JVMs. Users who have trouble with this requirement should consider weaving pre-1.5 bytecode with appropiate thunks for vararg calls.