Skip to main content

Effective specialization of realistic programs via use sensitivity

  • Procedural Programming II
  • Conference paper
  • First Online:
Static Analysis (SAS 1997)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 1302))

Included in the following conference series:

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 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).

    Google Scholar 

  2. A.V. Aho, R. Sethi, and J.D. Ullman. Compilers Principles, Techniques, and Tools. Addison-Wesley, 1986.

    Google Scholar 

  3. 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.

    Google Scholar 

  4. 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.

    Google Scholar 

  5. P.H. Andersen. Partial evaluation applied to ray tracing. DIKU Research Report 95/2, DIKU, University of Copenhagen, Denmark, 1995.

    Google Scholar 

  6. 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.

    Google Scholar 

  7. 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.

    Google Scholar 

  8. C. Consel. Polyvariant binding-time analysis for applicative languages. In PEPM93 [37], pages 145–154.

    Google Scholar 

  9. C. Consel. A tour of Schism. In PEPM93 [37], pages 66–77.

    Google Scholar 

  10. 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.

    Google Scholar 

  11. 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.

    Google Scholar 

  12. 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.

    Google Scholar 

  13. 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.

    Google Scholar 

  14. 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.

    Google Scholar 

  15. 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.

    Google Scholar 

  16. O. Danvy. Type-directed partial evaluation. In POPL96, St. Petersburg Beach, FL, USA, January 1996. ACM Press, pages 242–257.

    Google Scholar 

  17. 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.

    Google Scholar 

  18. 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.

    Google Scholar 

  19. 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.

    Google Scholar 

  20. 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.

    Google Scholar 

  21. 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.

    Google Scholar 

  22. 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.

    Google Scholar 

  23. 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.

    Google Scholar 

  24. L. Hornof. Static Analyses for the Effective Specialization of Realistic Applications. PhD thesis, Université de Rennes I, June 1997.

    Google Scholar 

  25. 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.

    Google Scholar 

  26. N.D. Jones. An introduction to partial evaluation. ACM Computing Surveys, 28(3):480–503, sep 1996.

    Google Scholar 

  27. N.D. Jones, C. Gomard, and P. Sestoft. Partial Evaluation and Automatic Program Generation International Series in Computer Science. Prentice-Hall, June 1993.

    Google Scholar 

  28. 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.

    Google Scholar 

  29. J. Jørgensen. Compiler generation by partial evaluation. Master's thesis, DIKU, University of Copenhagen, Denmark, 1992. Student Project 92-1-4.

    Google Scholar 

  30. 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.

    Google Scholar 

  31. T.J. Marlowe and B.G. Ryder. Properties of data flow frameworks. Acta Informatica, 28(2):121–163, December 1990.

    Google Scholar 

  32. 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.

    Google Scholar 

  33. T. Mogensen. The application of partial evaluation to ray-tracing. Master's thesis, DIKU, University of Copenhagen, Denmark, 1986.

    Google Scholar 

  34. 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.

    Google Scholar 

  35. 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.

    Google Scholar 

  36. H.R. Nielson and F. Nielson. Semantics with Applications: A Formal Introduction. Wiley Professional Computing. John Wiley & Sons, 1991.

    Google Scholar 

  37. Partial Evaluation and Semantics-Based Program Manipulation, Copenhagen, Denmark, June 1993. ACM Press.

    Google Scholar 

  38. ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation, Amsterdam, The Netherlands, June 1997. ACM Press.

    Google Scholar 

  39. Conference Record of the 23rdAnnual ACM SIGPLAN-SIGACT Symposium on Principles Of Programming Languages, St. Petersburg Beach, FL, USA, January 1996. ACM Press.

    Google Scholar 

  40. 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.

    Google Scholar 

  41. T. Reps and T. Turnidge. Program specialization via program slicing. In Danvy et al. [17], pages 409–429.

    Google Scholar 

  42. 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.

    Google Scholar 

  43. Sun Microsystems. Network Programming Guide, March 1990.

    Google Scholar 

  44. A.S. Tanenbaum. Operating Systems: Design and Implementation. Prentice-Hall, 1987.

    Google Scholar 

  45. F. Tip. A survey of program slicing techniques. Report CS-R9438, Computer Science, Centrum voor Wiskunde en Informatica, 1994.

    Google Scholar 

  46. 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.

    Google Scholar 

  47. 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.

    Google Scholar 

  48. 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.

    Google Scholar 

  49. 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.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Pascal Van Hentenryck

Rights and permissions

Reprints 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

Publish with us

Policies and ethics