Detecting global variables in denotational specifications
ACM Transactions on Programming Languages and Systems (TOPLAS) - Lecture notes in computer science Vol. 174
Denotational semantics: a methodology for language development
Denotational semantics: a methodology for language development
The structure of a self-applicable partial evaluator
on Programs as data objects
Replacing function parameters by global variables
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Using types to avoid redundant specialization
PEPM '91 Proceedings of the 1991 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Automatic autoprojection of recursive equations with global variable and abstract data types
Science of Computer Programming
Efficient type inference for higher-order binding-time analysis
Proceedings of the 5th ACM conference on Functional programming languages and computer architecture
Proceedings of the 5th ACM conference on Functional programming languages and computer architecture
For a better support of static data flow
Proceedings of the 5th ACM conference on Functional programming languages and computer architecture
Automatic autoprojection of higher order recursive equations
ESOP '90 Selected papers from the symposium on 3rd European symposium on programming
Improving binding times without explicit CPS-conversion
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
Revised report on the algorithmic language scheme
ACM SIGPLAN Lisp Pointers
Data flow analysis of applicative programs using minimal function graphs
POPL '86 Proceedings of the 13th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Rabbit: A Compiler for Scheme
Compiling actions by partial evaluation
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
Continuation-based partial evaluation
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
In general, a partial evaluator needs to keep track of the tasks that have already been completed or initiated, so that it can recognize when to stop unfolding. In the MIX-style polyvariant specialization algorithm, this is accomplished by a global log. This is a very general technique, so it is not surprising that the algorithm is not particularly efficient. In many special cases a simpler technique would suffice.In this paper, we identify some classes of such special cases by considering the purpose of the global log. We outline how a partial evaluator can take advantage of these special cases and we propose analyses to detect them automatically. We discuss examples to illustrate the effect on specialization and to demonstrate that we can even obtain better residual programs.The work presented here is still in its early stages, and we do not have a full system incorporating the proposed improvements.