The design and implementation of the self compiler, an optimizing compiler for object-oriented programming languages
Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
Parameterized partial evaluation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Selective specialization for object-oriented languages
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
VCODE: a retargetable, extensible, very fast dynamic code generation system
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
Reconciling responsiveness with performance in pure object-oriented languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
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
Towards partially evaluating reflection in Java
PEPM '00 Proceedings of the 2000 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
PEPM '02 Proceedings of the 2002 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Partial method compilation using dynamic profile information
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
The Art of the Metaobject Protocol
The Art of the Metaobject Protocol
A brief history of just-in-time
ACM Computing Surveys (CSUR)
Optimizing ML with run-time code generation
ACM SIGPLAN Notices - Best of PLDI 1979-1999
Implementing an embedded GPU language by combining translation and generation
Proceedings of the 2006 ACM symposium on Applied computing
PyPy's approach to virtual machine construction
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
Hierarchical Phrase-Based Translation
Computational Linguistics
Declarative programming for verification: lessons and outlook
Proceedings of the 10th international ACM SIGPLAN conference on Principles and practice of declarative programming
Comparing tag scheme variations using an abstract machine generator
Proceedings of the 10th international ACM SIGPLAN conference on Principles and practice of declarative programming
A practical solution for scripting language compilers
Proceedings of the 2009 ACM symposium on Applied Computing
The effect of unrolling and inlining for Python bytecode optimizations
SYSTOR '09 Proceedings of SYSTOR 2009: The Israeli Experimental Systems Conference
Trace-based just-in-time type specialization for dynamic languages
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
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
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
Efficient virtual machine support of runtime structural reflection
Science of Computer Programming
Parsing '05 Proceedings of the Ninth International Workshop on Parsing Technology
Towards eased debugging of Python applications on Maemo platform
Mobility '09 Proceedings of the 6th International Conference on Mobile Technology, Application & Systems
Evaluation of a just-in-time compiler retrofitted for PHP
Proceedings of the 6th ACM SIGPLAN/SIGOPS international conference on Virtual execution environments
Dynamic interpretation for dynamic scripting languages
Proceedings of the 8th annual IEEE/ACM international symposium on Code generation and optimization
TAPP'10 Proceedings of the 2nd conference on Theory and practice of provenance
Alias analysis for optimization of dynamic languages
Proceedings of the 6th symposium on Dynamic languages
Allocation removal by partial evaluation in a tracing JIT
Proceedings of the 20th ACM SIGPLAN workshop on Partial evaluation and program manipulation
Dynamic elimination of overflow tests in a trace compiler
CC'11/ETAPS'11 Proceedings of the 20th international conference on Compiler construction: part of the joint European conferences on theory and practice of software
HappyJIT: a tracing JIT compiler for PHP
Proceedings of the 7th symposium on Dynamic languages
Runtime feedback in a meta-tracing JIT for efficient dynamic languages
Proceedings of the 6th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems
Towards just-in-time partial evaluation of prolog
LOPSTR'09 Proceedings of the 19th international conference on Logic-Based Program Synthesis and Transformation
Comparative evaluation of performance-boosting tools for Python
Annales UMCS, Informatica
Optimizing MATLAB through just-in-time specialization
CC'10/ETAPS'10 Proceedings of the 19th joint European conference on Theory and Practice of Software, international conference on Compiler Construction
RATA: rapid atomic type analysis by abstract interpretation – application to javascript optimization
CC'10/ETAPS'10 Proceedings of the 19th joint European conference on Theory and Practice of Software, international conference on Compiler Construction
A practical solution for achieving language compatibility in scripting language compilers
Science of Computer Programming
Hi-index | 0.00 |
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).