| CONSEL, C., HORNOF, L., NO EL, F., NOY E,J.,AND VOLANSCHI, E. 1996. A uniform approach for compiletime and run-time specialization. In Partial Evaluation, International Seminar, Dagstuhl Castle, O. Danvy, R. Gl uck, and P. Thiemann, Eds. Number 1110 in Lecture Notes in Computer Science. Springer-Verlag, Dagstuhl Castle, Germany, 54--72. |
....almost the same way as are the names of binding time analysed functions. The only di#erence is that some extra s are added, because else a list containing the integers 2 and 3 would look like: 23] which can be a list containing 23, as well. Therefore a list containing 2 and 3 looks like : [ 2 3] , and a list containing 23 like: 20 .aexp ExplicitAnnotations .anns Pretty printer .txt pp in pp out Figure 4.3: The programs used to pretty print a program. 23] a list containg 23 looks like: 23] Variables are notated as a . So, when the function function with input: 2 a ....
....Figure 4.3: The programs used to pretty print a program. 23] a list containg 23 looks like: 23] Variables are notated as a . So, when the function function with input: 2 a a (my constructor 1 a) 1 2 3) has to be given a name, it would look like: function pe 2 a 1 [ 1 2 3] . The partially evaluated version of the function example as used before (input: my constructor (1 2) my constructor 3 4 a) 1 2) 3 4) becomes: example pe [ 1 2] 3 4 [ 1 2] 3 4] 4.1 An example To illustrate the architecture of partial evaluation using rewrite ....
[Article contains additional citation context not shown here]
Charles Consel, Luke Hornof, Francois Noel, Jacques Noye, Nicolae Volanschi. A Uniform Approach for Compile-Time and Run-Time Specialization. In Olivier Danvy, Robert Gluck and Peter Thiemann, editors,Partial Evaluation, volume 1110 ofLecture Notes in Computer Science, February 1996
....[46] 2.2 Programmer directed dynamic compilers More recently, there has been great interest in programmer directed dynamic code generation systems. Tempo is a partial evaluator that can perform both compiletime and run time specialization based on programmer hints and simple program analysis [43, 114]. C is an extension of ANSI C that allows the programmer to compose arbitrary fragments of dynamically generated code [118] C includes two dynamic compilers the first is DCG [66] which is relatively heavyweight, and the second is VCODE [65] which is much faster and more lightweight. DyC ....
C. Consel, L. Hornof, F. Noel, and J. Noye. A uniform approach for compile-time and run-time specialization. Lecture Notes in Computer Science, 1110:54--??, 1996.
....Subtyping for arrays works in a similar fashion. Specialization of Lapis statements is made simple by the fact that only immutable values are propagated during specialization. The alias analysis and heap manipulation normally required for partial evaluation of imperative programs are not needed [4, 13, 47]. We refer to previous work on on line partial evaluation for imperative languages without heap allocated data for details on how statements such as loops and conditionals can be specialized [38] The semantics for a few selected statements are shown in Figure 10. Field assignment to an object ....
....parts of programs [5, 6, 17, 23, 34, 39] applying specialization globally would normally result in either non termination or code explosion. For this reason, it must be possible to only apply specialization to selected parts of the program, a feature normally referred to as modular specialization [13]. To use Lapis in realistic applications, it must be possible to integrate with existing program code. We have chosen Java has host language for Lapis, although other languages can be added later (e.g. C if generating specialized code for embedded systems) Given an appropriate interface for ....
C. Consel, L. Hornof, F. Noel, J. Noye, and E.N. Volanschi. A uniform approach for compile-time and run-time specialization. In O. Danvy, R. Gluck, and P. Thiemann, editors, Partial Evaluation, International Seminar, Dagstuhl Castle, number 1110 in Lecture Notes in Computer Science, pages 54--72, Dagstuhl Castle, Germany, February 1996. Springer-Verlag.
....optimizers may deliver performance close to that of native code, thus encouraging use of type safe languages. The unique advantage of dynamic optimizers is that by operating at run time, they make possible transformations specific to the program s memory state, most notably program specialization [1, 4, 8, 9, 13, 14, 18, 20, 24, 27, 28]. In fact, the dynamic optimizer is arguably the most suitable environment for specializer deployment, because the runtime is where the largest number of constants is known. So far, however, no dynamic optimizer has been able to specialize programs transparently, because although many existing ....
....compiler is necessary. We will address this as part of future work. 8. RELATED WORK In all the previous sections, we have attempted to relate our work with existing specialization techniques. In this section, we present a short summary of related work. Program specialization (in various forms) [1,8,9,12,13,18,20,24,27,28] is a well studied program optimization technique. In its classic form, it has been a compile time source to source optimization technique. Tempo [8] and DyC [13] perform staged specialization and use code templates to generate specialized code using the values available at runtime. However, they ....
[Article contains additional citation context not shown here]
Charles Consel, Luke Hornof, Francois Noel, Jacques Noye, and Nicolae Volanschi. A uniform approach for compile-time and run-time specialization. In Partial Evaluation. International Seminar., pages 54--72, Dagstuhl Castle, Germany, 12-16 February 1996. Springer-Verlag, Berlin, Germany.
....software techniques to exploit knowledge of invariant inputs are typically based on partial evaluation [9] in which the program is specialized for the invariant fixed inputs. These program specialization optimizations are applied to entire regions of code that operate on the fixed inputs. Temp [4], DyC [7] Data Specialization [10] tcc [16] code specialization using value profiles [15] are all software techniques for exploiting coarse grained reuse. All known techniques for exploiting coarse grained reuse can be categorized as either a memoization or a specialization technique. ....
....as either a memoization or a specialization technique. Memoization is a technique based on looking up previous results in a reuse table [2] Specialization involves optimizing the program by hardcoding the values produced by a reusable piece of code. Although various specialization techniques [4, 7, 15,16] have been studied, available opportunities for specialization in general purpose programs has not been studied before. The goal of this paper is to investigate reuse using a trace based measurement of its properties. We perform our study in the context of an online, dynamic optimizer. In ....
[Article contains additional citation context not shown here]
Charles Consel, Luke Hornof, Francois Noel, Jacques Noye, and Nicolae Volanschi. A Uniform Approach for Compile-time and Run-time Specialization. Technical Report RR-2775, Inria, Institut National de Recherche en Informatique et en Automatique, 1996.
....optimizations at both the hardware and software level. Partial evaluation is an automated technique for mapping generic programs into specific implementations dedicated to a specific purpose. Partial evaluation has been investigated extensively for functional [4, 6] logical [17] and imperative [2, 3, 7] languages, and has recently been investigated for object oriented languages by Schultz et al. in the context of a prototype partial evaluator for Java [26] However, no precise specification of partial evaluation for objectoriented languages has thus far been given. In this paper, we give a ....
....be done with use sensitivity [13] There are no formalizations of class and method polyvariant binding time analysis with use sensitive binding times for languages with side e#ects. Nevertheless, such a binding time analysis has been implemented in the Tempo partial evaluator for the C language [7], and is as such known technology (the bindingtime is polyvariant across C structure instances, which is equivalent to class polyvariance) Polyvariant alias analyses have been studied for imperative languages both formally and in practice, and are well documented in literature [12] 9.2 ....
C. Consel, L. Hornof, F. Noel, J. Noye, and E.N. Volanschi. A uniform approach for compile-time and run-time specialization. In O. Danvy, R. Gluck, and P. Thiemann, editors, Partial Evaluation, International Seminar, Dagstuhl Castle, number 1110 in Lecture Notes in Computer Science, pages 54--72, February 1996. 22
....intraprocedural analysis. To improve dynamically loaded code execution, we are experimenting with an automatically generated JIT for Pentium and Sparc architectures. This JIT is generated from the existing Harissa interpreter using the Tempo partial evaluator s run time specialization system [4, 3], and will be included in a future version of Harissa. Finally, we are investigating the use of Harissa to partially evaluate Java pprograms in conjunction with the specialization class framework [13] and the Tempo partial evaluator. Partial evaluation of Harissa generated code will let us ....
C. Consel, L. Hornof, F. Noel, J. Noye, and E.N. Volanschi. A uniform approach for compiletime and run-time specialization. In O. Danvy, R. Gluck, and P. Thiemann, editors, Partial Evaluation, International Seminar, Dagstuhl Castle, number 1110 in Lecture Notes in Computer Science, pages 54--72, February 1996.
....is well studied in the context of functional languages (e.g. 8, 7, 2] Based on projections de ned in [10] 15] presents a BTA for polymorphically typed languages, dealing with partially static values. Binding time analysis also had been successfully exported to imperative languages like C [1, 4]. Initial e orts to produce a BTA for logic programming include [16, 9, 3] These analyses, however, are not completely automatic or lack a general notion of partially static, and are often unable to handle terms that are less instantiated at specialisation time than they will be at run time. ....
C. Consel, L. Hornof, F. Noel, and J. Noye. A uniform approach for compile-time and run-time specialization. Lecture Notes in Computer Science, 1110:54-72, 1996.
....software techniques that exploit knowledge of invariant inputs are typically based on partial evaluation [9] in which the program is specialized for the invariant fixed inputs. These program specialization optimizations are applied to entire regions of code that operate on the fixed inputs. Temp [4], DyC [7] Data Specialization [10] tcc [16] code specialization using value profiles [15] are all software techniques for exploiting coarse grained reuse. All known techniques for exploiting coarse grained reuse can be categorized as either a memoization or a specialization technique. ....
....as either a memoization or a specialization technique. Memoization is a technique based on looking up previous results in a reuse table [2] Specialization involves optimizing the program by hardcoding the values produced by a reusable piece of code. Although various specialization techniques [4, 7, 15,16] have 1 been studied, available opportunities for specialization in general purpose programs have not been studied before. The goal of this paper is to investigate reuse using a trace based measurement of program properties. We perform our study in the context of an online, dynamic optimizer. In ....
[Article contains additional citation context not shown here]
Charles Consel, Luke Hornof, Francois Noel, Jacques Noye, and Nicolae Volanschi. A Uniform Approach for Compile-time and Run-time Specialization. Technical Report RR-2775, Inria, Institut National de Recherche en Informatique et en Automatique, 1996.
....occur repeatedly in the same register or memory location [23, 27, 31, 38, 41] In the compiler domain, it has been known for some time that value locality can be used to speed up programs by exploiting the fixed invariant inputs. Partial evaluation [28] data specialization [30] DyC [24] Tempo [12], C [37] and code specialization using value profiles [36] are different software techniques for exploiting value locality. Collectively, we refer to these as value reuse techniques because the input output behavior involving the invariant values can be repeatedly reused as opposed to being ....
Charles Consel, Luke Hornof, Francois Noel, Jacques Noye, and Nicolae Volanschi. A Uniform Approach for Compile-time and Runtime Specialization. Technical Report RR-2775, Inria, Institut National de Recherche en Informatique et en Automatique, 1996.
....Rennes, France; supported in part by Bull. 1 Partial evaluation is an automated technique for mapping generic programs into specific implementations dedicated to a specific purpose. Partial evaluation has been investigated extensively for functional [5, 7] logical [16] and imperative [2, 4, 8] languages, and has recently been investigated for object oriented languages by Schultz et al. in the context of a prototype partial evaluator for Java [25] However, no precise specification of partial evaluation for object oriented languages has thus far been given. In this paper, we give a ....
....EFJ incorporates classes and inheritance in a statically typed setting, fields, methods with formal parameters, and object constructors. To simplify the presentation there are no side e#ects on fields nor formal parameters; it is well known how to handle imperative features in a partial evaluator [2, 3, 8], and the principles developed in this paper are independent of the presence of sidee #ects. EFJ does not include conditionals, base type values, and operators. While these would be natural to include in a realistic language, we choose to omit them for clarity. It is trivial to extend the ....
[Article contains additional citation context not shown here]
C. Consel, L. Hornof, F. Noel, J. Noye, and E.N. Volanschi. A uniform approach for compile-time and run-time specialization. In O. Danvy, R. Gluck, and P. Thiemann, editors, Partial Evaluation, International 20 Seminar, Dagstuhl Castle, number 1110 in Lecture Notes in Computer Science, pages 54--72, February 1996.
....the set of objects that may be pointed to by each pointer object) and separate compilation by dealing with the effects of external functions and data on C Mix s analyses. C Mix is self applicable (i.e. can specialize itself) and achieved significant speedups in several toy benchmarks. Tempo [18] is a modern partial evaluator for the C programming language, primarily targeted at the specialization of system software. It uses more mature analyses than C Mix, and has been applied to some real applications. Tempo has been shown effective at optimizing file system 27 access in the Synthetix ....
Charles Consel, Luke Hornof, Franois Nol, Jacques Noy, and Nicolae Volanschi, "A Uniform Approach for Compile-time and Run-time Specialization," Rapport de recherche N 2775, Institut National de Recherche en Informatique et en Automatique (INRIA), France, 1996.
....optimize a generic checkpointing algorithm based on programmer supplied information about the fixed aspects of the object structure. Program specialization is a technique for automatically and aggressively optimizing a generic program with respect to information about the program inputs [11, 15]. This technique has been applied in a wide range of areas, including operating systems [20, 21, 31] and scientific programs [13, 23] By specializing the checkpointing implementation with respect to recurring structural and modification patterns, we eliminate many tests, virtual calls, and ....
....javac Harissa X.java X.sc C files Specialization directives Java files Figure 3: Structure of JSpec, specialization of class X tation. Specialization of programs written in imperative languages, such as C and Fortran, achieves optimizations such as constant folding and loop unrolling [2, 3, 11]. Specialization of Java programs has been shown to reduce the overhead of data encapsulation, virtual calls, and run time type and array bounds checks [27] Our implementation of checkpointing benefits from these optimizations. In the context of an object oriented language, such as Java, the ....
[Article contains additional citation context not shown here]
C. Consel, L. Hornof, F. Noel, J. Noye, and E.N. Volanschi. A uniform approach for compile-time and run-time specialization. In O. Danvy, R. Gluck, and P. Thiemann, editors, Partial Evaluation, International Seminar, Dagstuhl Castle, number 1110 in Lecture Notes in Computer Science, pages 54--72, February 1996.
No context found.
CONSEL, C., HORNOF, L., NO EL, F., NOY E,J.,AND VOLANSCHI, E. 1996. A uniform approach for compiletime and run-time specialization. In Partial Evaluation, International Seminar, Dagstuhl Castle, O. Danvy, R. Gl uck, and P. Thiemann, Eds. Number 1110 in Lecture Notes in Computer Science. Springer-Verlag, Dagstuhl Castle, Germany, 54--72.
.... analyses and transformations to cope with higher order functions and data structures [12,13] A variety of other languages were explored ranging from logic to imperative languages [4,5] As program specialization became more mature, research targeted real sized languages such as Fortran [14] C [4,15] and Java [16] 2 This Paper This paper gives a tour of a specializer for the C language, named Tempo. A key feature of Tempo is that it o ers the main forms of specialization: it specializes programs both at compile time and run time; run time specialization can be performed incrementally; ....
C. Consel, L. Hornof, F. Noel, J. Noye, E. Volanschi, A uniform approach for compile-time and run-time specialization, in: O. Danvy, R. Gluck, P. Thiemann (Eds.), Partial Evaluation, International Seminar, Dagstuhl Castle, no. 1110 in Lecture Notes in Computer Science, 1996, pp. 54-72.
....is yet another strategy to con gure components. This program transformation performs computations which depend on known values (e.g. con guration parameters) This process can improve speed and or size of programs. Program specialization is available for real size languages such as C [4, 1] and Java [13] Specializers have been successfully used for a large variety of realistic applications in domains such as operating systems [11] scienti c algorithms [8] graphics programs [12] and software engineering [10, 15, 16] However, program specialization has yet to be made accessible ....
....in other components. The veri er is a key phase to guarantee the specialization degree of the component. A generator (i.e. a specializer) automatically produces specialized variants. We have developed specialization modules in the context of the C language [7] Our specializer, named Tempo [4, 3], has been used as the generator of variants. We illustrate our approach with the development of data encoders for Forward Error Correction (FEC) 9] FEC prevents losses and errors by transmitting redundant information during digital communications (e.g. modems and wireless communications) ....
C. Consel, L. Hornof, F. Noel, J. Noye, and E.N. Volanschi. A uniform approach for compile-time and run-time specialization. In O. Danvy, R. Gluck, and P. Thiemann, editors, Partial Evaluation, International Seminar, Dagstuhl Castle, number 1110 in Lecture Notes in Computer Science, pages 54-72, February 1996.
....on this information. Partial evaluation adapts a program to known (static) information about its execution context, leaving behind only the program parts controlled by unknown (dynamic) data. Partial evaluation has been extensively investigated for functional [4, 8] logic [23] and imperative [2, 3, 9] languages, and has been recently extended to Java, by Schultz et al. 28] using C as an intermediate language. Since then, we have extended this approach to automatically produce specialized Java source programs, thus implementing a complete Java to Java specializer 2 . In the context of ....
C. Consel, L. Hornof, F. Noel, J. Noye, and E. Volanschi. A uniform approach for compile-time and run-time specialization. In O. Danvy, R. Gluck, and P. Thiemann, editors, Partial Evaluation, International Seminar, Dagstuhl Castle, number 1110 in Lecture Notes in Computer Science, pages 54--72, Feb. 1996.
....been performed manually by adapting critical program components to the most common usage patterns [5, 28, 29] Manual specialization improves performance, but has a limited applicability, because the process is error prone. Recently, tools have been developed to automatically specialize programs [1 3, 7, 8, 18, 19]. Applications of program specialization are emerging in a number of fields, including scientific code [3, 4, 8] systems software [13, 24] and computer graphics [15] with very promising results. However, automatic specialization of object oriented programs remains uninvestigated. Given the ....
....improves performance, but has a limited applicability, because the process is error prone. Recently, tools have been developed to automatically specialize programs [1 3, 7, 8, 18, 19] Applications of program specialization are emerging in a number of fields, including scientific code [3, 4, 8], systems software [13, 24] and computer graphics [15] with very promising results. However, automatic specialization of object oriented programs remains uninvestigated. Given the existing base of experience with imperative languages, we construct a specializer to optimize object oriented ....
[Article contains additional citation context not shown here]
C. Consel, L. Hornof, F. Noel, J. Noye, and E.N. Volanschi. A uniform approach for compile-time and run-time specialization. In O. Danvy, R. Gluck, and P. Thiemann, editors, Partial Evaluation, International Seminar, Dagstuhl Castle, number 1110 in Lecture Notes in Computer Science, pages 54--72, February 1996.
....input. The second phase of PE performs the actual specialization. Given the specialization values and an annotated program, the specialization phase evaluates the static constructs and rebuilds the dynamic constructs. PE has been studied for functional [3,4] logic [9] and imperative languages [1,2,6]. It has reached a mature state, enabling the implementation of partial evaluators for real size languages such as C [6] and Java [17] Partial evaluators have been used for a large variety of realistic applications in domains such as operating systems [11] scientific algorithms [8] graphics ....
....the specialization phase evaluates the static constructs and rebuilds the dynamic constructs. PE has been studied for functional [3,4] logic [9] and imperative languages [1,2,6] It has reached a mature state, enabling the implementation of partial evaluators for real size languages such as C [6] and Java [17] Partial evaluators have been used for a large variety of realistic applications in domains such as operating systems [11] scientific algorithms [8] graphics programs [12] and software engineering [10,15,16] However, PE has never been integrated within the software engineering ....
[Article contains additional citation context not shown here]
C. Consel, L. Hornof, F. Nol, J. Noy, and E.N. Volanschi. A uniform approach for compile-time and run-time specialization. In O. Danvy, R. Glck, and P. Thiemann, editors, Partial Evaluation, International Seminar, Dagstuhl Castle, number 1110 in Lecture Notes in Computer Science, pages 54-72, February 1996.
....on the usage context. Partial evaluation adapts a program to known (static) information about its execution context, leaving behind only the program parts controlled by unknown (dynamic) data. Partial evaluation has been extensively investigated for functional [3, 5] logic [19] and imperative [1, 2, 6] languages. In this paper, we only consider o# line partial evaluation, where the program is first divided into static and dynamic computations using a binding time analysis, and then specialized according to a concrete context by executing the static program parts on known data. 5 In contrast ....
....and complex analyses and the identification of specialization candidates, in practice it cannot be applied to complete programs. Instead, the strategy for applying this technique is usually to extract a specific slice from a program, specialize it, and then reinsert it into the original program [6]. An abstract description of the parts outside the program slice must be given to ensure that correct binding times are derived. For an object oriented program, the program parts to specialize and a description of the specialization context can be declared using the specialization class framework ....
[Article contains additional citation context not shown here]
C. Consel, L. Hornof, F. Noel, J. Noye, and E. Volanschi. A uniform approach for compile-time and run-time specialization. In O. Danvy, R. Gluck, and P. Thiemann, editors, Partial Evaluation, International Seminar, Dagstuhl Castle, number 1110 in Lecture Notes in Computer Science, pages 54--72, Feb. 1996.
....faster than the nonspecialized version. Our run time specialization approach is based, in part, on partial evaluation technology [11, 4] In fact, it is integrated in a complete partial evaluation system for C programs that performs compile time specialization as well as run time specialization [5]; this aspect is further discussed in Section 2. This system has been applied to various kinds of programs such as operating system code. Irisa A General Approach for Run Time Specialization and its Application to C 5 Plan. In Section 2, the underlying concepts of partial evaluation are reviewed. ....
....transformation. In this paper, we introduce an approach that goes beyond this view. We propose to use partial evaluation as a basis for run time specialization. In fact, this work is part of a complete partial evaluation system which specializes C programs at compile time as well as at run time [5]. Let us briefly outline the salient features of this system. Our partial evaluation system is based on an off line strategy. The preprocessing phase mainly consists of an alias analysis, a binding time analysis, and an action analysis. The alias analysis is needed because of the pointer ....
C. Consel, L. Hornof, F. Noel, J. Noy'e, and N. Volanschi. A uniform approach for compile-time and run-time specialization. Technical report, University of Rennes/Inria, 1995. In preparation.
....processor and its successors. ffl The development process is safer, quicker, and in some ways simpler since optimizations can be done in a post processing phase. ffl It is possible to reuse existing, aggressive optimizers such as Suif [15] or partial evaluators for C such as C mix [16] or Tempo [17, 18]. ffl Finally, optimizations may drastically differ from one application to another. Therefore, it may be critical to have a choice among different optimizing strategies. All the reasons mentioned above led us to develop a non native offline compiler for Java bytecode which generates C ....
C. Consel, L. Hornof, F. Noel, J. Noy'e, and E.N. Volanschi. A uniform approach for compile-time and run-time specialization. In O. Danvy, R. Gluck, and P. Thiemann, editors, Partial Evaluation, International Seminar, Dagstuhl Castle, number 1110 in Lecture Notes in Computer Science, pages 54--72, February 1996.
No context found.
Charles Consel, Luke Hornof, Francois Noel, Jacques Noye, and Eugen Nicolae Volanschi. A uniform approach for compile-time and run-time specialization. In Olivier Danvy, Robert Gluck, and Peter Thiemann, editors, Partial Evaluation. Proceedings, LNCS 1110, pages 54--72. SpringerVerlag, 1996.
No context found.
C. Consel, L. Hornof, Francois Noel, J. Noye, and N. Volanschi. A Uniform Approach for Compile-time and Run-time Specialization. In Partial Evaluation. International Seminar., pages 54--72, Dagstuhl Castle, Germany, 12-16 Feb. 1996. Springer-Verlag, Berlin, Germany.
No context found.
C. Consel, L. Hornof, F. Noel, J. Noye, and E. Volanschi. A uniform approach for compile-time and run-time specialization. In Partial Evaluation, International Seminar, 1996.
First 50 documents Next 50
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC