GEDANKEN—a simple typeless language based on the principle of completeness and the reference concept
Communications of the ACM
Revised report on the algorithm language ALGOL 60
Communications of the ACM
Proceedings of ACM conference on Proving assertions about programs
Two parallel EULER run time models: the dangling reference, impostor environment, and label problems
HLLCA '73 Proceedings of a symposium on High-level-language computer architecture
Algol-60 Implementation
Error checking with pointer variables
ACM '76 Proceedings of the 1976 annual conference
Scheme for invalidating references to freed storage
IBM Journal of Research and Development
Hi-index | 0.00 |
In block structured languages, upon entry to a block or procedure, storage is allocated for the identifiers declared in the block or procedure. There are two choices as to when to deallocate this storage: 1) upon exit from the block or procedure, 2) when the storage becomes inaccessible. In the deletion strategy, storage for blocks and procedures is allocated and deallocated in a last-in-first-out order. Therefore, storage for blocks and procedures can be managed efficiently on a pushdown stack. However, deletion gives rise to dangling references in the use of pointer, label, and procedure values. Retention is both more secure and more general in that it eliminates all possibility of dangling references, and it therefore removes all restrictions on the use of pointer, label, and procedure values. This paper develops an implementation of generalized (single task) block structured languages with compile time type determinability, which is capable of handling full retention but which keeps the run time cost of many well-stacked programs near that of the same program on a typical ALGOL 68 style implementation.