Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where David J. Pearce is active.

Publication


Featured researches published by David J. Pearce.


ACM Transactions on Programming Languages and Systems | 2007

Efficient field-sensitive pointer analysis of C

David J. Pearce; Paul H. J. Kelly; Chris Hankin

The subject of this article is flow- and context-insensitive pointer analysis. We present a novel approach for precisely modelling struct variables and indirect function calls. Our method emphasises efficiency and simplicity and is based on a simple language of set constraints. We obtain an O(v4) bound on the time needed to solve a set of constraints from this language, where v is the number of constraint variables. This gives, for the first time, some insight into the hardness of performing field-sensitive pointer analysis of C. Furthermore, we experimentally evaluate the time versus precision trade-off for our method by comparing against the field-insensitive equivalent. Our benchmark suite consists of 11 common C programs ranging in size from 15,000 to 200,000 lines of code. Our results indicate the field-sensitive analysis is more expensive to compute, but yields significantly better precision. In addition, our technique has been integrated into the latest release (version 4.1) of the GNU Compiler GCC. Finally, we identify several previously unknown issues with an alternative and less precise approach to modelling struct variables, known as field-based analysis.


aspect-oriented software development | 2006

Relationship aspects

David J. Pearce; James Noble

The relationships between objects in object-oriented programs are as important as the objects themselves. Unfortunately, most object-oriented programming languages provide little support for such relationships, leaving the task of implementing them entirely to the programmer. Relationships are typically hard-coded into the participating classes, resulting in tangled code that unnecessarily couples these classes together. The classes become harder to understand and cannot be reused independently. Aspect-oriented programs can model relationships explicitly, treating them as separate concerns that cross-cut their participants. We show how relationships can be implemented as a library of aspects in Aspect/J. Aspects keep relationships independent of their participants, making the resulting programs easier to read, write and reuse, and as efficient as hand-written code.


ACM Journal of Experimental Algorithms | 2007

A dynamic topological sort algorithm for directed acyclic graphs

David J. Pearce; Paul H. J. Kelly

We consider the problem of maintaining the topological order of a directed acyclic graph (DAG) in the presence of edge insertions and deletions. We present a new algorithm and, although this has inferior time complexity compared with the best previously known result, we find that its simplicity leads to better performance in practice. In addition, we provide an empirical comparison against the three main alternatives over a large number of random DAGs. The results show our algorithm is the best for sparse digraphs and only a constant factor slower than the best on dense digraphs.


Software - Practice and Experience | 2007

Profiling with AspectJ

David J. Pearce; Matthew Alexander Webster; Robert Francis Berry; Paul H. J. Kelly

A system for manufacturing tire molding metal molds with electrical discharge machining is disclosed, which makes possible the rotation, longitudinal and cross feeding of a work table on which a workpiece to be machined into a tire molding metal mold is placed and the rotation, lifting and lowering of a machining head, whereby the workpiece is discharge-machined by feeding a discharge machining electrode in a plurality of different directions corresponding to a plurality of projections protruding essentially vertical to the tire molding surface of the tire molding metal mold to be machined, and by changing electrodes having such profiles as to prevent the excess metal removal of the projections in accordance with each of the electrode feeding directions.


european conference on object oriented programming | 2006

Efficient object querying for java

Darren Willis; David J. Pearce; James Noble

Modern programming languages have little or no support for querying objects and collections. Programmers are forced to hand code such queries using nested loops, which is both cumbersome and inefficient. We demonstrate that first-class queries over objects and collections improve program readability, provide good performance and are applicable to a large number of common programming problems. We have developed a prototype extension to Java which tracks all objects in a program using AspectJ and allows first-class queries over them in the program. Our experimental findings indicate that such queries can be significantly faster than common programming idioms and within reach of hand optimised queries.


Lecture Notes in Computer Science | 2002

GILK: A Dynamic Instrumentation Tool for the Linux Kernel

David J. Pearce; Paul H. J. Kelly; Tony Field; Uli Harder

This paper describes a dynamic instrumentation tool for the Linux Kernel which allows a stock Linux kernel to be modified while in execution, with instruments implemented as kernel modules. The Intel x86 architecture poses a particular problem, due to variable length instructions, which this paper addresses for the first time. Finally we present a short case study illustrating its use in understanding i/o behaviour in the kernel. The source code is freely available for download.


Software Quality Journal | 2004

Online Cycle Detection and Difference Propagation: Applications to Pointer Analysis

David J. Pearce; Paul H. J. Kelly; Chris Hankin

This paper presents and evaluates a number of techniques to improve the execution time of interprocedural pointer analysis in the context of C programs. The analysis is formulated as a graph of set constraints and solved using a worklist algorithm. Indirections lead to new constraints being added during this procedure. The solution process can be simplified by identifying cycles, and we present a novel online algorithm for doing this. We also present a difference propagation scheme which avoids redundant work by tracking changes to each solution set. The effectiveness of these and other methods are shown in an experimental study over 12 common ‘C’ programs ranging between 1000 to 150,000 lines of code.


compiler construction | 2011

JPure:: a modular purity system for java

David J. Pearce

Purity Analysis is the problem of determining whether or not amethod may have side-effects. This has applications in automatic parallelisation, extended static checking, and more. We present a novel purity system for Java that employs purity annotations which can be checked modularly. This is done using a flow-sensitive, intraprocedural analysis. The system exploits two properties, called freshness and locality, to increase the range of methods that can be considered pure. JPure also includes an inference engine for annotating legacy code.We evaluate our system against several packages from the Java Standard Library. Our results indicate it is possible to uncover significant amounts of purity efficiently.


ACM Transactions on Mathematical Software | 2010

Computing Tutte Polynomials

Gary Haggard; David J. Pearce; Gordon F. Royle

The Tutte polynomial of a graph, also known as the partition function of the q-state Potts model is a 2-variable polynomial graph invariant of considerable importance in both combinatorics and statistical physics. It contains several other polynomial invariants, such as the chromatic polynomial and flow polynomial as partial evaluations, and various numerical invariants such as the number of spanning trees as complete evaluations. However despite its ubiquity, there are no widely available effective computational tools able to compute the Tutte polynomial of a general graph of reasonable size. In this article we describe the implementation of a program that exploits isomorphisms in the computation tree to extend the range of graphs for which it is feasible to compute their Tutte polynomials, and we demonstrate the utility of the program by finding counterexamples to a conjecture of Welsh on the location of the real flow roots of a graph.


conference on object-oriented programming systems, languages, and applications | 2008

Caching and incrementalisation in the java query language

Darren Willis; David J. Pearce; James Noble

Many contemporary object-oriented programming languages support first-class queries or comprehensions. These language extensions make it easier for programmers to write queries, but are generally implemented no more efficiently than the code using collections, iterators, and loops that they replace. Crucially, whenever a query is re-executed, it is recomputed from scratch. We describe a general approach to optimising queries over mutable objects: query results are cached, and those caches are incrementally maintained whenever the collections and objects underlying those queries are updated. We hope that the performance benefits of our optimisations may encourage more general adoption of first-class queries by object-oriented programmers.

Collaboration


Dive into the David J. Pearce's collaboration.

Top Co-Authors

Avatar

James Noble

Victoria University of Wellington

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Stephen Nelson

Victoria University of Wellington

View shared research outputs
Top Co-Authors

Avatar

Alex Potanin

Victoria University of Wellington

View shared research outputs
Top Co-Authors

Avatar

Lindsay Groves

Victoria University of Wellington

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Chris Hankin

Imperial College London

View shared research outputs
Top Co-Authors

Avatar

Constantine Dymnikov

Victoria University of Wellington

View shared research outputs
Top Co-Authors

Avatar

Darren Willis

Victoria University of Wellington

View shared research outputs
Top Co-Authors

Avatar

Stuart Marshall

Victoria University of Wellington

View shared research outputs
Researchain Logo
Decentralizing Knowledge