Affiliation:
1. McGill University, Canada
Abstract
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.
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Reference14 articles.
1. McLab
2. J. Doherty. McSaf: An Extensible Static Analysis Framework For The MATLAB Language. Master’s thesis August 2011. J. Doherty. McSaf: An Extensible Static Analysis Framework For The MATLAB Language. Master’s thesis August 2011.
3. Taming MATLAB
4. Faiz Khan etal Using JavaScript and WebCL for Numerical Computations: A Comparative Study of Native and Web Technologies. Faiz Khan et al. Using JavaScript and WebCL for Numerical Computations: A Comparative Study of Native and Web Technologies.
5. GNU. Octave: Miscellaneous Techniques. https://www. gnu.org/software/octave/doc/interpreter/ Miscellaneous-Techniques.html. GNU. Octave: Miscellaneous Techniques. https://www. gnu.org/software/octave/doc/interpreter/ Miscellaneous-Techniques.html.
Cited by
2 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Improving database query performance with automatic fusion;Proceedings of the 29th International Conference on Compiler Construction;2020-02-22
2. Pando;Proceedings of the 20th International Middleware Conference;2019-12-09