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


JOB_STACKFRAME_VANILLA

JOB_STACKFRAME_VANILLA stackframes in context will look as follows:

  job_RunState.l   ->   size in bytes of below stackframe
                        JOB_STACKFRAME_VANILLA
                        junk entry.
                        size in bytes of above stackframe

                        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

When an after{ clause completes normally, it changes its PROTECT stackframe to a VANILLA stackframe and then starts up the }always_do{ clause. When the }always_do{ clause completes, it pops the VANILLA stackframe.

(If the after{ clause does not complete normally, something tastier than a VANILLA frame is pushed, and when done the }ALWAYS_DO{ clause will continue whatever activity the }ALWAYS_DO{ interrupted, getting the needed information from the tasty stackframe, which it eats before finishing.)

A full getStackframe[ VANILLA frame result looks like:

:owner             object
:kind              :vanilla
:junk		   junk


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