|
ABSTRACT
Compilers for dynamically and statically typed languages ensure safe execution by verifying that all operations are performed on appropriate values. An operation as simple as car in Scheme and hd in SML will include a run time check unless the compiler can prove that the argument is always a non-empty list using some type analysis. We present a demand-driven type analysis that can adapt the precision of the analysis to various parts of the program being compiled. This approach has the advantage that the analysis effort can be spent where it is justified by the possibility of removing a run time check, and where added precision is needed to accurately analyze complex parts of the program. Like the k-cfa our approach is based on abstract interpretation but it can analyze some important programs more accurately than the k-cfa for any value of k. We have built a prototype of our type analysis and tested it on various programs with higher order functions. It can remove all run time type checks in some nontrivial programs which use map and the Y combinator.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
|
 |
2
|
|
| |
3
|
D. Dubé. Demand-Driven Type Analysis for Dynamically-Typed Functional Languages. PhD thesis, Université de Montréal, 2002. Available at: http://www.iro.umontreal.ca/~dube.
|
| |
4
|
D. Dubé and M. Feeley. Demand-driven type analysis: an introduction. In Proceedings of the Workshop on Scheme and Functional Programming 2001, pages 21--32, sep 2001.
|
 |
5
|
Evelyn Duesterwald , Rajiv Gupta , Mary Lou Soffa, Demand-driven computation of interprocedural data flow, Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.37-48, January 23-25, 1995, San Francisco, California, United States
[doi> 10.1145/199448.199461]
|
 |
6
|
|
 |
7
|
|
 |
8
|
|
 |
9
|
|
|