Daniel von Dincklage

dblp:84/6727 · DBLP profile ↗
← Back
8ranked-venue papers
5as first author
0since 2021 · last 2011
—ORCID · none

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

Software engineering, systems software and programming languages · 8 · 5 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
5 papers
Program analysis · 26% Compilers and program optimization · 17% Runtime systems and virtual machines · 16%
Computer architecture, parallel and distributed computing, and storage systems
1 paper
Performance modeling and evaluation · 91% Memory systems · 9%

Topics — the 12 heaviest of 16, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Compilers and program optimization › program transformation › program optimization
semantics-preserving optimization
0.112009
Optimizing programs with intended semantics · OOPSLA 2009
Debugging and program repair › fault localization
failure explanation
0.112008
Explaining failures of program analyses · PLDI 2008
Runtime systems and virtual machines › virtual machine implementation
java virtual machine
0.112007
Fast online pointer analysis · ACM Trans. Program. Lang. Syst. 2007
Program analysis › static analysis
pointer analysis
0.112007
Fast online pointer analysis · ACM Trans. Program. Lang. Syst. 2007
Program analysis
static analysis
0.112007
Fast online pointer analysis · ACM Trans. Program. Lang. Syst. 2007
Performance modeling and evaluation
benchmarking
0.112006
The DaCapo benchmarks: java benchmarking development and analysis · OOPSLA 2006
Performance modeling and evaluation › benchmarking › benchmark design
benchmark suite design
0.112006
The DaCapo benchmarks: java benchmarking development and analysis · OOPSLA 2006
Performance modeling and evaluation
workload characterization
0.112006
The DaCapo benchmarks: java benchmarking development and analysis · OOPSLA 2006
Programming languages and type systems › type systems › polymorphism
generics
0.012004
Converting Java classes to use generics · OOPSLA 2004
Software maintenance and evolution › software reengineering › software modernization › software migration
legacy system migration
0.012004
Converting Java classes to use generics · OOPSLA 2004
Programming languages and type systems › language semantics › formal semantics
object-oriented language semantics
0.012009
Optimizing programs with intended semantics · OOPSLA 2009
Software maintenance and evolution
program comprehension
0.012008
Explaining failures of program analyses · PLDI 2008

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

time-series metrics · 0.1statistical metrics · 0.1program analysis · 0.1andersen's pointer analysis · 0.1type inference · 0.0
YearPublicationVenuePosition
2011 Integrating program analyses with programmer productivity tools
abstract
Abstract Because software continues to grow in size and complexity, programmers increasingly rely on productivity tools to understand, debug, and modify their programs. These tools typically use program analyses to produce information for the programmer. This is problematic because it is based on the assumption that the programmer and program analyses all use the same vocabulary. If the programmer and analyses did not use the same vocabulary then the results of the analyses will be meaningless to the programmer. For example, ‘v124 may be NULL’ does not mean much to the programmer but ‘myStack may be NULL’ is meaningful. Often, the programmer and analyses prefer different vocabularies. While the programmer prefers his programs' source code, an analysis will prefer a simplified representation. Unfortunately, writing an analysis that works on the source code is difficult because the analysis must deal with the idiosyncracies of the source language (e.g. nested classes). In comparison, writing an analysis on SSA form is easy but the output of the analysis is not meaningful to the programmer; it must somehow be translated into something the programmer understands. We present a system, RTalk, that makes it easy to support both the programmers' and the analysis' needs. RTalk generates a translator between the programmers' and the analysis' vocabulary. Thus both the programmer and the analysis can use the vocabulary most natural to them. We demonstrate the effectiveness of RTalk by describing program understanding and program optimization tools that we have already built using RTalk. Copyright © 2011 John Wiley & Sons, Ltd.
Daniel von Dincklage, Amer Diwan
Softw. Pract. Exp.1
2009 Optimizing programs with intended semantics
abstract
Modern object-oriented languages have complex features that cause programmers to overspecify their programs. This overspecification hinders automatic optimizers, since they must preserve the overspecified semantics. If an optimizer knew which semantics the programmer intended, it could do a better job.
Daniel von Dincklage, Amer Diwan
OOPSLA1
2008 Explaining failures of program analyses
abstract
With programs getting larger and often more complex with each new release, programmers need all the help they can get in understanding and transforming programs. Fortunately, modern development environments, such as Eclipse, incorporate tools for understanding, navigating, and transforming programs. These tools typically use program analyses to extract relevant properties of programs.
Daniel von Dincklage, Amer Diwan
PLDI1
2007 Fast online pointer analysis
abstract
Pointer analysis benefits many useful clients, such as compiler optimizations and bug finding tools. Unfortunately, common programming language features such as dynamic loading, reflection, and foreign language interfaces, make pointer analysis difficult. This article describes how to deal with these features by performing pointer analysis online during program execution. For example, dynamic loading may load code that is not available for analysis before the program starts. Only an online analysis can analyze such code, and thus support clients that optimize or find bugs in it. This article identifies all problems in performing Andersen's pointer analysis for the full Java language, presents solutions to these problems, and uses a full implementation of the solutions in a Java virtual machine for validation and performance evaluation. Our analysis is fast: On average over our benchmark suite, if the analysis recomputes points-to results upon each program change, most analysis pauses take under 0.1 seconds, and add up to 64.5 seconds.
Martin Hirzel, Daniel von Dincklage, Amer Diwan, Michael Hind
ACM Trans. Program. Lang. Syst.2
2006 The DaCapo benchmarks: java benchmarking development and analysis
abstract
Since benchmarks drive computer science research and industry product development, which ones we use and how we evaluate them are key questions for the community. Despite complex runtime tradeoffs due to dynamic compilation and garbage collection required for Java programs, many evaluations still use methodologies developed for C, C++, and Fortran. SPEC, the dominant purveyor of benchmarks, compounded this problem by institutionalizing these methodologies for their Java benchmark suite. This paper recommends benchmarking selection and evaluation methodologies, and introduces the DaCapo benchmarks, a set of open source, client-side Java benchmarks. We demonstrate that the complex interactions of (1) architecture, (2) compiler, (3) virtual machine, (4) memory management, and (5) application require more extensive evaluation than C, C++, and Fortran which stress (4) much less, and do not require (3). We use and introduce new value, time-series, and statistical metrics for static and dynamic properties such as code complexity, code size, heap composition, and pointer mutations. No benchmark suite is definitive, but these metrics show that DaCapo improves over SPEC Java in a variety of ways, including more complex code, richer object behaviors, and more demanding memory system requirements. This paper takes a step towards improving methodologies for choosing and evaluating benchmarks to foster innovation in system design and implementation for Java and other managed languages.
Steve Blackburn, Robin Garner, Chris Hoffmann, Asjad M. Khan, Kathryn S. McKinley, Rotem Bentzur, Amer Diwan, Daniel Feinberg, Daniel Frampton, Samuel Z. Guyer, Martin Hirzel, Antony L. Hosking, Maria Jump, Han Bok Lee, J. Eliot B. Moss, Aashish Phansalkar, Darko Stefanovic, Thomas VanDrunen, Daniel von Dincklage, Ben Wiedermann
OOPSLA19
2006 Understanding the behavior of compiler optimizations
abstract
Abstract Compiler optimizations are difficult to implement and add complexity to a compiler. For this reason, compiler writers are selective about implementing them: they implement only the ones that they believe will be beneficial. To support compiler writers in this, we describe a method for measuring the cost and benefits of compiler optimizations, both individually and in synergy with other optimizations. We demonstrate our method by presenting results for the optimizations implemented in the Jikes Research Virtual Machine on the PowerPC and IA32 platforms. Copyright © 2006 John Wiley & Sons, Ltd.
Han Bok Lee, Daniel von Dincklage, Amer Diwan, J. Eliot B. Moss
Softw. Pract. Exp.2
2004 Converting Java classes to use generics
abstract
Generics offer significant software engineering benefits since they provide code reuse without compromising type safety. Thus generics will be added to the Java language in the next release. While this extension to Java will help programmers when they are writing new code, it will not help legacy code unless it is rewritten to use generics. In our experience, manually modifying existing programs to use generics is complex and can be error prone and labor intensive.
Daniel von Dincklage, Amer Diwan
OOPSLA1
2003 Making Patterns Explicit with Metaprogramming
Daniel von Dincklage
GPCE1