Modular analysis of polyglot applications is challenging because heap object flows across language boundaries must be resolved. The state-of-the-art analyses for polyglot applications have two fundamental limitations. First, they assume explicit boundaries between the host and the guest language to determine inter-language dataflows. Second, they rely on specific analyses of the host and guest languages. The former assumption is impractical concerning recent advancements in polyglot programming techniques, while the latter disregards advances in pointer analysis of the underlying languages. In this work, we propose to extend existing pointer analyses with a novel summary specialization technique so that points-to set across language boundaries can be unified. Our novel technique leverages various combinations of host and guest analyses with minor modifications. We demonstrate the efficacy and generalizability of our approach by evaluating it with two polyglot language models: Java-C communication via Android's NDK and Java-Python communication in GraalVM.
翻译:多语言应用的模块化分析具有挑战性,因为必须解析跨越语言边界的堆对象流。当前最先进的多语言应用分析存在两个根本性局限:其一,它们假设宿主语言与客体语言之间存在显式边界以确定跨语言数据流;其二,它们依赖于宿主语言与客体语言的特定分析。前者假设与多语言编程技术的最新进展相矛盾,后者则忽略了底层语言指针分析领域的最新成果。本文提出通过新颖的摘要特化技术扩展现有指针分析,从而统一跨语言边界的指向集。该创新技术仅需对宿主与客体分析的各类组合进行最小化修改即可实现。我们通过两种多语言模型——基于Android NDK的Java-C通信与GraalVM中的Java-Python通信——进行验证,证明了该方法的高效性与普适性。