LispStackFrame object are allocated on every LispThread.execute(...) . However, they are seldom (to inspect 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 8 MB Object[] arrays ).
On 8/18/13 9:52 AM, Dmitry Nadezhin wrote:
LispStackFrame object are allocated on every LispThread.execute(...) . However, they are seldom (to inspect 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 8 MB Object[] arrays ).
Cool patch! Reviewing…
Well, something happened between the last time I ran the maxima test suite and this patch! In my memory, the testsuite ran around 1100secs on my laptop. Today, with this patch that was only 670.
The difference is too big to attribute solely to a different jvm version or other memory settings.
Thanks!
Erik.
sent from my phone On Aug 18, 2013 10:49 AM, "Mark Evenson" evenson@panix.com wrote:
On 8/18/13 9:52 AM, Dmitry Nadezhin wrote:
LispStackFrame object are allocated on every LispThread.execute(...) . However, they are seldom (to inspect 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 8 MB Object[] arrays ).
Cool patch! Reviewing…
-- "A screaming comes across the sky. It has happened before, but there is nothing to compare to it now."
On 8/19/13 12:05 AM, Erik Huelsmann wrote:
[…]
The difference is too big to attribute solely to a different jvm version or other memory settings.
Thanks!
[… Dmitry Nadezhin contributes:]
LispStackFrame object are allocated on every LispThread.execute(...) . However, they are seldom (to inspect 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 8 MB Object[] arrays ).
[…]
Committed with a few (mostly cosmetic changes) in [r14579][1].
@Dmitry: Thanks for the substantial patch of the stack abstraction! It makes it quite clear how to proceed with transcribing local variable information, which is something that has always bugged me about our SLIME sophistication.
[1]: http://lisp.not.org/trac/armedbear/changeset/14579
armedbear-devel@common-lisp.net