首页> 外文会议>European Conference on Object-Oriented Programming >AVERROES: Whole-Program Analysis without the Whole Program
【24h】

AVERROES: Whole-Program Analysis without the Whole Program

机译:Averroes:没有整体计划的全程分析

获取原文

摘要

Call graph construction for object-oriented programs is often difficult and expensive. Most sound and precise algorithms analyze the whole program including all library dependencies. The separate compilation assumption makes it possible to generate sound and reasonably precise call graphs without analyzing libraries. We investigate whether the separate compilation assumption can be encoded universally in Java bytecode, such that all existing whole-program analysis frameworks can easily take advantage of it. We present and evaluate AVERROES, a tool that generates a placeholder library that overapproximates the possible behaviour of an original library. The placeholder library can be constructed quickly without analyzing the whole program, and is typically in the order of 80 kB of class files (comparatively, the Java standard library is 25 MB). Any existing whole-program call graph construction framework can use the placeholder library as a replacement for the actual libraries to efficiently construct a sound and precise application call graph. AVERROES improves the analysis time of whole-program call graph construction by a factor of 4.3× to 12×, and reduces memory requirements by a factor of 8.4× to 13×. In addition, AVERROES makes it easier for whole-program frameworks to handle reflection soundly in two ways: it is based on a conservative assumption about all behaviour within the library, including reflection, and it provides analyses and tools to model reflection in the application. The call graphs built with AVERROES and existing whole-program frameworks are as precise and sound as those built with CGC. While CGC is a specific implementation of the separate compilation assumption in the DOOP framework, AVERROES is universal to all Java program analysis frameworks.
机译:面向对象程序的呼叫图构造通常难以且昂贵。大多数声音和精确的算法分析了整个程序,包括所有库依赖项。单独的编译假设使得可以在不分析库的情况下生成声音和合理精确的呼叫图。我们调查单独的编译假设是否可以普遍存在Java字节码中,使得所有现有的整个程序分析框架都可以轻松利用它。我们呈现并评估Averroes,这是一个生成占位符库的工具,其覆盖了原始库的可能行为。占位符库可以在不分析整个程序的情况下快速构建,并且通常按80 kB的类文件(比较,Java标准库为25 MB)。任何现有的整个程序呼叫图构造框架都可以使用占位符库作为实际库的替代,以有效构建声音和精确的应用程序呼叫图。 Averroes将整个程序呼叫图构造的分析时间提高了4.3倍至12倍,并将内存要求降低了8.4×至13倍。此外,Averroes可以更轻松地以两种方式处理整体框架,以两种方式处理反射:它基于关于库中的所有行为的保守假设,包括反射,它提供了在应用中模拟反射的分析和工具。使用Averroes和现有的整个程序框架构建的呼叫图与CGC建造的完全和声音一样精确和声音。虽然CGC是DOOP框架中单独编译假设的具体实施,但是Averroes对所有Java程序分析框架普遍存在。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号