Publication

Miniboxing: Improving the Speed to Code Size Tradeoff in Parametric Polymorphism Translations

Related publications (69)

Interflow: interprocedural flow-sensitive type inference and method duplication

Martin Odersky, Denys Shabalin

Scala heavily relies on a number of object-oriented abstractions to support its feature-rich collections library. There are known techniques that optimize those abstractions away in just-in-time (JIT) compilers, but applying them in the ahead-of-time (AOT) ...
2018

Genius loci e memorie urbane. Il progetto di Ragnar Östberg per l’area di Eldkvarn

Chiara Monterumisi

The paper explores the city of Stockholm, apparently far from the main tracks of other significant European examples due to its peculiar morphological features. The study investigates the Stockholm Town Hall (Stadshuset) and the nearby never-to-be realized ...
2018

Higher-Order Subtyping with Type Intervals

Sandro Stucki

Modern, statically typed programming languages provide various abstraction facilities at both the term- and type-level. Common abstraction mechanisms for types include parametric polymorphism -- a hallmark of functional languages -- and subtyping -- which ...
EPFL2017

Design and implementation of an optimizing type-centric compiler for a high-level language

Dmytro Petrashko

Production compilers for programming languages face multiple requirements. They should be correct, as we rely on them to produce code. They should be fast, in order to provide a good developer experience. They should also be easy to maintain and evolve. Th ...
EPFL2017

Java and Scala's Type Systems are Unsound The Existential Crisis of Null Pointers

Nada Amin

We present short programs that demonstrate the unsoundness of Java and Scala's current type systems. In particular, these programs provide parametrically polymorphic functions that can turn any type into any type without (down) casting. Fortunately, parame ...
Assoc Computing Machinery2016

Call Graphs for Languages with Parametric Polymorphism

Martin Odersky, Vlad Ureche, Dmytro Petrashko

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 in ...
2016

Java and Scala's Type Systems are Unsound: The Existential Crisis of Null Pointers

Nada Amin

We present short programs that demonstrate the unsoundness of Java and Scala’s current type systems. In particular, these programs provide parametrically polymorphic functions that can turn any type into any type without (down)casting. Fortunately, paramet ...
2015

Compile-Time Type-Driven Data Representation Transformations in Object-Oriented Languages

Vlad Ureche

High-level languages allow programmers to express data structures and algorithms that abstract over the type of data they handle. This improves code reuse and makes it possible to develop general-purpose libraries. Yet, data abstractions slow down program ...
EPFL2015

Common Subexpression Elimination in Dotty

Martin Odersky, Dmytro Petrashko, Allan Vincent Roger Renucci

Common subexpression elimination is a well-known compiler optimisa- tion that improves running time of compiled applications by avoiding the repetition of the same computation. Although it has been implemented on a low level such as bytecode, it misses mul ...
2015

Improving the Interoperation between Generics Translations

Martin Odersky, Nicolas Alexander Stucki, Vlad Ureche, Romain Michel Beguet, Milos Stojanovic

Generics on the Java platform are compiled using the erasure transformation, which only supports by-reference values. This causes slowdowns when generics operate on primitive types, such as integers, as they have to be transformed into reference-based obje ...
ACM2015

Graph Chatbot

Chat with Graph Search

Ask any question about EPFL courses, lectures, exercises, research, news, etc. or try the example questions below.

DISCLAIMER: The Graph Chatbot is not programmed to provide explicit or categorical answers to your questions. Rather, it transforms your questions into API requests that are distributed across the various IT services officially administered by EPFL. Its purpose is solely to collect and recommend relevant references to content that you can explore to help you answer your questions.