Abstract

Since a binding-time analysis determines how an off-line partial evaluator will specialize a program, the accuracy of the binding-time information directly determines the degree of specialization. We have designed and implemented a binding-time analysis for an imperative language, and integrated it into our partial evaluator for C, called Tempo (Consel et al., in: Danvy, Gluck, Thiemann (Eds.), Partial Evaluation, Internat. Seminar, Degstnhl castle, Lectnre Notes in Computer Science, vol. 1110, Springer, Berlin, February 1996, pp. 54–72). This binding-time analysis includes a number of new features, not available in any existing partial evaluator for an imperative language, which are critical when specializing existing programs such as operating system components (Muller et al., Proc. 18th Internat. Conf. on Distributed Computing systems, Amsterdam, Netherlands, IEEE Computer Society Press, Silverspring, MD, May 1998, pp. 240–249; Muller et al., ACM SIGPLAN symp. on Partial Evaluation and Semantics-Based Program manipulation, Amsterdam, The Netherlands, ACM Press, New York, June 1997, pp. 116–125). • Flow sensitivity. A different binding-time description is computed for each program point, allowing the same variable to be considered static at one program point and dynamic at another. • Context sensitivity. Each function call is analyzed with the context of the call site, generating multiple binding-time annotated instances of the same function definition. • Return sensitivity. A different binding-time description is computed for the side-effects and the return value of a function.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call