Abstracting Abstract Machines

被引:12
|
作者
Van Horn, David [1 ]
Might, Matthew [2 ]
机构
[1] Northeastern Univ, Boston, MA 02115 USA
[2] Univ Utah, Salt Lake City, UT 84112 USA
关键词
Languages; Theory; abstract machines; abstract interpretation; FLOW-ANALYSIS;
D O I
10.1145/1932681.1863553
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
We describe a derivational approach to abstract interpretation that yields novel and transparently sound static analyses when applied to well-established abstract machines. To demonstrate the technique and support our claim, we transform the CEK machine of Felleisen and Friedman, a lazy variant of Krivine's machine, and the stack-inspecting CM machine of Clements and Felleisen into abstract interpretations of themselves. The resulting analyses bound temporal ordering of program events; predict return-flow and stack-inspection behavior; and approximate the flow and evaluation of by-need parameters. For all of these machines, we find that a series of well-known concrete machine refactorings, plus a technique we call store-allocated continuations, leads to machines that abstract into static analyses simply by bounding their stores. We demonstrate that the technique scales up uniformly to allow static analysis of realistic language features, including tail calls, conditionals, side effects, exceptions, first-class continuations, and even garbage collection.
引用
收藏
页码:51 / 62
页数:12
相关论文
共 50 条
  • [1] Abstracting Abstract Machines
    Van Horn, David
    Might, Matthew
    ICFP 2010: PROCEEDINGS OF THE 2010 ACM SIGPLAN INTERNATIONAL CONFERENCE ON FUNCTIONAL PROGRAMMING, 2010, : 51 - 62
  • [2] Abstracting Abstract Machines A Systematic Approach to Higher-Order Program Analysis
    Van Horn, David
    Might, Matthew
    COMMUNICATIONS OF THE ACM, 2011, 54 (09) : 101 - 109
  • [3] Optimizing Abstract Abstract Machines
    Johnson, J. Ian
    Labich, Nicholas
    Might, Matthew
    Van Horn, David
    ACM SIGPLAN NOTICES, 2013, 48 (09) : 443 - 454
  • [4] Sequent Calculi and Abstract Machines
    Ariola, Zena M.
    Bohannon, Aaron
    Sabry, Amr
    ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 2009, 31 (04):
  • [5] Refunctionalization of Abstract Abstract Machines
    Wei, Guannan
    Decker, James
    Rompf, Tiark
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2018, 2
  • [6] Refunctionalization of Abstract Abstract Machines Bridging the Gap between Abstract Abstract Machines and Abstract Definitional Interpreters (Functional Pearl)
    Wei, Guannan
    Decker, James
    Rompf, Tiark
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES, 2018,
  • [7] Distilling Abstract Machines
    Accattoli, Beniamino
    Barenbaum, Pablo
    Mazza, Damiano
    ACM SIGPLAN NOTICES, 2014, 49 (09) : 363 - 376
  • [8] Distilling Abstract Machines
    Accattoli, Beniamino
    Barenbaum, Pablo
    Mazza, Damiano
    ICFP'14: PROCEEDINGS OF THE 2014 ACM SIGPLAN INTERNATIONAL CONFERENCE ON FUNCTIONAL PROGRAMMING, 2014, : 363 - 376
  • [9] Environments and the Complexity of Abstract Machines
    Accattoli, Beniamino
    Barras, Bruno
    PROCEEDINGS OF THE 19TH INTERNATIONAL SYMPOSIUM ON PRINCIPLES AND PRACTICE OF DECLARATIVE PROGRAMMING (PPDP 2017), 2017, : 4 - 16
  • [10] Abstract state machines capture parallel algorithms: Correction and extension
    Blass, Andreas
    Gurevich, Yuri
    ACM TRANSACTIONS ON COMPUTATIONAL LOGIC, 2008, 9 (03)