Skip to content
  • mevenson@1c010e3e-69d0-11dd-93a8-456734b0d56f's avatar
    Lazily create the little used portions of the Lisp stack. · 134eb4b3
    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.
    134eb4b3