Go to the first, previous, next, last section, table of contents.


JOB_STACKFRAME_NORMAL

  job_RunState.l   ->   size in bytes of stackframe
                        JOB_STACKFRAME_NORMAL   
                        local_variable_N
			...
			local_variable_1
  job_RunState.v   ->	local_variable_0
                        compiledFunction for this frame.
                        programCounter for this frame.
                        size in bytes of stackframe

where job_RunState.l is an internal interpreter variable pointing to the current top of loop stack, and job_RunState.v is an internal interpreter variable pointing to the currently active set of local variables.

Rationale:

Note: The very bottom stackframe on a stack has a zero word below it. This stops any attempt to traverse down past the bottom of the stack:

  job_RunState.l   ->   size in bytes of below stackframe
                        JOB_STACKFRAME_NORMAL   
                        local_variable_N
			...
			local_variable_1
  job_RunState.v   ->	local_variable_0
                        compiledFunction for this frame.
                        programCounter for this frame.
                        size in bytes of above stackframe
                        ZERO WORD

A full getStackframe[ NORMAL frame result looks like:

:owner             object
:kind              :normal
:programCounter   fixnum
:compiledFunction object
:variables         count of local variables
0                  value of local_variable_0
1                  value of local_variable_1
...                ...


Go to the first, previous, next, last section, table of contents.