thisContext is a special object for representing an activation in a stack frame in a stack-based VM.
Actually "thisContext" represents *the current* activation/stack-frame. foo: anObject ^ thisContext at: 1 is the same as foo: anObject ^ anObject
There are two kinds of contexts: Method Contexts and Block Contexts.
Actually in Pharo images there are only instances of MethodContext. Though you can ask the context if it comes from a block by sending the message #isExecutingBlock.
Context creation is optimized in the VM in most Smalltalks, so it's only really created as an object in the environment (reified) when it's specifically needed through "thisContext".
In Pharo contexts are not reified like that. Stack-frames are actual objects at all times. However, for speed reasons, their creation and garbage-collection is optimized by the VM. Stack frames get automatically recycled if nobody refers to them.
There are several applications related with computational reflection (Reflective Programming, Meta-Programming, MOP, etc) which makes use of the current context.
Also: exception handling, generators, continuations, co-routines, ... For another fun use of "thisContext" check this Stack-Overflow question: http://stackoverflow.com/questions/2500483/is-there-a-way-in-a-message-only-... Lukas -- Lukas Renggli www.lukas-renggli.ch