publications: - title: "A comparison of compilation techniques for trace monitors with free variables" author: - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "2007" doi: "http://doi.acm.org/10.1145/1297846.1297905" links: doi: "http://doi.acm.org/10.1145/1297846.1297905" researchr: "https://researchr.org/publication/AvgustinovTM07a" cites: 0 citedby: 0 pages: "821-822" booktitle: "OOPSLA" kind: "inproceedings" key: "AvgustinovTM07a" - title: "Keynote Address: .QL for Source Code Analysis" author: - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Mathieu Verbaere" link: "https://researchr.org/alias/mathieu-verbaere" - name: "Elnar Hajiyev" link: "https://researchr.org/alias/elnar-hajiyev" - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Torbjörn Ekman" link: "http://progtools.comlab.ox.ac.uk/members/torbjorn" - name: "Neil Ongkingco" link: "https://researchr.org/alias/neil-ongkingco" - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" year: "2007" doi: "http://dx.doi.org/10.1109/SCAM.2007.31" abstract: "Many tasks in source code analysis can be viewed as evaluating queries over a relational representation of the code. Here we present an object-oriented query language, named .QL, and demonstrate its use for general navigation, bug finding and enforcing coding conventions. We then focus on the particular problem of specifying metrics as queries." links: doi: "http://dx.doi.org/10.1109/SCAM.2007.31" tags: - "points-to analysis" - "analysis" - "source-to-source" - "Meta-Environment" - "open-source" - "meta-objects" - "query language" researchr: "https://researchr.org/publication/MoorVHAEOST07" cites: 0 citedby: 0 pages: "3-16" booktitle: "SCAM" kind: "inproceedings" key: "MoorVHAEOST07" - title: "Making trace monitors feasible" author: - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "2007" doi: "http://doi.acm.org/10.1145/1297027.1297070" links: doi: "http://doi.acm.org/10.1145/1297027.1297070" researchr: "https://researchr.org/publication/AvgustinovTM07" cites: 0 citedby: 0 pages: "589-608" booktitle: "OOPSLA" kind: "inproceedings" key: "AvgustinovTM07" - title: "Adding open modules to AspectJ" author: - name: "Neil Ongkingco" link: "https://researchr.org/alias/neil-ongkingco" - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" - name: "Laurie J. Hendren" link: "http://www.sable.mcgill.ca/~hendren/" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Ganesh Sittampalam" link: "http://www.earth.li/~ganesh/" year: "2006" doi: "http://doi.acm.org/10.1145/1119655.1119664" links: doi: "http://doi.acm.org/10.1145/1119655.1119664" tags: - "AspectJ" - "source-to-source" - "open-source" researchr: "https://researchr.org/publication/OngkingcoATHMS06" cites: 0 citedby: 1 pages: "39-50" booktitle: "AOSD" kind: "inproceedings" key: "OngkingcoATHMS06" - title: "On the Semantics of Matching Trace Monitoring Patterns" author: - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "2007" doi: "http://dx.doi.org/10.1007/978-3-540-77395-5_2" links: doi: "http://dx.doi.org/10.1007/978-3-540-77395-5_2" tags: - "semantics" - "pattern matching" researchr: "https://researchr.org/publication/AvgustinovTM07%3A0" cites: 0 citedby: 0 pages: "9-21" booktitle: "rv" kind: "inproceedings" key: "AvgustinovTM07:0" - title: "Adding trace matching with free variables to AspectJ" author: - name: "Chris Allan" link: "https://researchr.org/alias/chris-allan" - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Aske Simon Christensen" link: "https://researchr.org/alias/aske-simon-christensen" - name: "Laurie J. Hendren" link: "http://www.sable.mcgill.ca/~hendren/" - name: "Sascha Kuzins" link: "https://researchr.org/alias/sascha-kuzins" - name: "Ondřej Lhoták" link: "http://plg.uwaterloo.ca/~olhotak" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" - name: "Ganesh Sittampalam" link: "http://www.earth.li/~ganesh/" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" year: "2005" doi: "http://doi.acm.org/10.1145/1094811.1094839" links: doi: "http://doi.acm.org/10.1145/1094811.1094839" tags: - "AspectJ" researchr: "https://researchr.org/publication/AllanACHKLMSST05" cites: 0 citedby: 0 pages: "345-364" booktitle: "OOPSLA" kind: "inproceedings" key: "AllanACHKLMSST05" - title: "Adding magic to an optimising datalog compiler" author: - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "2008" doi: "http://doi.acm.org/10.1145/1376616.1376673" abstract: "The magic-sets transformation is a useful technique for dramatically improving the performance of complex queries, but it has been observed that this transformation can also drastically reduce the performance of some queries. Successful implementations of magic in previous work require integration with the database optimiser to make appropriate decisions to guide the transformation (the sideways information passing strategy, or SIPS). This paper reports on the addition of the magic-sets transformation to a fully automatic optimising compiler from Datalog to SQL with no support from the database optimiser. We present an algorithm for making a good choice of SIPS using heuristics based on the sizes of relations. To achieve this, we define an abstract interpretation of Datalog programs to estimate the sizes of relations in the program. The effectiveness of our technique is evaluated over a substantial set of over a hundred queries, and in the context of the other optimisations performed by our compiler. It is shown that using the SIPS chosen by our algorithm, query performance is often significantly improved, as expected, but more importantly performance is never significantly degraded on queries that cannot benefit from magic." links: doi: "http://doi.acm.org/10.1145/1376616.1376673" tags: - "rule-based" - "SQL" - "compiler" - "database" - "context-aware" - "magic sets" - "Datalog" - "transformation" - "program transformation" researchr: "https://researchr.org/publication/SereniAM08" cites: 0 citedby: 0 pages: "553-566" booktitle: "SIGMOD" kind: "inproceedings" key: "SereniAM08" - title: "abc: an extensible AspectJ compiler" author: - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Aske Simon Christensen" link: "https://researchr.org/alias/aske-simon-christensen" - name: "Laurie J. Hendren" link: "http://www.sable.mcgill.ca/~hendren/" - name: "Sascha Kuzins" link: "https://researchr.org/alias/sascha-kuzins" - name: "Jennifer Lhoták" link: "https://researchr.org/alias/jennifer-lhot%C3%A1k" - name: "Ondřej Lhoták" link: "http://plg.uwaterloo.ca/~olhotak" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" - name: "Ganesh Sittampalam" link: "http://www.earth.li/~ganesh/" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" year: "2005" doi: "http://doi.acm.org/10.1145/1052898.1052906" links: doi: "http://doi.acm.org/10.1145/1052898.1052906" successor: "https://researchr.org/publication/AvgustinovCHKLLMSST06" tags: - "AspectJ" - "compiler" researchr: "https://researchr.org/publication/AvgustinovCHKLLMSST05" cites: 0 citedby: 0 pages: "87-98" booktitle: "AOSD" kind: "inproceedings" key: "AvgustinovCHKLLMSST05" - title: "Optimising aspectJ" author: - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Aske Simon Christensen" link: "https://researchr.org/alias/aske-simon-christensen" - name: "Laurie J. Hendren" link: "http://www.sable.mcgill.ca/~hendren/" - name: "Sascha Kuzins" link: "https://researchr.org/alias/sascha-kuzins" - name: "Jennifer Lhoták" link: "https://researchr.org/alias/jennifer-lhot%C3%A1k" - name: "Ondřej Lhoták" link: "http://plg.uwaterloo.ca/~olhotak" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" - name: "Ganesh Sittampalam" link: "http://www.earth.li/~ganesh/" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" year: "2005" doi: "http://doi.acm.org/10.1145/1065010.1065026" links: doi: "http://doi.acm.org/10.1145/1065010.1065026" tags: - "AspectJ" researchr: "https://researchr.org/publication/AvgustinovCHKLLMSST05%3A0" cites: 0 citedby: 0 pages: "117-128" booktitle: "PLDI" kind: "inproceedings" key: "AvgustinovCHKLLMSST05:0" - title: "Semantics of static pointcuts in aspectJ" author: - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Elnar Hajiyev" link: "https://researchr.org/alias/elnar-hajiyev" - name: "Neil Ongkingco" link: "https://researchr.org/alias/neil-ongkingco" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" - name: "Mathieu Verbaere" link: "https://researchr.org/alias/mathieu-verbaere" year: "2007" doi: "http://doi.acm.org/10.1145/1190216.1190221" abstract: "In aspect-oriented programming, one can intercept events by writing patterns called pointcuts. The pointcut language of the most popular aspect-oriented programming language, AspectJ, allows the expression of highly complex properties of the static program structure.We present the first rigorous semantics of the AspectJ pointcut language, by translating static patterns into safe ( i.e. range-restricted and stratified) Datalog queries. Safe Datalog is a logic language like Prolog, but it does not have data structures; consequently it has a straightforward least fixpoint semantics and all queries terminate.The translation from pointcuts to safe Datalog consists of a set of simple conditional rewrite rules, implemented using the Stratego system. The resulting queries are themselves executable with the CodeQuest system. We present experiments indicating that direct execution of our semantics is not prohibitively expensive." links: doi: "http://doi.acm.org/10.1145/1190216.1190221" tags: - "programming languages" - "AspectJ" - "object-oriented programming" - "semantics" - "Prolog" - "rule-based" - "translation" - "data-flow language" - "pattern language" - "graph query" - "data-flow programming" - "data-flow" - "graph-rewriting" - "rules" - "writing" - "logic programming" - "aspect oriented programming" - "programming" - "subject-oriented programming" - "logic" - "rewriting logic" - "rewriting" - "Datalog" - "feature-oriented programming" - "Stratego" - "query language" researchr: "https://researchr.org/publication/AvgustinovHOMSTV07" cites: 1 citedby: 0 pages: "11-23" booktitle: "POPL" kind: "inproceedings" key: "AvgustinovHOMSTV07" - title: "Aspects and Data Refinement" author: - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Eric Bodden" link: "http://www.bodden.de/" - name: "Elnar Hajiyev" link: "https://researchr.org/alias/elnar-hajiyev" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Neil Ongkingco" link: "https://researchr.org/alias/neil-ongkingco" - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" - name: "Ganesh Sittampalam" link: "http://www.earth.li/~ganesh/" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" year: "2006" doi: "http://dx.doi.org/10.1007/11783596_3" links: doi: "http://dx.doi.org/10.1007/11783596_3" tags: - "refinement" - "data-flow" researchr: "https://researchr.org/publication/AvgustinovBHMOSST06" cites: 0 citedby: 0 pages: "5-9" booktitle: "mpc" kind: "inproceedings" key: "AvgustinovBHMOSST06" - title: ".QL: Object-Oriented Queries Made Easy" author: - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" - name: "Mathieu Verbaere" link: "https://researchr.org/alias/mathieu-verbaere" - name: "Elnar Hajiyev" link: "https://researchr.org/alias/elnar-hajiyev" - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Torbjörn Ekman" link: "http://progtools.comlab.ox.ac.uk/members/torbjorn" - name: "Neil Ongkingco" link: "https://researchr.org/alias/neil-ongkingco" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" year: "2007" doi: "http://dx.doi.org/10.1007/978-3-540-88643-3_3" abstract: "These notes are an introduction to .QL, an object-oriented query language for any type of structured data. We illustrate the use of .QL in assessing software quality, namely to find bugs, to compute metrics and to enforce coding conventions. The class mechanism of .QL is discussed in depth, and we demonstrate how it can be used to build libraries of reusable queries. " links: doi: "http://dx.doi.org/10.1007/978-3-540-88643-3_3" tags: - "data-flow language" - "reuse" - "data-flow" - "Meta-Environment" - "meta-objects" - "query language" researchr: "https://researchr.org/publication/MoorSVHAEOT07" cites: 1 citedby: 0 pages: "78-133" booktitle: "GTTSE" kind: "inproceedings" key: "MoorSVHAEOT07" - title: "abc the aspectBench compiler for aspectJ a workbench for aspect-oriented programming language and compilers research" author: - name: "Chris Allan" link: "https://researchr.org/alias/chris-allan" - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Aske Simon Christensen" link: "https://researchr.org/alias/aske-simon-christensen" - name: "Bruno Dufour" link: "https://researchr.org/alias/bruno-dufour" - name: "Christopher Goard" link: "https://researchr.org/alias/christopher-goard" - name: "Laurie J. Hendren" link: "http://www.sable.mcgill.ca/~hendren/" - name: "Sascha Kuzins" link: "https://researchr.org/alias/sascha-kuzins" - name: "Jennifer Lhoták" link: "https://researchr.org/alias/jennifer-lhot%C3%A1k" - name: "Ondřej Lhoták" link: "http://plg.uwaterloo.ca/~olhotak" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" - name: "Ganesh Sittampalam" link: "http://www.earth.li/~ganesh/" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" - name: "Clark Verbrugge" link: "https://researchr.org/alias/clark-verbrugge" year: "2005" doi: "http://doi.acm.org/10.1145/1094855.1094877" links: doi: "http://doi.acm.org/10.1145/1094855.1094877" tags: - "programming languages" - "workbench" - "AspectJ" - "object-oriented programming" - "aspect oriented programming" - "compiler" - "programming" - "subject-oriented programming" - "language workbench" - "feature-oriented programming" researchr: "https://researchr.org/publication/AllanACDGHKLLMSSTV05" cites: 0 citedby: 0 pages: "88-89" booktitle: "OOPSLA" kind: "inproceedings" key: "AllanACDGHKLLMSSTV05" - title: "abc: An Extensible AspectJ Compiler" author: - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Aske Simon Christensen" link: "https://researchr.org/alias/aske-simon-christensen" - name: "Laurie J. Hendren" link: "http://www.sable.mcgill.ca/~hendren/" - name: "Sascha Kuzins" link: "https://researchr.org/alias/sascha-kuzins" - name: "Jennifer Lhoták" link: "https://researchr.org/alias/jennifer-lhot%C3%A1k" - name: "Ondřej Lhoták" link: "http://plg.uwaterloo.ca/~olhotak" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" - name: "Ganesh Sittampalam" link: "http://www.earth.li/~ganesh/" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" year: "2006" doi: "http://dx.doi.org/10.1007/11687061_9" abstract: " Research in the design of aspect-oriented programming languages requires a workbench that facilitates easy experimentation with new language features and implementation techniques. In particular, new features for AspectJ have been proposed that require extensions in many dimensions: syntax, type checking and code generation, as well as data flow and control flow analyses. The AspectBench Compiler (abc) is an implementation of such a workbench. The base version of abc implements the full AspectJ language. Its front end is built using the Polyglot framework, as a modular extension of the Java language. The use of Polyglot gives flexibility of syntax and type checking. The back end is built using the Soot framework, to give modular code generation and analyses. In this paper, we outline the design of abc, focusing mostly on how the design supports extensibility. We then provide a general overview of how to use abc to implement an extension. We illustrate the extension mechanisms of abc through a number of small, but nontrivial, examples. We then proceed to contrast the design goals of abc with those of the original AspectJ compiler, and how these different goals have led to different design decisions. Finally, we review a few examples of projects by others that extend abc in interesting ways. " links: doi: "http://dx.doi.org/10.1007/11687061_9" tags: - "programming languages" - "workbench" - "AspectJ" - "object-oriented programming" - "rule-based" - "Java" - "data-flow language" - "design research" - "language design" - "data-flow programming" - "data-flow" - "code generation" - "type checking" - "reviewing" - "aspect oriented programming" - "compiler" - "programming" - "subject-oriented programming" - "language workbench" - "design" - "extensible language" - "feature-oriented programming" researchr: "https://researchr.org/publication/AvgustinovCHKLLMSST06" cites: 0 citedby: 1 journal: "TAOSD" pages: "293-334" kind: "article" key: "AvgustinovCHKLLMSST06" - title: "Efficient trace monitoring" author: - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" - name: "Eric Bodden" link: "http://www.bodden.de/" - name: "Laurie J. Hendren" link: "http://www.sable.mcgill.ca/~hendren/" - name: "Ondřej Lhoták" link: "http://plg.uwaterloo.ca/~olhotak" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Neil Ongkingco" link: "https://researchr.org/alias/neil-ongkingco" - name: "Ganesh Sittampalam" link: "http://www.earth.li/~ganesh/" year: "2006" doi: "http://doi.acm.org/10.1145/1176617.1176673" links: doi: "http://doi.acm.org/10.1145/1176617.1176673" researchr: "https://researchr.org/publication/AvgustinovTBHLMOS06" cites: 0 citedby: 0 pages: "685-686" booktitle: "OOPSLA" kind: "inproceedings" key: "AvgustinovTBHLMOS06" - title: "Datalog as a pointcut language in aspect-oriented programming" author: - name: "Elnar Hajiyev" link: "https://researchr.org/alias/elnar-hajiyev" - name: "Neil Ongkingco" link: "https://researchr.org/alias/neil-ongkingco" - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" - name: "Mathieu Verbaere" link: "https://researchr.org/alias/mathieu-verbaere" year: "2006" doi: "http://doi.acm.org/10.1145/1176617.1176664" links: doi: "http://doi.acm.org/10.1145/1176617.1176664" tags: - "programming languages" - "object-oriented programming" - "aspect oriented programming" - "programming" - "subject-oriented programming" - "Datalog" - "feature-oriented programming" researchr: "https://researchr.org/publication/HajiyevOAMSTV06" cites: 0 citedby: 0 pages: "667-668" booktitle: "OOPSLA" kind: "inproceedings" key: "HajiyevOAMSTV06" - title: "abc: The AspectBench Compiler for AspectJ" author: - name: "Chris Allan" link: "https://researchr.org/alias/chris-allan" - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Aske Simon Christensen" link: "https://researchr.org/alias/aske-simon-christensen" - name: "Laurie J. Hendren" link: "http://www.sable.mcgill.ca/~hendren/" - name: "Sascha Kuzins" link: "https://researchr.org/alias/sascha-kuzins" - name: "Jennifer Lhoták" link: "https://researchr.org/alias/jennifer-lhot%C3%A1k" - name: "Ondřej Lhoták" link: "http://plg.uwaterloo.ca/~olhotak" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" - name: "Ganesh Sittampalam" link: "http://www.earth.li/~ganesh/" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" year: "2005" doi: "http://dx.doi.org/10.1007/11561347_2" links: doi: "http://dx.doi.org/10.1007/11561347_2" tags: - "AspectJ" - "compiler" researchr: "https://researchr.org/publication/AllanACHKLLMSST05" cites: 0 citedby: 0 pages: "10-16" booktitle: "GPCE" kind: "inproceedings" key: "AllanACHKLLMSST05" - title: "Efficient local type inference" author: - name: "Ben Bellamy" link: "https://researchr.org/alias/ben-bellamy" - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" year: "2008" doi: "http://doi.acm.org/10.1145/1449764.1449802" abstract: "Inference of static types for local variables in Java bytecode is the first step of any serious tool that manipulates bytecode, be it for decompilation, transformation or analysis. It is important, therefore, to perform that step as accurately and efficiently as possible. Previous work has sought to give solutions with good worst-case complexity. We present a novel algorithm, which is optimised for the common case rather than worst-case performance. It works by first finding a set of minimal typings that are valid for all assignments, and then checking whether these minimal typings satisfy all uses. Unlike previous algorithms, it does not explicitly build a data structure of type constraints, and it is easy to implement efficiently. We prove that the algorithm produces a typing that is both sound (obeying the rules of the language) and as tight as possible. We then go on to present extensive experiments, comparing the results of the new algorithm against the previously best known method. The experiments include bytecode that is generated in other ways than compilation of Java source. The new algorithm is always faster, typically by a factor 6, but on some real benchmarks the gain is as high as a factor of 92. Furthermore, whereas that previous method is sometimes suboptimal, our algorithm always returns a tightest possible type. We also discuss in detail how we handle primitive types, which is a difficult issue due to the discrepancy in their treatment between Java bytecode and Java source. For the application to decompilation, however, it is very important to handle this correctly." links: doi: "http://doi.acm.org/10.1145/1449764.1449802" tags: - "model-to-model transformation" - "type inference" - "rule-based" - "Java" - "data-flow language" - "model checking" - "type soundness" - "transformation language" - "points-to analysis" - "analysis" - "static analysis" - "constraints" - "data-flow" - "source-to-source" - "rules" - "type checking" - "model transformation" - "decompilation" - "data-flow analysis" - "local type inference" - "open-source" - "transformation" researchr: "https://researchr.org/publication/BellamyAMS08" cites: 0 citedby: 0 pages: "475-492" booktitle: "OOPSLA" kind: "inproceedings" key: "BellamyAMS08" - title: "Type inference for datalog and its application to query optimisation" author: - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Mathieu Verbaere" link: "https://researchr.org/alias/mathieu-verbaere" year: "2008" doi: "http://doi.acm.org/10.1145/1376916.1376957" abstract: "Certain variants of object-oriented Datalog can be compiled to Datalog with negation. We seek to apply optimisations akin to virtual method resolution (a well-known technique in compiling Java and other OO languages) to improve efficiency of the resulting Datalog programs. The effectiveness of such optimisations strongly depends on the precision of the underlying type inference algorithm. Previous work on type inference for Datalog has focussed on Cartesian abstractions, where the type of each field is computed separately. Such Cartesian type inference is inherently imprecise in the presence of field equalities. We propose a type system where equalities are tracked, and present a type inference algorithm. The algorithm is proved sound. We also prove that it is optimal for Datalog without negation, in the sense that the inferred type is as tight as possible. Extensive experiments with our type-based optimisations, in a commercial implementation of object-oriented Datalog, confirm the benefits of this non-Cartesian type inference algorithm." links: doi: "http://doi.acm.org/10.1145/1376916.1376957" tags: - "programming languages" - "object-oriented programming" - "type inference" - "rule-based" - "Java" - "meta programming" - "type soundness" - "type system" - "compiler" - "subject-oriented programming" - "abstraction" - "Meta-Environment" - "Datalog" - "feature-oriented programming" - "meta-objects" - "query language" researchr: "https://researchr.org/publication/MoorSAV08" cites: 0 citedby: 0 pages: "291-300" booktitle: "PODS" kind: "inproceedings" key: "MoorSAV08" - title: "Aspects for Trace Monitoring" author: - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Eric Bodden" link: "http://www.bodden.de/" - name: "Elnar Hajiyev" link: "https://researchr.org/alias/elnar-hajiyev" - name: "Laurie J. Hendren" link: "http://www.sable.mcgill.ca/~hendren/" - name: "Ondřej Lhoták" link: "http://plg.uwaterloo.ca/~olhotak" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Neil Ongkingco" link: "https://researchr.org/alias/neil-ongkingco" - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" - name: "Ganesh Sittampalam" link: "http://www.earth.li/~ganesh/" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" - name: "Mathieu Verbaere" link: "https://researchr.org/alias/mathieu-verbaere" year: "2006" doi: "http://dx.doi.org/10.1007/11940197_2" links: doi: "http://dx.doi.org/10.1007/11940197_2" researchr: "https://researchr.org/publication/AvgustinovBHHLMOSSTV06" cites: 0 citedby: 0 pages: "20-39" booktitle: "fates" kind: "inproceedings" key: "AvgustinovBHHLMOSSTV06"