Caveats Before doing an upcall, place all layer-specific memory into a consistent state and remove all locks on it. This way, if the upcall fails, other clients of the layer are not adversely affected. Often one is forced to rely on the competency of the programmer. All tasks are executed in a single shared address space. They need shared memory to communicate between tasks within a level, and conclude that all memory must be completely shared.
Memory protection is provided via language support and garbage collection.