首页 > 最新文献

State Of the Art in Java Program Analysis最新文献

英文 中文
DUA-forensics: a fine-grained dependence analysis and instrumentation framework based on Soot dua取证:基于Soot的细粒度依赖性分析和检测框架
Pub Date : 2013-06-20 DOI: 10.1145/2487568.2487574
Raúl A. Santelices, Yiji Zhang, Haipeng Cai, Siyuan Jiang
We describe DUA-Forensics, our open-source Java-bytecode program analysis and instrumentation system built on top of Soot. DUA-Forensics has been in development for more than six years and has supported multiple research projects on efficient monitoring, test-suite augmentation, fault localization, symbolic execution, and change-impact analysis. Three core features of Soot have proven essential: the Java bytecode processor, the Jimple intermediate representation, and the API to access and manipulate Jimple programs. On top of these foundations, DUA-Forensics offers a number of features of potential interest to the Java-analysis community, including (1) a layer that facilitates the instrumentation of Jimple code, (2) a library modeling system for efficient points-to, data-flow, and symbolic analysis, and (3) a fine-grained dependence analysis component. These features have made our own research more productive, reliable, and effective.
我们描述了基于Soot的开源java字节码程序分析和仪器系统DUA-Forensics。DUA-Forensics已经开发了6年多,支持了多个关于高效监控、测试套件扩展、故障定位、符号执行和变更影响分析的研究项目。事实证明,Soot的三个核心特性是必不可少的:Java字节码处理器、Jimple中间表示以及访问和操作Jimple程序的API。在这些基础之上,DUA-Forensics提供了许多java分析社区可能感兴趣的特性,包括(1)一个促进Jimple代码插插的层,(2)一个用于高效点、数据流和符号分析的库建模系统,以及(3)一个细粒度依赖性分析组件。这些特点使我们自己的研究更富有成效、更可靠、更有效。
{"title":"DUA-forensics: a fine-grained dependence analysis and instrumentation framework based on Soot","authors":"Raúl A. Santelices, Yiji Zhang, Haipeng Cai, Siyuan Jiang","doi":"10.1145/2487568.2487574","DOIUrl":"https://doi.org/10.1145/2487568.2487574","url":null,"abstract":"We describe DUA-Forensics, our open-source Java-bytecode program analysis and instrumentation system built on top of Soot. DUA-Forensics has been in development for more than six years and has supported multiple research projects on efficient monitoring, test-suite augmentation, fault localization, symbolic execution, and change-impact analysis. Three core features of Soot have proven essential: the Java bytecode processor, the Jimple intermediate representation, and the API to access and manipulate Jimple programs. On top of these foundations, DUA-Forensics offers a number of features of potential interest to the Java-analysis community, including (1) a layer that facilitates the instrumentation of Jimple code, (2) a library modeling system for efficient points-to, data-flow, and symbolic analysis, and (3) a fine-grained dependence analysis component. These features have made our own research more productive, reliable, and effective.","PeriodicalId":198433,"journal":{"name":"State Of the Art in Java Program Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2013-06-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125884412","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 19
Soot class loading in the rootbeer GPU compiler 在rootbeer GPU编译器中加载煤烟类
Pub Date : 2013-06-20 DOI: 10.1145/2487568.2487573
Philip C. Pratt-Szeliga, Marc-André Laverdière, E. Merlo, James W. Fawcett, Roy D. Welch
One of the first activities of the Soot program analysis framework is to load the classes for analysis. With the current class loader, more classes are loaded than necessary. The overhead in memory of these classes can make whole-program analysis of large binaries infeasible on systems with limited memory. This paper describes new algorithms and data structures to efficiently load Java Bytecode classes for whole program analysis in Soot. Our method uses a modified version of Rapid Type Analysis (RTA) to determine what classes, methods and fields would be reachable during program execution. This enables us to load significantly less information in memory to enable program analyses. We implemented our approach for loading Java bytecode in the Soot-based Rootbeer compiler. The new class loader loaded a Scene that had 58% to 64% less classes, representing memory savings of 44% to 82%.
Soot程序分析框架的第一个活动之一是加载用于分析的类。使用当前的类装入器,装入的类比需要的多。这些类的内存开销使得在内存有限的系统上无法对大型二进制文件进行整体程序分析。本文描述了在Soot中高效加载Java字节码类以进行全程序分析的新算法和数据结构。我们的方法使用快速类型分析(RTA)的修改版本来确定在程序执行期间可以访问哪些类、方法和字段。这使我们能够在内存中加载更少的信息来支持程序分析。我们在基于烟灰的Rootbeer编译器中实现了加载Java字节码的方法。新的类加载器加载的场景类减少了58%到64%,内存节省了44%到82%。
{"title":"Soot class loading in the rootbeer GPU compiler","authors":"Philip C. Pratt-Szeliga, Marc-André Laverdière, E. Merlo, James W. Fawcett, Roy D. Welch","doi":"10.1145/2487568.2487573","DOIUrl":"https://doi.org/10.1145/2487568.2487573","url":null,"abstract":"One of the first activities of the Soot program analysis framework is to load the classes for analysis. With the current class loader, more classes are loaded than necessary. The overhead in memory of these classes can make whole-program analysis of large binaries infeasible on systems with limited memory. This paper describes new algorithms and data structures to efficiently load Java Bytecode classes for whole program analysis in Soot. Our method uses a modified version of Rapid Type Analysis (RTA) to determine what classes, methods and fields would be reachable during program execution. This enables us to load significantly less information in memory to enable program analyses. We implemented our approach for loading Java bytecode in the Soot-based Rootbeer compiler. The new class loader loaded a Scene that had 58% to 64% less classes, representing memory savings of 44% to 82%.","PeriodicalId":198433,"journal":{"name":"State Of the Art in Java Program Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2013-06-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130471472","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Interprocedural data flow analysis in Soot using value contexts 烟灰中使用值上下文的程序间数据流分析
Pub Date : 2013-04-23 DOI: 10.1145/2487568.2487569
Rohan Padhye, Uday P. Khedker
An interprocedural analysis is precise if it is flow sensitive and fully context-sensitive even in the presence of recursion. Many methods of interprocedural analysis sacrifice precision for scalability while some are precise but limited to only a certain class of problems. Soot currently supports interprocedural analysis of Java programs using graph reachability. However, this approach is restricted to IFDS/IDE problems, and is not suitable for general data flow frameworks such as heap reference analysis and points-to analysis which have non-distributive flow functions. We describe a general-purpose interprocedural analysis framework for Soot using data flow values for context-sensitivity. This framework is not restricted to problems with distributive flow functions, although the lattice must be finite. It combines the key ideas of the tabulation method of the functional approach and the technique of value-based termination of call string construction. The efficiency and precision of interprocedural analyses is heavily affected by the precision of the underlying call graph. This is especially important for object-oriented languages like Java where virtual method invocations cause an explosion of spurious call edges if the call graph is constructed naively. We have instantiated our framework with a flow and context-sensitive points-to analysis in Soot, which enables the construction of call graphs that are far more precise than those constructed by Soot's spark engine.
如果过程间分析是流敏感的,并且即使在递归存在的情况下也是完全上下文敏感的,那么它就是精确的。许多过程间分析方法为了可伸缩性牺牲了精度,而有些方法虽然精确,但仅限于某一类问题。目前,Soot支持使用图形可达性对Java程序进行过程间分析。然而,这种方法仅限于IFDS/IDE问题,不适用于一般的数据流框架,如堆引用分析和具有非分布流函数的点对分析。我们描述了一个通用的烟灰过程间分析框架,使用数据流值来实现上下文敏感性。虽然格必须是有限的,但这个框架并不局限于有分配流函数的问题。它结合了函数方法的制表方法的核心思想和基于值的调用字符串终止构造技术。过程间分析的效率和精度在很大程度上取决于底层调用图的精度。这对于像Java这样的面向对象语言尤其重要,在这些语言中,如果简单地构造调用图,虚拟方法调用会导致虚假调用边的爆发。我们已经在Soot中用流和上下文敏感的point -to分析实例化了我们的框架,这使得构建调用图比由Soot的spark引擎构建的调用图要精确得多。
{"title":"Interprocedural data flow analysis in Soot using value contexts","authors":"Rohan Padhye, Uday P. Khedker","doi":"10.1145/2487568.2487569","DOIUrl":"https://doi.org/10.1145/2487568.2487569","url":null,"abstract":"An interprocedural analysis is precise if it is flow sensitive and fully context-sensitive even in the presence of recursion. Many methods of interprocedural analysis sacrifice precision for scalability while some are precise but limited to only a certain class of problems.\u0000 Soot currently supports interprocedural analysis of Java programs using graph reachability. However, this approach is restricted to IFDS/IDE problems, and is not suitable for general data flow frameworks such as heap reference analysis and points-to analysis which have non-distributive flow functions.\u0000 We describe a general-purpose interprocedural analysis framework for Soot using data flow values for context-sensitivity. This framework is not restricted to problems with distributive flow functions, although the lattice must be finite. It combines the key ideas of the tabulation method of the functional approach and the technique of value-based termination of call string construction.\u0000 The efficiency and precision of interprocedural analyses is heavily affected by the precision of the underlying call graph. This is especially important for object-oriented languages like Java where virtual method invocations cause an explosion of spurious call edges if the call graph is constructed naively. We have instantiated our framework with a flow and context-sensitive points-to analysis in Soot, which enables the construction of call graphs that are far more precise than those constructed by Soot's spark engine.","PeriodicalId":198433,"journal":{"name":"State Of the Art in Java Program Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2013-04-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123272569","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 50
InvokeDynamic support in Soot 烟灰中的InvokeDynamic支持
Pub Date : 2012-06-14 DOI: 10.1145/2259051.2259059
E. Bodden
Java Specification Request (JSR) 292, which was realized with Java 7, defines a new java bytecode called invokedynamic, which can be used to call methods by name, without determining statically where the implementation of the called method is to be found. This mechanism eases the implementation of highly dynamic languages for the Java Virtual Machine. In this work we explain how we extended the Soot framework for static analysis and transformation of Java programs to properly handle invokedynamic bytecodes. Our implementation required changes on all levels of Soot, as all intermediate representations needed to be adapted appropriately. We comment on the design decisions taken and how users can use our implementation to statically process or generate invokedynamic instructions. Our support has been integrated into Soot release 2.5.0 and is thus already available for everyone to use.
Java Specification Request (JSR) 292是用Java 7实现的,它定义了一个名为invokedynamic的新Java字节码,可用于按名称调用方法,而无需静态地确定被调用方法的实现在哪里。这种机制简化了Java虚拟机中高度动态语言的实现。在本文中,我们将解释如何扩展用于Java程序的静态分析和转换的Soot框架,以正确处理invokedynamic字节码。我们的实现需要对各级Soot进行更改,因为所有中间表示都需要适当地进行调整。我们评论了所采取的设计决策,以及用户如何使用我们的实现来静态处理或生成invokedynamic指令。我们的支持已经集成到Soot 2.5.0版本中,因此每个人都可以使用。
{"title":"InvokeDynamic support in Soot","authors":"E. Bodden","doi":"10.1145/2259051.2259059","DOIUrl":"https://doi.org/10.1145/2259051.2259059","url":null,"abstract":"Java Specification Request (JSR) 292, which was realized with Java 7, defines a new java bytecode called invokedynamic, which can be used to call methods by name, without determining statically where the implementation of the called method is to be found. This mechanism eases the implementation of highly dynamic languages for the Java Virtual Machine.\u0000 In this work we explain how we extended the Soot framework for static analysis and transformation of Java programs to properly handle invokedynamic bytecodes. Our implementation required changes on all levels of Soot, as all intermediate representations needed to be adapted appropriately. We comment on the design decisions taken and how users can use our implementation to statically process or generate invokedynamic instructions.\u0000 Our support has been integrated into Soot release 2.5.0 and is thus already available for everyone to use.","PeriodicalId":198433,"journal":{"name":"State Of the Art in Java Program Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2012-06-14","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114736737","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 10
Side-effect analysis with fast escape filter 副作用分析与快速逃逸过滤器
Pub Date : 2012-06-14 DOI: 10.1145/2259051.2259054
Binxian Tao, Ju Qian, Xiaoyu Zhou
Side-effect analysis is a fundamental static analysis used to determine the memory locations modified or used by each program entity. For the programs with pointers, the analysis can be very imprecise. To improve the precision of side-effect analysis, many approaches design more elaborate background pointer analyses in order to obtain smaller side-effect sets, but very few approaches consider to achieve better precisions by refining the side-effect analysis algorithms themselves. To address the problem, this paper presents a new side-effect analysis approach that uses Gay and Steensgaard's fast escape analysis to filter superfluous side-effects. The approach does not need to modify the background pointer analysis and can filter side-effects in the intraprocedural level and the interprocedural level. The experimental results show that it can effectively improve the analysis precision within a short extra time.
副作用分析是一种基本的静态分析,用于确定每个程序实体修改或使用的内存位置。对于带有指针的程序,分析可能非常不精确。为了提高副作用分析的精度,许多方法设计了更精细的背景指针分析,以获得更小的副作用集,但很少有方法考虑通过改进副作用分析算法本身来达到更高的精度。为了解决这个问题,本文提出了一种新的副作用分析方法,该方法使用Gay和Steensgaard的快速逸出分析来过滤多余的副作用。该方法不需要修改后台指针分析,并且可以在过程内级别和过程间级别过滤副作用。实验结果表明,该方法能在较短的额外时间内有效提高分析精度。
{"title":"Side-effect analysis with fast escape filter","authors":"Binxian Tao, Ju Qian, Xiaoyu Zhou","doi":"10.1145/2259051.2259054","DOIUrl":"https://doi.org/10.1145/2259051.2259054","url":null,"abstract":"Side-effect analysis is a fundamental static analysis used to determine the memory locations modified or used by each program entity. For the programs with pointers, the analysis can be very imprecise. To improve the precision of side-effect analysis, many approaches design more elaborate background pointer analyses in order to obtain smaller side-effect sets, but very few approaches consider to achieve better precisions by refining the side-effect analysis algorithms themselves. To address the problem, this paper presents a new side-effect analysis approach that uses Gay and Steensgaard's fast escape analysis to filter superfluous side-effects. The approach does not need to modify the background pointer analysis and can filter side-effects in the intraprocedural level and the interprocedural level. The experimental results show that it can effectively improve the analysis precision within a short extra time.","PeriodicalId":198433,"journal":{"name":"State Of the Art in Java Program Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2012-06-14","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129183214","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Program analysis and transformation for holistic optimization of database applications 数据库应用程序整体优化的程序分析与转换
Pub Date : 2012-06-14 DOI: 10.1145/2259051.2259057
Karthik Ramachandra, Ravindra Guravannavar, S. Sudarshan
We describe DBridge, a novel program analysis and transformation tool to optimize database and web service access. Traditionally, rewrite of queries and programs are done independently, by the database query optimizer and the language compiler respectively, leaving out many optimization opportunities. Our tool aims to bridge this gap by performing holistic transformations, which include both program and query rewrite. There has been earlier research in this area involving program analysis and transformation for automatically rewriting database applications to perform optimizations; for example, our earlier work has addressed batching or asynchronous submission of iterative queries, and prefetching query results. DBridge implements these techniques for Java programs and internally uses Soot, a Java optimization framework, for static analysis and transformation. DBridge can perform such optimizations on Java programs that use the JDBC API to access the database. It is currently being extended to handle the Hibernate API, and Web Services. In this paper, we describe the program transformations that DBridge can perform. We then discuss the design and implementation of DBridge with a focus on how the Soot framework has been used to achieve these goals. Finally, we conclude by discussing some of the future directions for our tool.
我们描述了DBridge,一个新颖的程序分析和转换工具,用于优化数据库和web服务访问。传统上,查询和程序的重写分别由数据库查询优化器和语言编译器独立完成,从而遗漏了许多优化机会。我们的工具旨在通过执行整体转换(包括程序和查询重写)来弥合这一差距。这个领域的早期研究涉及程序分析和转换,以自动重写数据库应用程序以执行优化;例如,我们早期的工作已经解决了迭代查询的批处理或异步提交,以及预取查询结果。DBridge为Java程序实现了这些技术,并在内部使用Java优化框架Soot进行静态分析和转换。DBridge可以对使用JDBC API访问数据库的Java程序执行这样的优化。它目前正在被扩展以处理Hibernate API和Web服务。在本文中,我们描述了DBridge可以执行的程序转换。然后我们讨论DBridge的设计和实现,重点是如何使用Soot框架来实现这些目标。最后,我们通过讨论我们的工具的一些未来方向来结束。
{"title":"Program analysis and transformation for holistic optimization of database applications","authors":"Karthik Ramachandra, Ravindra Guravannavar, S. Sudarshan","doi":"10.1145/2259051.2259057","DOIUrl":"https://doi.org/10.1145/2259051.2259057","url":null,"abstract":"We describe DBridge, a novel program analysis and transformation tool to optimize database and web service access. Traditionally, rewrite of queries and programs are done independently, by the database query optimizer and the language compiler respectively, leaving out many optimization opportunities. Our tool aims to bridge this gap by performing holistic transformations, which include both program and query rewrite.\u0000 There has been earlier research in this area involving program analysis and transformation for automatically rewriting database applications to perform optimizations; for example, our earlier work has addressed batching or asynchronous submission of iterative queries, and prefetching query results. DBridge implements these techniques for Java programs and internally uses Soot, a Java optimization framework, for static analysis and transformation. DBridge can perform such optimizations on Java programs that use the JDBC API to access the database. It is currently being extended to handle the Hibernate API, and Web Services.\u0000 In this paper, we describe the program transformations that DBridge can perform. We then discuss the design and implementation of DBridge with a focus on how the Soot framework has been used to achieve these goals. Finally, we conclude by discussing some of the future directions for our tool.","PeriodicalId":198433,"journal":{"name":"State Of the Art in Java Program Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2012-06-14","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132334395","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 18
Collection disjointness analysis 集合脱节分析
Pub Date : 2012-06-14 DOI: 10.1145/2259051.2259058
Hang Chu, Patrick Lam
We present a static analysis which identifies disjointness relations between collections in Java. We have implemented our analysis as a primarily intraprocedural dataflow analysis framework using Soot. We handle method calls using developer-provided annotations, with some inference support. We include experimental results of the from our disjointness analysis on a pair of benchmarks.
我们提出了一个静态分析来识别Java中集合之间的不连接关系。我们已经使用Soot将我们的分析实现为主要的过程内数据流分析框架。我们使用开发人员提供的注释处理方法调用,并提供一些推理支持。我们在一对基准测试中包含了我们的不连接性分析的实验结果。
{"title":"Collection disjointness analysis","authors":"Hang Chu, Patrick Lam","doi":"10.1145/2259051.2259058","DOIUrl":"https://doi.org/10.1145/2259051.2259058","url":null,"abstract":"We present a static analysis which identifies disjointness relations between collections in Java. We have implemented our analysis as a primarily intraprocedural dataflow analysis framework using Soot. We handle method calls using developer-provided annotations, with some inference support. We include experimental results of the from our disjointness analysis on a pair of benchmarks.","PeriodicalId":198433,"journal":{"name":"State Of the Art in Java Program Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2012-06-14","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123776447","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Soot-based implementation of a demand-driven reaching definitions analysis 基于烟灰的需求驱动到达定义分析的实现
Pub Date : 2012-06-14 DOI: 10.1145/2259051.2259055
Longwen Lu, Cheng Zhang, Jianjun Zhao
As a classical data-flow analysis, reaching definitions analysis is the corner stone of various techniques, such as code optimization and program slicing. The built-in data-flow analysis framework in Soot has been implemented in the traditional iterative style. While being able to meet general requirements for implementation of data flow analyses, the framework may be less efficient for a certain type of analyses in which the complete data-flow solution is unnecessary. In this paper, we introduce our Soot-based implementation of an inter-procedural demand-driven reaching definitions analysis. For a demand for reaching definitions facts, the analysis only explores relevant program points and variables, saving a considerable amount of computation. Preliminary results show that the implementation can be much more efficient than its traditional counterpart in several scenarios. The Soot framework has greatly facilitated the implementation by providing abundant basic analysis results via well designed APIs.
作为一种经典的数据流分析,达到定义分析是代码优化和程序切片等各种技术的基础。烟尘中内置的数据流分析框架以传统的迭代方式实现。虽然能够满足数据流分析实现的一般需求,但对于不需要完整数据流解决方案的特定类型的分析,该框架可能效率较低。在本文中,我们介绍了基于烟灰的程序间需求驱动的到达定义分析的实现。为了达到定义事实的要求,分析只挖掘相关的程序点和变量,节省了大量的计算。初步结果表明,在一些场景中,该实现可以比传统的实现更有效。Soot框架通过精心设计的api提供丰富的基本分析结果,极大地促进了实现。
{"title":"Soot-based implementation of a demand-driven reaching definitions analysis","authors":"Longwen Lu, Cheng Zhang, Jianjun Zhao","doi":"10.1145/2259051.2259055","DOIUrl":"https://doi.org/10.1145/2259051.2259055","url":null,"abstract":"As a classical data-flow analysis, reaching definitions analysis is the corner stone of various techniques, such as code optimization and program slicing. The built-in data-flow analysis framework in Soot has been implemented in the traditional iterative style. While being able to meet general requirements for implementation of data flow analyses, the framework may be less efficient for a certain type of analyses in which the complete data-flow solution is unnecessary.\u0000 In this paper, we introduce our Soot-based implementation of an inter-procedural demand-driven reaching definitions analysis. For a demand for reaching definitions facts, the analysis only explores relevant program points and variables, saving a considerable amount of computation. Preliminary results show that the implementation can be much more efficient than its traditional counterpart in several scenarios. The Soot framework has greatly facilitated the implementation by providing abundant basic analysis results via well designed APIs.","PeriodicalId":198433,"journal":{"name":"State Of the Art in Java Program Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2012-06-14","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125609562","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Inter-procedural data-flow analysis with IFDS/IDE and Soot 使用IFDS/IDE和Soot进行程序间数据流分析
Pub Date : 2012-06-14 DOI: 10.1145/2259051.2259052
E. Bodden
The IFDS and IDE frameworks by Reps, Horwitz and Sagiv are two general frameworks for the inter-procedural analysis of data-flow problems with distributive flow functions over finite domains. Many data-flow problems do have distributive flow functions and are thus expressible as IFDS or IDE problems, reaching from basic analyses like truly-live variables to complex analyses for problems from the current literature such as typestate and secure information-flow. In this work we describe our implementation of a generic IFDS/IDE solver on top of Soot and contrast it with an IFDS implementation in the Watson Libraries for Analysis (WALA), both from a user's perspective and in terms of the implementation. While WALA's implementation is geared much towards memory efficiency, ours is currently geared more towards extensibility and ease of use and we focus on efficiency as a secondary goal. We further discuss possible extensions to our IFDS/IDE implementation that may be useful to support a wider range of analyses.
Reps、Horwitz和Sagiv的IFDS和IDE框架是用于有限域上分布流函数的数据流问题的程序间分析的两个通用框架。许多数据流问题确实具有分布流函数,因此可以表示为IFDS或IDE问题,从像真实活变量这样的基本分析到像当前文献中的类型状态和安全信息流等问题的复杂分析。在这项工作中,我们描述了基于Soot的通用IFDS/IDE求解器的实现,并从用户的角度和实现方面将其与Watson库for Analysis (WALA)中的IFDS实现进行了对比。虽然WALA的实现主要面向内存效率,但我们目前更关注可扩展性和易用性,我们将效率作为次要目标。我们将进一步讨论IFDS/IDE实现的可能扩展,这些扩展可能有助于支持更广泛的分析。
{"title":"Inter-procedural data-flow analysis with IFDS/IDE and Soot","authors":"E. Bodden","doi":"10.1145/2259051.2259052","DOIUrl":"https://doi.org/10.1145/2259051.2259052","url":null,"abstract":"The IFDS and IDE frameworks by Reps, Horwitz and Sagiv are two general frameworks for the inter-procedural analysis of data-flow problems with distributive flow functions over finite domains. Many data-flow problems do have distributive flow functions and are thus expressible as IFDS or IDE problems, reaching from basic analyses like truly-live variables to complex analyses for problems from the current literature such as typestate and secure information-flow.\u0000 In this work we describe our implementation of a generic IFDS/IDE solver on top of Soot and contrast it with an IFDS implementation in the Watson Libraries for Analysis (WALA), both from a user's perspective and in terms of the implementation. While WALA's implementation is geared much towards memory efficiency, ours is currently geared more towards extensibility and ease of use and we focus on efficiency as a secondary goal.\u0000 We further discuss possible extensions to our IFDS/IDE implementation that may be useful to support a wider range of analyses.","PeriodicalId":198433,"journal":{"name":"State Of the Art in Java Program Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2012-06-14","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116642312","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 128
Rethinking Soot for summary-based whole-program analysis 基于摘要的全程序分析烟尘的再思考
Pub Date : 2012-06-14 DOI: 10.1145/2259051.2259053
Dacong Yan, G. Xu, A. Rountev
Whole-program static analysis has been extensively studied and widely used in the past few decades. For modern object-oriented programs, scalability has become an important issue for using whole-program analysis in real-world tools. In addition, the ever-increasing size of libraries (e.g., the JDK library) and frameworks exacerbates the scalability problems. To achieve the desired level of analysis performance, an effective approach could be to generate and apply analysis summary information for library methods. In this paper, such an approach is referred to as a summary-based whole-program analysis. The challenges for this technique are twofold: (1) carefully designed abstractions and algorithms are needed to create and use client-independent and analysis-specific library summary information; and (2) support for summary generation and application should be effectively incorporated into existing analysis infrastructures. This paper focuses on the second challenge. It uses Soot, a widely-used program analysis framework for Java, as a vehicle to explore some of the important issues in providing analysis infrastructures with capabilities for summary-based analysis. Experimental studies are presented to show that significant savings can potentially be achieved by making a whole-program alias analysis summary-based. To actually achieve these savings, the paper proposes to extend Soot to add support for summary-based analysis. Finally, a brief discussion of the required framework extensions is presented.
在过去的几十年里,全程序静态分析得到了广泛的研究和应用。对于现代面向对象的程序,可伸缩性已经成为在现实世界的工具中使用整个程序分析的一个重要问题。此外,不断增加的库(例如JDK库)和框架的规模加剧了可伸缩性问题。为了达到期望的分析性能水平,一个有效的方法可能是为库方法生成和应用分析摘要信息。在本文中,这种方法被称为基于摘要的全程序分析。这种技术的挑战是双重的:(1)需要精心设计抽象和算法来创建和使用独立于客户端和特定于分析的库摘要信息;(2)对摘要生成和应用的支持应该有效地合并到现有的分析基础结构中。本文关注的是第二个挑战。它使用Soot(一种广泛使用的Java程序分析框架)作为工具,探索在为分析基础设施提供基于摘要的分析功能方面的一些重要问题。实验研究表明,通过基于摘要的全程序别名分析可以潜在地实现显著的节省。为了实际实现这些节省,本文建议扩展Soot以增加对基于摘要的分析的支持。最后,简要讨论了所需的框架扩展。
{"title":"Rethinking Soot for summary-based whole-program analysis","authors":"Dacong Yan, G. Xu, A. Rountev","doi":"10.1145/2259051.2259053","DOIUrl":"https://doi.org/10.1145/2259051.2259053","url":null,"abstract":"Whole-program static analysis has been extensively studied and widely used in the past few decades. For modern object-oriented programs, scalability has become an important issue for using whole-program analysis in real-world tools. In addition, the ever-increasing size of libraries (e.g., the JDK library) and frameworks exacerbates the scalability problems. To achieve the desired level of analysis performance, an effective approach could be to generate and apply analysis summary information for library methods. In this paper, such an approach is referred to as a summary-based whole-program analysis. The challenges for this technique are twofold: (1) carefully designed abstractions and algorithms are needed to create and use client-independent and analysis-specific library summary information; and (2) support for summary generation and application should be effectively incorporated into existing analysis infrastructures.\u0000 This paper focuses on the second challenge. It uses Soot, a widely-used program analysis framework for Java, as a vehicle to explore some of the important issues in providing analysis infrastructures with capabilities for summary-based analysis. Experimental studies are presented to show that significant savings can potentially be achieved by making a whole-program alias analysis summary-based. To actually achieve these savings, the paper proposes to extend Soot to add support for summary-based analysis. Finally, a brief discussion of the required framework extensions is presented.","PeriodicalId":198433,"journal":{"name":"State Of the Art in Java Program Analysis","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2012-06-14","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116234443","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 23
期刊
State Of the Art in Java Program Analysis
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1