Abstract
In aspect-oriented programming, pointcuts are usually compiled by identifying a set of shadows — that is, places in the code whose execution is potentially relevant for a pointcut — and inserting dynamic checks at these places for those parts of the pointcut that cannot be evaluated statically. Today, the algorithms for shadow and check computation are specific for every pointcut designator. This makes it very tedious to extend the pointcut language.
We propose the use of declarative languages, together with associated analysis and specialisation tools, to implement powerful and extensible pointcut languages. More specifically, we propose to synthesize (rather than program manually) the shadow and dynamic check algorithms. With this approach, it becomes easier to implement powerful pointcut languages efficiently and to keep pointcut languages open for extension.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Allan, C., Avgustinov, P., Christensen, A.S., Hendren, L., Kuzins, S., Lhotak, J., Lhotak, O., de Moor, O., Sereni, D., Sittampalam, G., Tibble, J.: Adding trace matching with free variables to aspectj. In: Proceedings of OOPSLA 2005, pp. 345–364. ACM Press, New York (2005)
AspectJ Home Page, http://www.eclipse.org/aspectj/
Calejo, M.: Interprolog: Towards a declarative embedding of logic programming in java. In: Alferes, J.J., Leite, J.A. (eds.) JELIA 2004. LNCS (LNAI), vol. 3229, pp. 714–717. Springer, Heidelberg (2004)
Chiba, S., Nakagawa, K.: Josh: An open aspectj-like language. In: Proceedings of AOSD 2004, pp. 102–111. ACM Press, New York (2004)
Eichberg, M., Mezini, M., Ostermann, K.: Pointcuts as functional queries. In: Chin, W.-N. (ed.) APLAS 2004. LNCS, vol. 3302. Springer, Heidelberg (2004)
Eichberg, M., Mezini, M., Ostermann, K., Schäfer, T.: Xirc: A kernel for cross-artifact information engineering in software development environments. In: Werner, B. (ed.) Eleventh Working Conference on Reverse Engineering, Delft, Netherlands, November 2004, pp. 182–191. IEEE Computer Society Press, Los Alamitos (2004)
Goldsmith, S., O’Callahan, R., Aiken, A.: Relational queries over program traces. In: Proceedings of OOPSLA 2005, pp. 385–402. ACM Press, New York (2005)
Gybels, K., Brichau, J.: Arranging Language Features for More Robust Pattern-Based Crosscuts. In: AOSD 2003 Proceedings, pp. 60–69. ACM Press, New York (2003)
Jones, N.D., Gomard, C.K., Sestoft, P.: Partial Evaluation and Automatic Program Generation. Prentice-Hall, Englewood Cliffs (1993)
Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: An overview of AspectJ. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 327–353. Springer, Heidelberg (2001)
Klose, K., Ostermann, K.: Back to the future: Pointcuts as predicates over traces. In: Foundations of Aspect-Oriented Languages workshop (FOAL 2005), Chicago, USA (2005)
Leuschel, M., Craig, S., Bruynooghe, M., Vanhoof, W.: Specializing interpreters using offline partial deduction. In: Maurice Bruynooghe, K.-K.L. (ed.) Program Development in Computational Logic. Springer, Heidelberg (2004)
Leuschel, M., Jørgensen, J., Vanhoof, W., Bruynooghe, M.: Offline specialisation in Prolog using a hand-written compiler generator. Theory and Practice of Logic Programming 4(1), 139–191 (2004)
Martin, M., Livshits, B., Lam, M.S.: Finding application errors and security flaws using PQL: A program query language. In: Proceedings of OOPSLA 2005, pp. 365–383. ACM Press, New York (2005)
Masuhara, H., Kiczales, G., Dutchyn, C.: A compilation and optimization model for aspect-oriented programs. In: Proceedings of CC 2003. Springer, Heidelberg (2003)
Ostermann, K., Mezini, M., Bockisch, C.: Expressive pointcuts for increased modularity. In: Black, A.P. (ed.) ECOOP 2005. LNCS, vol. 3586. Springer, Heidelberg (2005)
Sereni, D., de Moor, O.: Static analysis of aspects. In: Proceedings of AOSD 2003. ACM, New York (2003)
Somogyi, Z., Henderson, F., Conway, T.: The execution algorithm of Mercury: An efficient purely declarative logic programming language. Journal of Logic Programming 29(1–3), 17–64 (1996)
Walker, R.J., Viggers, K.: Communication history patterns: Direct implementations of protocol specifications. Technical report, University of Calgary (2004)
Wand, M., Kiczales, G., Dutchyn, C.: A semantics for advice and dynamic join points in aspect-oriented programming. TOPLAS 2004 26(5), 890–910 (2004)
Wang, Q., Gupta, G., Leuschel, M.: Towards provably correct code generation via Horn logical continuation semantics. In: Proceedings of PADL 2005, pp. 98–112 (2005)
Zhou, Q., Tarau, P.: Garbage Collection Algorithms for Java-Based Prolog Engines. In: Dahl, V., Wadler, P. (eds.) PADL 2003. LNCS, vol. 2562, pp. 304–320. Springer, Heidelberg (2002)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2006 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Klose, K., Ostermann, K., Leuschel, M. (2006). Partial Evaluation of Pointcuts. In: Hanus, M. (eds) Practical Aspects of Declarative Languages. PADL 2007. Lecture Notes in Computer Science, vol 4354. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-69611-7_21
Download citation
DOI: https://doi.org/10.1007/978-3-540-69611-7_21
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-69608-7
Online ISBN: 978-3-540-69611-7
eBook Packages: Computer ScienceComputer Science (R0)