Topics: Deferred calls

This week once again was spent on the implementation of deferred calls.

Deferred calls

Deferred calls (when invoked on returns and tail calls) are now run before their frame is popped. This allows them to access the values that were defined in their scope (so for example pointers work in deferred calls).

Invoking deferred calls before popping frames during stack unwinding is not yet implemented.

However, deferred calls are now invoked during stack unwinding both when the exception is caught, and when it is uncaught. This means that the basic functionality of deferred calls is now implemented and what is left are just incremental improvements and fixes.