Touching analysis: avoiding runtime checking in future-based parallel languages
Jürgen Knopp · 2002
In languages with futures there is no static distinction between data computed locally and data calculated by other processes. Hence, before values are really used an automatic accessibility check must be done. If the data are not yet computed the execution is suspended. Such checks must be done even when all data objects are presented. It is shown how to infer at compile time the locations where these checks can be suppressed. The method works by abstract interpretation. The algorithm applies for both functional and nonfunctional Lisp. It has been implemented in Common Lisp and covers the analysis of most Lisp constructs. The benchmarks are promising. The semantics of implicit waiting in future-based languages are presented. The relationship to strictness analysis and type inference is stressed.>