In other words, only names that are defined by the same join definition have some kind of interaction that is of the runtime system responsibility. Both the join and jocaml systems implement the automata of the previous section. However, they do so in quite different manners. The former focuses on minimizing runtime testing, while the latter involves a systematic runtime testing of the current status at every message arrival. 4.2 Definitions in join Runtime definitions are vector structures.
Every name defined in a definition occupies two slots in the vector structure.
The first entry holds a code pointer that stands for the name itself, while the second entry holds a pointer to a queue of pending messages, queues being organized as linked lists. Runtime definitions include additional slots that hold the values of the variables that are free in guarded processes. Message sending on name x is performed by stacking message values and then calling the code for name x . This code is retrieved by dereferencing twice the infix pointer that represents x at runtime. However, there is a big difference between mutually recursive functions and join definitions.