<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<item>
  <id>05924309</id>
  <dt>a</dt>
  <an>05924309</an>
  <augroup>
    <au>Lameed, Nurudeen</au>
    <au>Hendren, Laurie</au>
  </augroup>
  <ti>Staged static techniques to efficiently implement array copy semantics in a MATLAB JIT compiler.</ti>
  <so>Knoop, Jens (ed.), Compiler construction. 20th international conference, CC 2011, held as Part of the joint European conferences on theory and practice of software, ETAPS 2011, Saarbr\"ucken, Germany, March 26 -- April 3, 2011. Proceedings. Berlin: Springer (ISBN 978-3-642-19860-1/pbk). Lecture Notes in Computer Science 6601, 22-41 (2011).</so>
  <py>2011</py>
  <pu>Berlin: Springer</pu>
  <lagroup>
    <la>EN</la>
  </lagroup>
  <ccgroup>
  </ccgroup>
  <utgroup>
  </utgroup>
  <cigroup>
  </cigroup>
  <ligroup>
    <li>doi:10.1007/978-3-642-19861-8_3</li>
  </ligroup>
  <abgroup>
    <ab>Summary: Matlab has gained widespread acceptance among scientists. Several dynamic aspects of the language contribute to its appeal, but also provide many challenges. One such problem is caused by the copy semantics of Matlab. Existing Matlab systems rely on reference-counting schemes to create copies only when a shared array representation is updated. This reduces array copies, but requires runtime checks. We present a staged static analysis approach to determine when copies are not required. The first stage uses two simple, intraprocedural analyses, while the second stage combines a forward necessary copy analysis with a backward copy placement analysis. Our approach eliminates unneeded array copies without requiring reference counting or frequent runtime checks. We have implemented our approach in the McVM JIT. Our results demonstrate that, for our benchmark set, there are significant overheads for both existing reference-counted and naive copy-insertion approaches, and that our staged approach is effective in avoiding unnecessary copies.</ab>
    <rv></rv>
  </abgroup>
</item>