Abstract
In order to exploit specialization opportunities that exist in programs written by researchers outside of the programming language community, a partial evaluator needs to effectively treat existing realistic applications. Our empirical studies have demonstrated that real-sized applications extensively use non-liftable values such as pointers and data structures. Therefore, it is essential that the binding-time analysis accurately treats nonliftable values. To achieve this accuracy, we introduce the notion of use sensitivity, and present a use-sensitive binding-time analysis for C programs which is obtained by a forward analysis followed by a backward analysis. This analysis has been implemented and integrated into our partial evaluator for C, called Tempo. To validate the effectiveness of our analysis and demonstrate that use sensitivity is critical to obtain highly-specialized programs, we have conducted experimental studies on various components of existing operating systems code. Our results clearly demonstrate that, as opposed to use insensitivity, use sensitivity drastically increases the static computations detected by the analysis which, in practice, leads to successful specialization.
Preview
Unable to display preview. Download preview PDF.
References
S.M. Abramov and N.V. Kondratjev. A compiler based on partial evaluation. In Problems of Applied Mathematics and Software Systems, pages 66–69. Moscow State University, Moscow, USSR, 1982. (In Russian).
A.V. Aho, R. Sethi, and J.D. Ullman. Compilers Principles, Techniques, and Tools. Addison-Wesley, 1986.
L.O. Andersen. Self-applicable C program specialization. In Partial Evaluation and Semantics-Based Program Manipulation, pages 54–61, San Francisco, CA, USA, June 1992. Yale University, New Haven, CT, USA. Technical Report YALEU/DCS/RR-909.
L.O. Andersen. Program Analysis and Specialization for the C Programming Language. PhD thesis, Computer Science Department, University of Copenhagen, May 1994. DIKU Technical Report 94/19.
P.H. Andersen. Partial evaluation applied to ray tracing. DIKU Research Report 95/2, DIKU, University of Copenhagen, Denmark, 1995.
R. Baier, R. Chick, and R. Zöchling. Partial evaluation of numerical programs in Fortran. In Partial Evaluation and Semantics-Based Program Manipulation, Orlando, Florida, June 1994 (Technical Report 94/9, Department of Computer Science, University of Melbourne), pages 119–132, 1994.
A.A. Berlin. Partial evaluation applied to numerical computation. In 1990 ACM Conference on Lisp and Functional Programming, Nice, France, pages 139–150. New York: ACM, 1990.
C. Consel. Polyvariant binding-time analysis for applicative languages. In PEPM93 [37], pages 145–154.
C. Consel. A tour of Schism. In PEPM93 [37], pages 66–77.
C. Consel and O. Danvy. Tutorial notes on partial evaluation. In Conference Record of the Twentieth Annual ACM SIGPLAN-SIGACT Symposium on Principles Of Programming Languages, pages 493–501, Charleston, SC, USA, January 1993. ACM Press.
C. Consel, L. Hornof, F. Noël, J. Noyé, and E.N. Volanschi. A uniform approach for compile-time and run-time specialization. In Danvy et al. [17], pages 54–72.
C. Consel and S.C. Khoo. Semantics-directed generation of a Prolog compiler. In J. Maluszyński and M. Wirsing, editors, Proceedings of the 3 rd International Symposium on Programming Language Implementation and Logic Programming, number 528 in Lecture Notes in Computer Science, pages 135–146, Passau, Germany, August 1991. Springer-Verlag.
C. Consel and F. Noel. A general approach for run-time specialization and its application to C. In POPL96, St. Petersburg Beach, FL, USA, January 1996. ACM Press, pages 145–156.
C. Consel, C. Pu, and J. Walpole. Incremental specialization: The key to high performance, modularity and portability in operating systems. In PEPM93, Copenhagen, Denmark, June 1993. ACM Press pages 44–46. Invited paper.
C. Consel, C. Pu, and J. Walpole. Making production OS kernel adaptive: Incremental specialization in practice. Technical report, Department of Computer Science and Engineering, Oregon Graduate Institute of Science & Technology, 1994.
O. Danvy. Type-directed partial evaluation. In POPL96, St. Petersburg Beach, FL, USA, January 1996. ACM Press, pages 242–257.
O. Danvy, R. Glück, and P. Thiemann, editors. Partial Evaluation, International Seminar, Dagstuhl Castle, number 1110 in Lecture Notes in Computer Science, February 1996.
O. Danvy, K. Malmkjaer, and J. Palsberg. The essence of eta-expansion in partial evaluation. Lisp and Symbolic Computation, 8(3):209–228, September 1995.
M. Das, T. Reps, and P. Van Hentenryck. Semantic foundations of binding-time analysis for imperative programs. In ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation, pages 100–110, La Jolla, CA, USA, 1995. ACM Press.
A.M. Erosa and L.J. Hendren. Taming control flow: A structured approach to eliminating goto statements. In Proceedings of the IEEE 1994 International Conference on Computer Languages, May 1994.
R. Glück, R. Nakashige, and R. Zöchling. Binding-time analysis applied to mathematical algorithms. In J. Dolevzal and J. Fidler, editors, System Modelling and Optimization, pages 137–146. Chapman and Hall, 1995.
C. Goad. Automatic construction of special purpose programs. In D.W. Loveland, editor, 6th Conference on Automated Deduction, New York, USA Lecture Notes in Computer Science, vol. 188), pages 194–208. Berlin: Springer-Verlag, 1982.
C. K. Gomard and N. D. Jones. Compiler generation by partial evaluation. In G. X. Ritter, editor, Information Processing '89. Proceedings of the IFIP 11th World Computer Congress, pages 1139–1144. IFIP, Amsterdam: North-Holland, 1989.
L. Hornof. Static Analyses for the Effective Specialization of Realistic Applications. PhD thesis, Université de Rennes I, June 1997.
L. Hornof and J. Noyé. Accurate binding-time analysis for imperative languages: Flow, context, and return sensitivity. In PEPM97, Amsterdam, The Netherlands, June 1997. ACM Press.
N.D. Jones. An introduction to partial evaluation. ACM Computing Surveys, 28(3):480–503, sep 1996.
N.D. Jones, C. Gomard, and P. Sestoft. Partial Evaluation and Automatic Program Generation International Series in Computer Science. Prentice-Hall, June 1993.
N.D. Jones and D.A. Schmidt. Compiler generation from denotational semantics. In N.D. Jones, editor, Semantics-Directed Compiler Generation, Aarhus, Denmark Lecture Notes in Computer Science, vol. 94), pages 70–93. Berlin: Springer-Verlag, 1980.
J. Jørgensen. Compiler generation by partial evaluation. Master's thesis, DIKU, University of Copenhagen, Denmark, 1992. Student Project 92-1-4.
P. Kleinrubatscher, A. Kriegshaber, R. Zöchling, and R. Chick. Fortran program specialization. In U. Meyer and G. Snelting, editors, Workshop Semantikgestützte Analyse, Entwicklung and Generierung van Programmer, pages 45–54. Justus-Liebig-Universät, Giessen, Germany, 1994. Report No. 9402.
T.J. Marlowe and B.G. Ryder. Properties of data flow frameworks. Acta Informatica, 28(2):121–163, December 1990.
R. Metzger and S. Stroud. Interprocedural constant propagation: An empirical study. ACM Letter on Programming Languages and Systems, 2(1-4):213–232, March–December 1993.
T. Mogensen. The application of partial evaluation to ray-tracing. Master's thesis, DIKU, University of Copenhagen, Denmark, 1986.
G. Muller, R. Marlet, E.N. Volanschi, C. Consel, C. Pu, and A. Goel. Fast, optimized Sun RPC using automatic program specialization. Publication interne 1094, IRISA, Rennes, France, March 1997.
G. Muller, E.N. Volanschi, and R. Marlet. Scaling up partial evaluation for optimizing the Sun commercial RPC protocol. In PEPM97, Amsterdam, The Netherlands, June 1997. ACM Press.
H.R. Nielson and F. Nielson. Semantics with Applications: A Formal Introduction. Wiley Professional Computing. John Wiley & Sons, 1991.
Partial Evaluation and Semantics-Based Program Manipulation, Copenhagen, Denmark, June 1993. ACM Press.
ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation, Amsterdam, The Netherlands, June 1997. ACM Press.
Conference Record of the 23rdAnnual ACM SIGPLAN-SIGACT Symposium on Principles Of Programming Languages, St. Petersburg Beach, FL, USA, January 1996. ACM Press.
C. Pu, T. Autrey, A. Black, C. Consel, C. Cowan, J. Inouye, L. Kethana, J. Walpole, and K. Zhang. Optimistic incremental specialization: Streamlining a commercial operating system. In Proceedings of the 1995 ACM Symposium on Operating Systems Principles, pages 314–324, Copper Mountain Resort, CO, USA, December 1995. ACM Operating Systems Reviews, 29(5),ACM Press.
T. Reps and T. Turnidge. Program specialization via program slicing. In Danvy et al. [17], pages 409–429.
S.A. Romanenko. Arity raiser and its use in program specialization. In N. Jones, editor, ESOP'90 — Third European Symposium on Programming, number 432 in Lecture Notes in Computer Science, pages 340–360, Copenhagen, Denmark, May 1990. Springer-Verlag.
Sun Microsystems. Network Programming Guide, March 1990.
A.S. Tanenbaum. Operating Systems: Design and Implementation. Prentice-Hall, 1987.
F. Tip. A survey of program slicing techniques. Report CS-R9438, Computer Science, Centrum voor Wiskunde en Informatica, 1994.
E.N. Volanschi, G. Muller, and C. Consel. Safe operating system specialization: the RPC case study. In Workshop Record of WCSSS'96-The Inaugural Workshop on Compiler Support for Systems Software, pages 24–28, Tucson, AZ, USA, February 1996.
E.N. Volanschi, G. Muller, C. Consel, L. Hornof, J. Noyé, and C. Pu. A uniform automatic approach to copy elimination in system extensions via program specialization. Research Report 2903, INRIA, Rennes, France, June 1996.
D. Weise, R. Conybeare, E. Ruf, and S. Seligman. Automatic online partial evaluation. In J. Hughes, editor, Functional Programming Languages and Computer Architecture, volume 523 of Lecture Notes in Computer Science, pages 165–191, Cambridge, MA, USA, August 1991. Springer-Verlag.
R.P. Wilson, R.S. French, C.S. Wilson, S.P. Amarasinghe, J.M. Anderson, S.W.K. Tjiang, S. W. Liao, C. W. Tseng, M.W. Hall, M.S. Lam, and J.L. Hennessy. SUIF: An infrastructure for research on parallelizing and optimizing compilers. ACM SIGPLAN Notices, 29(12):31–37, December 94.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1997 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Hornof, L., Consel, C., Noyé, J. (1997). Effective specialization of realistic programs via use sensitivity. In: Van Hentenryck, P. (eds) Static Analysis. SAS 1997. Lecture Notes in Computer Science, vol 1302. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0032749
Download citation
DOI: https://doi.org/10.1007/BFb0032749
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-63468-3
Online ISBN: 978-3-540-69576-9
eBook Packages: Springer Book Archive