Results 1 -
7 of
7
Strengthening supercompilation for call-by-value languages
- SECOND INTERNATIONAL WORKSHOP ON METACOMPUTATION IN RUSSIA (META 2010)
, 2010
"... A termination preserving supercompiler for a call-by-value language sometimes fails to remove intermediate structures that a supercompiler for a call-by-name language would remove. This discrepancy in power stems from the fact that many function bodies are either non-linear in use of an important va ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
A termination preserving supercompiler for a call-by-value language sometimes fails to remove intermediate structures that a supercompiler for a call-by-name language would remove. This discrepancy in power stems from the fact that many function bodies are either non-linear in use of an important variable or often start with a pattern match on their first argument and are therefore not strict in all their arguments. As a consequence, intermediate structures are left in the output program, making it slower. We present a revised supercompilation algorithm for a call-by-value language that propagates let-bindings into case-branches and uses termination analysis to remove dead code. This allows the algorithm to remove all intermediate structures for common examples where previous algorithms for call-by-value languages had to leave the intermediate structures in place.
Improving size-change analysis in offline partial evaluation
, 2008
"... Abstract. Some recent approaches for scalable offline partial evaluation of logic programs include a size-change analysis for ensuring both so called local and global termination. In this work—inspired by experimental evaluation—we introduce several improvements that may increase the accuracy of the ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
Abstract. Some recent approaches for scalable offline partial evaluation of logic programs include a size-change analysis for ensuring both so called local and global termination. In this work—inspired by experimental evaluation—we introduce several improvements that may increase the accuracy of the analysis and, thus, the quality of the associated specialized programs. We aim to achieve this while maintaining the same complexity and scalability of the recent works. 1
A Hybrid Approach to Conjunctive Partial Deduction ⋆
"... Abstract. Conjunctive partial deduction is a well-known technique for the partial evaluation of logic programs. The original formulation follows the so called online approach where all termination decisions are taken on-the-fly. In contrast, offline partial evaluators first analyze the source progra ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Abstract. Conjunctive partial deduction is a well-known technique for the partial evaluation of logic programs. The original formulation follows the so called online approach where all termination decisions are taken on-the-fly. In contrast, offline partial evaluators first analyze the source program and produce an annotated version so that the partial evaluation phase should only follow these annotations to ensure the termination of the process. In this work, we introduce a lightweight approach to conjunctive partial deduction that combines some of the advantages of both online and offline styles of partial evaluation. 1
A Hybrid Approach to Conjunctive Partial Evaluation of Logic Programs ⋆
"... Abstract. Conjunctive partial deduction is a well-known technique for the partial evaluation of logic programs. The original formulation follows the so called online approach where all termination decisions are taken on-the-fly. In contrast, offline partial evaluators first analyze the source progra ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
Abstract. Conjunctive partial deduction is a well-known technique for the partial evaluation of logic programs. The original formulation follows the so called online approach where all termination decisions are taken on-the-fly. In contrast, offline partial evaluators first analyze the source program and produce an annotated version so that the partial evaluation phase should only follow these annotations to ensure the termination of the process. In this work, we introduce a lightweight approach to conjunctive partial deduction that combines some of the advantages of both online and offline styles of partial evaluation. 1
Towards Scalable Partial Evaluation of Declarative Programs ⋆
"... Partial evaluation is a well-known technique for program specialization [4]. Essentially, given a program and part of its input data—the so-called static data—a partial evaluator returns a new, residual program which is specialized for the given data. The residual program is then used for performing ..."
Abstract
- Add to MetaCart
Partial evaluation is a well-known technique for program specialization [4]. Essentially, given a program and part of its input data—the so-called static data—a partial evaluator returns a new, residual program which is specialized for the given data. The residual program is then used for performing the remaining
Predicting the Effectiveness of Partial Evaluation
"... Abstract. Partial evaluation aims at improving programs by specializing them w.r.t. part of their input data. In general, however, the effectiveness of the partial evaluation process is hard to measure, even a posteriori. Recent approaches have introduced experimental (often computationally expensiv ..."
Abstract
- Add to MetaCart
Abstract. Partial evaluation aims at improving programs by specializing them w.r.t. part of their input data. In general, however, the effectiveness of the partial evaluation process is hard to measure, even a posteriori. Recent approaches have introduced experimental (often computationally expensive) frameworks for this purpose. In this paper, we present an alternative, symbolic approach for predicting the effectiveness of partial evaluation by combining a trace analysis with a termination analysis. The termination analysis—namely, a size-change analysis—is used to determine which procedures are potentially removable by partial evaluation (i.e., can be fully unfolded at specialization time). Then, the trace analysis helps us to put this information into context by producing a compact representation of the call sequences of the program. By inspecting the output of the combined analysis, the user may determine the impact of a partial evaluation before it is performed. 1

