System stack: Difference between revisions

Content added Content deleted
m (Removed duplicate links)
m (Explanation of non-contiguous strings)
Line 9: Line 9:
* In [[concurrent programming]] each [[task]] has a ''stack'' of its own. Differently to the heap, ''stacks'' need not to be shared between the tasks and thus no interlocking is required;
* In [[concurrent programming]] each [[task]] has a ''stack'' of its own. Differently to the heap, ''stacks'' need not to be shared between the tasks and thus no interlocking is required;
* The language run-time environment may maintain multiple ''stacks'' for one task. For example, the arguments and the local variables of a subprogram may be allocated on a stack different from the stack used for the return. When the subprograms are allowed to return values of variable size, this prevents confusion between return values and local variables. Upon return stacks are swapped;
* The language run-time environment may maintain multiple ''stacks'' for one task. For example, the arguments and the local variables of a subprogram may be allocated on a stack different from the stack used for the return. When the subprograms are allowed to return values of variable size, this prevents confusion between return values and local variables. Upon return stacks are swapped;
* Secondary ''stacks'' may be used for allocation of non-contiguous objects, typically strings.
* Secondary ''stacks'' may be used for allocation of non-contiguous objects, typically varying strings (consisting of the dope and body).