Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Greg DeFouw

dblp:28/4762 · DBLP profile ↗
← Back
3ranked-venue papers
1as first author
0since 2021 · last 1998
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 3 · 1 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
3 papers
Program analysis · 81% Compilers and program optimization · 15% Programming languages and type systems · 4%
Computer architecture, parallel and distributed computing, and storage systems
1 paper
Performance modeling and evaluation · 100%

Topics — the 8 heaviest of 9, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program analysis › static analysis
interprocedural analysis
0.021998
Fast Interprocedural Class Analysis · POPL 1998
Call Graph Construction in Object-Oriented Languages · OOPSLA 1997
Program analysis › type-based analysis
class analysis
0.011998
Fast Interprocedural Class Analysis · POPL 1998
Program analysis › static analysis
pointer analysis
0.011998
Fast Interprocedural Class Analysis · POPL 1998
Program analysis › static analysis › constraint-based analysis
unification-based analysis
0.011998
Fast Interprocedural Class Analysis · POPL 1998
Program analysis › static analysis
call graph construction
0.011997
Call Graph Construction in Object-Oriented Languages · OOPSLA 1997
Compilers and program optimization
optimizing compiler
0.011998
Fast Interprocedural Class Analysis · POPL 1998
Programming languages and type systems › object-oriented programming
object-oriented languages
0.011997
Call Graph Construction in Object-Oriented Languages · OOPSLA 1997
Performance modeling and evaluation › benchmarking › benchmark suite analysis
benchmark characterization
0.011996
Vortex: An Optimizing Compiler for Object-Oriented Languages · OOPSLA 1996

Methods — techniques the papers use, named apart from their topics

unification · 0.0propagation-based constraint solving · 0.0optimistic reachability analysis · 0.0call graph construction algorithms · 0.0
YearPublicationVenuePosition
1998 Fast Interprocedural Class Analysis
abstract
Previous algorithms for interprocedural control flow analysis of higher-order and/or object-oriented languages have been described that perform propagation or constraint satisfaction and take O(N3) time (such as Shivers's O-CFA and Heintze's set-based analysis), or unification and take O(Nα (N,N) time (such as Steensgaard's pointer analysis), or optimistic reachability analysis and take O(N) time (such as Bacon and Sweeney's Rapid Type Analysis). We describe a general parameterized analysis framework that integrates propagation-based and unification-based analysis primitives and optimistic reachability analysis, whose instances mimic these existing algorithms as well as several new algorithms taking O(N), O(Nα(N,N)), O(N2), and O(N2α(N,N)) time; our O(N) and O(Nα(N,N)) algorithms produce more precise results than the previous algorithms with these complexities. We implemented our algorithm framework in the Vortex optimizing compiler, and we measured the cost and benefit of these interprocedural analysis algorithms in practice on a collection of substantial Cecil and Java programs.
Greg DeFouw, David Grove, Craig Chambers
POPL1
1997 Call Graph Construction in Object-Oriented Languages
abstract
Interprocedural analyses enable optimizing compilers to more precisely model the effects of non-inlined procedure calls, potentially resulting in substantial increases in application performance. Applying interprocedural analysis to programs written in object-oriented or functional languages is complicated by the difficulty of constructing an accurate program call graph. This paper presents a parameterized algorithmic framework for call graph construction in the presence of message sends and/or first class functions. We use this framework to describe and to implement a number of well-known and new algorithms. We then empirically assess these algorithms by applying them to a suite of medium-sized programs written in Cecil and Java, reporting on the relative cost of the analyses, the relative precision of the constructed call graphs, and the impact of this precision on the effectiveness of a number of interprocedural optimizations.
David Grove, Greg DeFouw, Jeffrey Dean, Craig Chambers
OOPSLA2
1996 Vortex: An Optimizing Compiler for Object-Oriented Languages
abstract
Previously, techniques such as class hierarchy analysis and profile-guided receiver class prediction have been demonstrated to greatly improve the performance of applications written in pure object-oriented languages, but the degree to which these results are transferable to applications written in hybrid languages has been unclear. In part to answer this question, we have developed the Vortex compiler infrastructure, a language-independent optimizing compiler for object-oriented languages, with front-ends for Cecil, C++, Java, and Modula-3. In this paper, we describe the Vortex compiler's intermediate language, internal structure, and optimization suite, and then we report the results of experiments assessing the effectiveness of different combinations of optimizations on sizable applications across these four languages. We characterize the benchmark programs in terms of a collection of static and dynamic metrics, intended to quantify aspects of the "object-orientedness" of a program.
Jeffrey Dean, Greg DeFouw, David Grove, Vassily Litvinov, Craig Chambers
OOPSLA2