• preprint: The ART of Sharing Points-to Analysis

    From John R Levine@johnl@taugh.com to comp.compilers on Tue Sep 17 14:08:57 2024
    From Newsgroup: comp.compilers

    This paper proposes an improvement in "points-to" dataflow analysis,
    that they think will be useful in JIT compilers such as for Java.

    Data-flow analyses like points-to analysis can vastly improve the
    precision of other analyses, and help perform powerful code
    optimizations. However, whole-program points-to analysis of large
    programs tend to be expensive - both in terms of time and memory.
    Consequently, many compilers (both static and JIT) and
    program-analysis tools tend to employ faster - but more conservative -
    points-to analysis to improve usability. As an alternative to such
    trading of precision for performance, various techniques have been
    proposed to perform precise yet expensive fixed-point points-to
    analyses ahead of time in a static analyzer, store the results, and
    then transmit them to independent compilation/program-analysis stages
    that may need them. However, an underlying concern of safety affects
    all such techniques - can a compiler (or program analysis tool) trust
    the points-to analysis results generated by another compiler/tool? In
    this work, we address this issue of trust, while keeping the issues of
    performance efficiency in mind. We propose ART: Analysis-results
    Representation Template - a novel scheme to efficiently and concisely
    encode results of flow-sensitive, context-insensitive points-to
    analysis computed by a static analyzer for use in any independent
    system that may benefit from such a highly precise points-to analysis.
    Our scheme has two components: (i) a producer that can statically
    perform expensive points-to analysis and encode the same concisely.
    (ii) a consumer that, on receiving such encoded results, can
    regenerate the points-to analysis results encoded by the artwork if it
    is deemed safe. We demonstrate the usage of ART by implementing a
    producer (in Soot) and two consumers (in Soot and the Eclipse OpenJ9
    JIT compiler). We evaluate our implementation over various benchmarks
    from the DaCapo and SPECjvm2008 suites.

    https://arxiv.org/abs/2409.09062

    Regards,
    John Levine, johnl@taugh.com, Taughannock Networks, Trumansburg NY
    Please consider the environment before reading this e-mail. https://jl.ly
    --- Synchronet 3.21b-Linux NewsLink 1.2