We should be able to optimize away saves/restores of ExecutionContext in some cases:
- If we can prove the
ExecutionContext will not be read before we return then we can rely on the caller to restore its own ExecutionContext.
- We can collapse "save/call/restore, save/call/restore" sequences into "save/call/restore, call/restore" sequences instead if we can prove
ExecutionContext is not changed between the second "restore" and "save".