DLS 2016
Tue 1 Nov 2016 Amsterdam, Netherlands
co-located with SPLASH 2016
Tue 1 Nov 2016 14:20 - 14:45 at Matterhorn 1 - Session 3 Chair(s): Laurence Tratt

Compiling MATLAB—a dynamic, array-based language—to JavaScript
is an attractive proposal: the output code can be deployed on a
platform used by billions and can leverage the countless hours that
have gone into making JavaScript JIT engines fast. But before that
can happen, the original MATLAB code must be properly translated,
making sure to bridge the semantic gaps of the two languages.

An important area where MATLAB and JavaScript differ is in their
handling of arrays: for example, in MATLAB, arrays are one-indexed
and writing at an index beyond the end of an array extends it; in
JavaScript, typed arrays are zero-indexed and writing out of bounds
is a no-op. A MATLAB-to-JavaScript compiler must address these
mismatches. Another salient and pervasive difference between the
two languages is the assignment of arrays to variables: in MATLAB,
this operation has value semantics, while in JavaScript is has
reference semantics.

In this paper, we present MatJuice — a source-to-source,
ahead-of-time compiler back-end for MATLAB — and how it deals
efficiently with this last issue. We present an intra-procedural
data-flow analysis to track where each array variable may point to
and which variables are possibly aliased. We also present the
associated copy insertion transformation that uses the points-to
information to insert explicit copies when necessary. The resulting
JavaScript program respects the MATLAB value semantics and we show
that it performs fewer run-time copies than some alternative

Tue 1 Nov
Times are displayed in time zone: (GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change

13:30 - 15:10: Session 3DLS at Matterhorn 1
Chair(s): Laurence TrattKing's College London
13:30 - 13:55
Remigius MeierETH Zurich, Switzerland, Armin RigoPyPy.org, Switzerland, Thomas GrossETH Zurich
13:55 - 14:20
Guido ChariUniversity of Buenos Aires, Argentina, Diego GarbervetskyUniversity of Buenos Aires, Argentina, Stefan MarrJohannes Kepler University Linz
DOI Pre-print
14:20 - 14:45
Vincent Foley-BourgonMcGill University, Canada, Laurie HendrenMcGill University, Canada
14:45 - 15:10
Lukas StadlerOracle Labs, Austria, Adam WelcOracle Labs, USA, Christian HumerOracle Labs, Switzerland, Mick JordanOracle Labs, USA