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


JOB_STACKFRAME_TMP_USER

JOB_STACKFRAME_TMP_USER stackframes in context will look as follows:


  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

                        size in bytes of below stackframe
                        JOB_STACKFRAME_TMP_USER
                        previous actingUser value
                        size in bytes of above stackframe

These stackframes are pushed to mark the scope of a handler being executed: We wish handlers to execute under the effective user who established them, to avoid odd problems, but wish the original user automatically restored upon exit.

The JOB_STACKFRAME_TMP_USER stackframe differs from the JOB_STACKFRAME_USER stackframe primarily in that it is pushed below rather than above the associated JOB_STACKFRAME_USER stackframe, and consequently is popped when encountered by the return operator.

A full getStackframe[ USER frame result looks like:

:owner             object
:kind              :tmp-user
:actingUser       object


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