Luis Mastrangelo

dblp:97/10956 · DBLP profile ↗
← Back
4ranked-venue papers
2as first author
0since 2021 · last 2019
—ORCID · none

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

Software engineering, systems software and programming languages · 3 · 2 first-authorSystems, architecture and hardware · 1

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
Programming languages and type systems · 53% Empirical software engineering · 32% Program analysis · 12%
Computer architecture, parallel and distributed computing, and storage systems
1 paper
Parallel and multicore computing · 100%

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

TopicWeightPapersLastEvidence papers
Empirical software engineering
mining software repositories
0.622019
Casting about in the dark: an empirical study of cast operations in Java programs · Proc. ACM Program. Lang. 2019
Use at your own risk: the Java unsafe API in the wild · OOPSLA 2015
Programming languages and type systems › type systems
static typing
0.412019
Casting about in the dark: an empirical study of cast operations in Java programs · Proc. ACM Program. Lang. 2019
Programming languages and type systems
type systems
0.412019
Casting about in the dark: an empirical study of cast operations in Java programs · Proc. ACM Program. Lang. 2019
Program analysis › binary analysis
bytecode analysis
0.212015
Use at your own risk: the Java unsafe API in the wild · OOPSLA 2015
Programming languages and type systems
language-based safety
0.212015
Use at your own risk: the Java unsafe API in the wild · OOPSLA 2015
Parallel and multicore computing
speculative parallelization
0.112012
Adapting the polyhedral model as a framework for efficient speculative parallelization · PPoPP 2012
Parallel and multicore computing › speculative parallelization
thread-level speculation
0.112012
Adapting the polyhedral model as a framework for efficient speculative parallelization · PPoPP 2012
Systems and software security
memory safety
0.112015
Use at your own risk: the Java unsafe API in the wild · OOPSLA 2015
Compilers and program optimization
polyhedral model
0.012012
Adapting the polyhedral model as a framework for efficient speculative parallelization · PPoPP 2012

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

static analysis · 0.4repository mining · 0.4empirical study · 0.4runtime scheduling · 0.3profiling · 0.3polyhedral compilation · 0.3
YearPublicationVenuePosition
2019 Casting about in the dark: an empirical study of cast operations in Java programs
abstract
The main goal of a static type system is to prevent certain kinds of errors from happening at run time. A type system is formulated as a set of constraints that gives any expression or term in a program a well-defined type. Yet mainstream programming languages are endowed with type systems that provide the means to circumvent their constraints through casting. We want to understand how and when developers escape the static type system to use dynamic typing. We empirically study how casting is used by developers in more than seven thousand Java projects. We find that casts are widely used (8.7% of methods contain at least one cast) and that 50% of casts we inspected are not guarded locally to ensure against potential run-time errors. To help us better categorize use cases and thus understand how casts are used in practice, we identify 25 cast-usage patterns---recurrent programming idioms using casts to solve a specific issue. This knowledge can be: (a) a recommendation for current and future language designers to make informed decisions (b) a reference for tool builders, e.g., by providing more precise or new refactoring analyses, (c) a guide for researchers to test new language features, or to carry out controlled programming experiments, and (d) a guide for developers for better practices.
Luis Mastrangelo, Matthias Hauswirth, Nathaniel Nystrom
Proc. ACM Program. Lang.1
2015 Use at your own risk: the Java unsafe API in the wild
abstract
Java is a safe language. Its runtime environment provides strong safety guarantees that any Java application can rely on. Or so we think. We show that the runtime actually does not provide these guarantees---for a large fraction of today's Java code. Unbeknownst to many application developers, the Java runtime includes a "backdoor" that allows expert library and framework developers to circumvent Java's safety guarantees. This backdoor is there by design, and is well known to experts, as it enables them to write high-performance "systems-level" code in Java. For much the same reasons that safe languages are preferred over unsafe languages, these powerful---but unsafe---capabilities in Java should be restricted. They should be made safe by changing the language, the runtime system, or the libraries. At the very least, their use should be restricted. This paper is a step in that direction. We analyzed 74 GB of compiled Java code, spread over 86,479 Java archives, to determine how Java's unsafe capabilities are used in real-world libraries and applications. We found that 25% of Java bytecode archives depend on unsafe third-party Java code, and thus Java's safety guarantees cannot be trusted. We identify 14 different usage patterns of Java's unsafe capabilities, and we provide supporting evidence for why real-world code needs these capabilities. Our long-term goal is to provide a foundation for the design of new language features to regain safety in Java.
Luis Mastrangelo, Luca Ponzanelli, Andrea Mocci, Michele Lanza 0001, Matthias Hauswirth, Nathaniel Nystrom
OOPSLA1
2012 VMAD: An Advanced Dynamic Program Analysis and Instrumentation Framework
Alexandra Jimborean, Luis Mastrangelo, Vincent Loechner, Philippe Clauss
CC2
2012 Adapting the polyhedral model as a framework for efficient speculative parallelization
abstract
In this paper, we present a Thread-Level Speculation (TLS) framework whose main feature is to be able to speculatively parallelize a sequential loop nest in various ways, by re-scheduling its iterations. The transformation to be applied is selected at runtime with the goal of minimizing the number of rollbacks and maximizing performance. We perform code transformations by applying the polyhedral model that we adapted for speculative and runtime code parallelization. For this purpose, we design a parallel code pattern which is patched by our runtime system according to the profiling information collected on some execution samples. Adaptability is ensured by considering chunks of code of various sizes, that are launched successively, each of which being parallelized in a different manner, or run sequentially, depending on the currently observed behavior for accessing memory.
Alexandra Jimborean, Philippe Clauss, Benoît Pradelle, Luis Mastrangelo, Vincent Loechner
PPoPP4