Polymorphic splitting
- 1 January 1998
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 20 (1) , 166-207
- https://doi.org/10.1145/271510.271523
Abstract
This article describes a general-purpose program analysis that computes global control-flow and data-flow information for higher-order, call-by-value languages. The analysis employs a novel form of polyvariance called polymorhic splitting that uses let-expressions as syntactic clues to gain precision. The information derived from the analysis is used both to eliminate run-time checks and to inline procedure. The analysis and optimizations have been applied to a suite of Scheme programs. Experimental results obtained from the prototype implementation indicate that the analysis is extremely precise and has reasonable cost. Compared to monovariant flow analyses such as 0CFA, or analyses based on type inference such as soft typing, the analysis eliminates significantly more run-time checks. Run-time check elimination and inlining together typically yield a 20 to 40% performance improvement for the benchmark suite, with some programs running four times as fast.Keywords
This publication has 34 references indexed in Scilit:
- A theory of type polymorphism in programmingPublished by Elsevier ,2003
- A practical soft type system for schemeACM Transactions on Programming Languages and Systems, 1997
- Simple imperative polymorphismHigher-Order and Symbolic Computation, 1995
- Closure analysis in constraint formACM Transactions on Programming Languages and Systems, 1995
- Using Multilisp for solving constraint satisfaction problems: An application to nucleic acid 3D structure determinationHigher-Order and Symbolic Computation, 1994
- Profile‐guided automatic inline expansion for C programsSoftware: Practice and Experience, 1992
- Unexpected side effects of inline substitutionACM Letters on Programming Languages and Systems, 1992
- An experiment with inline substitutionSoftware: Practice and Experience, 1991
- TICL—A type inference system for Common LispSoftware: Practice and Experience, 1990
- A Scheme for the Automatic Inference of Variable TypesJournal of the ACM, 1980