Skip to main content

Partial Evaluation for Common Intermediate Language

  • Conference paper
Perspectives of System Informatics (PSI 2003)

Abstract

Partial Evaluation is a well-established method for specialization of programs in functional languages. However, real-world applications demand specialization of object-oriented languages. With the advent of the Microsoft .NET platform with Common Intermediate Language (CIL), to which multiple languages are compiled, various program analysis and transformation techniques, including partial evaluation, can be developed once for a low-level language rather than over and over again to various high-level languages. The CILPE Project aims at developing a practical specializer for CIL programs based on Partial Evaluation with preliminary analysis referred to as Binding Time Analysis (BTA). The CILPE Specializer partially evaluates operations on values and objects determined by BTA as static. Static objects are created, processed and destroyed at specialization time; they may be mutable and can have some fields unknown (dynamic). Arbitrary verifiable CIL code is allowed as input.

Supported by Microsoft Research grant No. 2002-83.

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

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Asai, K.: Binding-Time Analysis for Both Static and Dynamic Expressions. In: Cortesi, A., Filé, G. (eds.) SAS 1999. LNCS, vol. 1694, pp. 117–133. Springer, Heidelberg (1999)

    Chapter  Google Scholar 

  2. Asai, K., Masuhara, H., Yonezawa, A.: Partial Evaluation of Call– by-value lambda-calculus with Side-effects. In: Proceedings of the 1997 ACM SIGPLAN Symposium on Partial Evaluation and Semantics-based Program Manipulation, pp. 12–21. ACM Press, New York (1997)

    Chapter  Google Scholar 

  3. Bertelsen, P.: Binding-time analysis for a JVM core language (April 1999), ftp://ftp.dina.kvl.dk/pub/Staff/Peter.Bertelsen/bta-core-jvm.ps.gz

  4. Di Iorio, V., Bigonha, R., Maia, M.: A Self-Applicable Partial Evaluator for ASM. In: Gurevich, Y., Kutter, P., Odersky, M., Thiele, L. (eds.) Abstract State Machines – ASM 2000, International Workshop on Abstract State Machines, Local Proceedings, Monte Verita, Switzerland, March 2000. TIK-Report, vol. 87, pp. 115–130. Swiss Federal Institute of Technology (ETH), Zurich (2000)

    Google Scholar 

  5. ECMA International: Common Language Infrastructure (CLI), Standard ECMA- 335, 2nd edn (December 2002), http://www.ecma-international.org/publications/standards/ecma-335.htm

  6. Ershov, A.P.: On the essence of compilation. Programmirovanie (5), 21–39 (1977) (in Russian); See translation in: Neuhold, E.J. (ed.) Formal description of Programming Concepts, pp. 391–420. North-Holland, Amsterdam (1978)

    Google Scholar 

  7. Goertzel, B., Klimov, A.V., Klimov, A.V.: Supercompiling Java Programs, white paper, Supercompilers LLC (2002), http://www.supercompilers.com

  8. Gurevich, Y., Huggins, J.: Evolving Algebras and Partial Evaluation. In: Pehrson, B., Simon, I. (eds.) IFIP 13th World Computer Congress. Technology/Foundations, vol. I, pp. 587–592. Elsevier, Amsterdam (1994)

    Google Scholar 

  9. Jones, N.D., Gomard, C.K., Sestoft, P.: Partial evaluation and automatic program generation. Prentice-Hall, Inc., Upper Saddle River (1993)

    MATH  Google Scholar 

  10. Marquard, M., Steensgaard, B.: Partial Evaluation of an Object-Oriented Imperative Language, Master’s Thesis, Department of Computer Science, University of Copenhagen, Denmark (April 1992), ftp://ftp.research.microsoft.com/users/rusa/thesis.ps.Z

  11. Romanenko, S.A.: A Compiler Generator Produced by a Self-Applicable Specializer Can have a Surprisingly Natural and Understandable Structure. In: Bjorner, D., Ershov, A.P., Jones, N.D. (eds.) Workshop on Partial Evaluation and Mixed Computation, GI. Avernaxs, Denmark, October 1987, pp. 445–463. North-Holland, Amsterdam (1988)

    Google Scholar 

  12. Romanenko, S.A.: Arity Raiser and Its Use in Program Specialization. In: Jones, N.D. (ed.) ESOP 1990. LNCS, vol. 432, pp. 341–360. Springer, Heidelberg (1990)

    Google Scholar 

  13. Schultz, U.P., Lawall, J.L., Consel, C., Muller, G.: Towards Automatic Specialization of Java Programs. In: Guerraoui, R. (ed.) ECOOP 1999. LNCS, vol. 1628, pp. 367–390. Springer, Heidelberg (1999)

    Chapter  Google Scholar 

  14. Schultz, U.P.: Partial Evaluation for Class-Based Object-Oriented Languages. In: Danvy, O., Filinski, A. (eds.) PADO 2001. LNCS, vol. 2053, pp. 173–197. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  15. Turchin, V.F.: The concept of a supercompiler. ACM Transactions on Programming Languages and Systems 8, 292–325 (1986)

    Article  MATH  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2004 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Chepovsky, A.M. et al. (2004). Partial Evaluation for Common Intermediate Language. In: Broy, M., Zamulin, A.V. (eds) Perspectives of System Informatics. PSI 2003. Lecture Notes in Computer Science, vol 2890. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-39866-0_19

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-39866-0_19

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-20813-6

  • Online ISBN: 978-3-540-39866-0

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics