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.