Efficiently Implementing the Copy Semantics of MATLAB's Arrays in JavaScript
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
approaches.
Tue 1 NovDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
13:30 - 15:10 | |||
13:30 25mTalk | Parallel Virtual Machines with RPython DLS DOI | ||
13:55 25mTalk | Building Efficient and Highly Run-Time Adaptable Virtual Machines DLS Guido Chari University of Buenos Aires, Argentina, Diego Garbervetsky University of Buenos Aires, Argentina, Stefan Marr Johannes Kepler University Linz DOI Pre-print | ||
14:20 25mTalk | Efficiently Implementing the Copy Semantics of MATLAB's Arrays in JavaScript DLS DOI | ||
14:45 25mTalk | Optimizing R Language Execution via Aggressive Speculation DLS Lukas Stadler Oracle Labs, Austria, Adam Welc Oracle Labs, USA, Christian Humer Oracle Labs, Switzerland, Mick Jordan Oracle Labs, USA DOI |