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

Dmitry Petrashko

dblp:161/8035 · DBLP profile ↗
← Back
3ranked-venue papers
2as first author
0since 2021 · last 2017
—ORCID · none

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

Software engineering, systems software and programming languages · 2 · 2 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
2 papers
Compilers and program optimization · 67% Program analysis · 26% Programming languages and type systems · 8%

Topics — the 4 heaviest of 5, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Compilers and program optimization › program transformation
tree transformations
0.312017
Miniphases: compilation using modular and efficient tree transformations · PLDI 2017
Program analysis › static analysis
call graph construction
0.212016
Call graphs for languages with parametric polymorphism · OOPSLA 2016
Compilers and program optimization › compiler optimization › type-based optimization
devirtualization
0.112016
Call graphs for languages with parametric polymorphism · OOPSLA 2016
Programming languages and type systems › type systems › polymorphism
parametric polymorphism
0.112016
Call graphs for languages with parametric polymorphism · OOPSLA 2016

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

modular compilation · 0.3intermediate representation traversal · 0.3
YearPublicationVenuePosition
2017 Miniphases: compilation using modular and efficient tree transformations
abstract
Production compilers commonly perform dozens of transformations on an intermediate representation. Running those transformations in separate passes harms performance. One approach to recover performance is to combine transformations by hand in order to reduce number of passes. Such an approach harms modularity, and thus makes it hard to maintain and evolve a compiler over the long term, and makes reasoning about performance harder. This paper describes a methodology that allows a compiler writer to define multiple transformations separately, but fuse them into a single traversal of the intermediate representation when the compiler runs. This approach has been implemented in a compiler for the Scala language. Our performance evaluation indicates that this approach reduces the running time of tree transformations by 35% and shows that this is due to improved cache friendliness. At the same time, the approach improves total memory consumption by reducing the object tenuring rate by 50%. This approach enables compiler writers to write transformations that are both modular and fast at the same time.
Dmitry Petrashko, Ondrej Lhoták, Martin Odersky
PLDI1
2016 Call graphs for languages with parametric polymorphism
abstract
The performance of contemporary object oriented languages depends on optimizations such as devirtualization, inlining, and specialization, and these in turn depend on precise call graph analysis. Existing call graph analyses do not take advantage of the information provided by the rich type systems of contemporary languages, in particular generic type arguments. Many existing approaches analyze Java bytecode, in which generic types have been erased. This paper shows that this discarded information is actually very useful as the context in a context-sensitive analysis, where it significantly improves precision and keeps the running time small. Specifically, we propose and evaluate call graph construction algorithms in which the contexts of a method are (i) the type arguments passed to its type parameters, and (ii) the static types of the arguments passed to its term parameters. The use of static types from the caller as context is effective because it allows more precise dispatch of call sites inside the callee.
Dmitry Petrashko, Vlad Ureche, Ondrej Lhoták, Martin Odersky
OOPSLA1
2015 Efficient Lock-Free Work-Stealing Iterators for Data-Parallel Collections
abstract
High-level data-structures are an important foundation for most applications. With the rise of multicores, there is a trend of supporting data-parallel collection operations in general purpose programming languages. However, these operations often incur high-level abstraction and scheduling penalties. We present a generic data-parallel collections design based on work-stealing for shared-memory architectures that overcomes abstraction penalties through call site specialization of data-parallel operation instances. Moreover, we introduce work-stealing iterators that allow more fine-grained and efficient work-stealing. By eliminating abstraction penalties and making work-stealing data-structure-aware we achieve several dozen times better performance compared to existing JVM-based approaches.
Aleksandar Prokopec, Dmitry Petrashko, Martin Odersky
PDP2