|
ABSTRACT
A powerful application of specialization is to remove interpretative overhead: a language can be implemented with an interpreter, whose performance is then improved by specializing it for a given program source. This approach is only moderately successful with very high level languages, where the operation of each single step can be highly dependent on run-time data and context. In the present paper, the Psyco prototype for the Python language is presented. It introduces two novel techniques. The first is just-in-time specialization, or specialization by need, which introduces the "unlifting" ability for a value to be promoted from run-time to compile-time during specialization -- the inverse of the lift operator of partial evaluation. Its presence gives an unusual and powerful perspective on the specialization process. The second technique is representations, a theory of data-oriented specialization generalizing the traditional specialization domains (i.e. the compile-time/run-time dichotomy).
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
|
|
| |
4
|
|
 |
5
|
|
 |
6
|
Jeffrey Dean , Craig Chambers , David Grove, Selective specialization for object-oriented languages, Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation, p.93-102, June 18-21, 1995, La Jolla, California, United States
|
 |
7
|
Dawson R. Engler, VCODE: a retargetable, extensible, very fast dynamic code generation system, Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation, p.160-170, May 21-24, 1996, Philadelphia, Pennsylvania, United States
|
| |
8
|
A. Haraldsson. A program manipulation system based on partial evaluation. PhD thesis, Linköping Univ., Sweden, Linköping Studies in Science and Technology Dissertations 14, 1977.
|
 |
9
|
|
 |
10
|
Dan Ingalls , Ted Kaehler , John Maloney , Scott Wallace , Alan Kay, Back to the future: the story of Squeak, a practical Smalltalk written in itself, Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, p.318-326, October 05-09, 1997, Atlanta, Georgia, United States
|
| |
11
|
|
| |
12
|
|
| |
13
|
C. Lattner. LLVM: An Infrastructure for Multi-Stage Optimization. Master's thesis, Computer Science Dept., University of Illinois at Urbana-Champaign, Urbana, IL, Dec 2002. See http://llvm.cs.uiuc.edu.
|
 |
14
|
|
 |
15
|
Hidehiko Masuhara , Satoshi Matsuoka , Kenichi Asai , Akinori Yonezawa, Compiling away the meta-level in object-oriented concurrent reflective languages using partial evaluation, Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications, p.300-315, October 15-19, 1995, Austin, Texas, United States
|
| |
16
|
I. Piumarta. J3 for squeak. http://www-sor.inria.fr/~piumarta/squeak/unix/zip/j3-2.6.0/doc/j3/.
|
| |
17
|
C. Pu, H. Massalin, and J. Ioannidis. The synthesis kernel. USENIX Association, editor, Computing Systems, 1(Winter):11--32, 1988.
|
| |
18
|
A. Rigo. The ultimate psyco guide. http://psyco.sourceforge.net/psycoguide.ps.gz.
|
| |
19
|
M. Salib. Starkiller: A static type inferencer and compiler for python. In Proceedings of the EuroPython conference, 2004. http://web.mit.edu/msalib/www/writings/talks/.
|
| |
20
|
|
| |
21
|
G. van Rossum. Python reference manual. http://docs.python.org/ref/ref.html.
|
 |
22
|
John Whaley, Partial method compilation using dynamic profile information, Proceedings of the 16th ACM SIGPLAN conference on Object oriented programming, systems, languages, and applications, p.166-179, October 14-18, 2001, Tampa Bay, FL, USA
|
CITED BY 11
|
|
|
|
|
Armin Rigo , Samuele Pedroni, PyPy's approach to virtual machine construction, Companion to the 21st ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications, October 22-26, 2006, Portland, Oregon, USA
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Andreas Gal , Brendan Eich , Mike Shaver , David Anderson , David Mandelin , Mohammad R. Haghighat , Blake Kaplan , Graydon Hoare , Boris Zbarsky , Jason Orendorff , Jesse Ruderman , Edwin W. Smith , Rick Reitmaier , Michael Bebenita , Mason Chang , Michael Franz, Trace-based just-in-time type specialization for dynamic languages, ACM SIGPLAN Notices, v.44 n.6, June 2009
|
|
|
|
|
|
|
|
|
Carl Friedrich Bolz , Antonio Cuni , Maciej Fijalkowski , Armin Rigo, Tracing the meta-level: PyPy's tracing JIT compiler, Proceedings of the 4th workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages and Programming Systems, p.18-25, July 06-06, 2009, Genova, Italy
|
|
|
Antonio Cuni , Davide Ancona , Armin Rigo, Faster than C#: efficient implementation of dynamic languages on .NET, Proceedings of the 4th workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages and Programming Systems, p.26-33, July 06-06, 2009, Genova, Italy
|
REVIEW
"Susan M. Merritt : Reviewer"
Python is a very high-level language. As such, problem specification is very efficient, but program execution is not. Like most very high-level languages (for example, SETL), Python is interpreted. In earlier days, translation efficiency was more
more...
|