Object representatives: a uniform abstraction for pointer information

E. Bodden, Patrick Lam, L. Hendren
{"title":"Object representatives: a uniform abstraction for pointer information","authors":"E. Bodden, Patrick Lam, L. Hendren","doi":"10.14236/EWIC/VOCS2008.32","DOIUrl":null,"url":null,"abstract":"Pointer analyses enable many subsequent program analyses and transformations by statically disambiguating references to the heap. However, different client analyses may have different sets of pointer analysis needs, and each must pick some pointer analysis along the cost/precision spectrum to meet those needs. Some analysis clients employ combinations of pointer analyses to obtain better precision with reduced analysis times. Our goal is to ease the task of developing client analyses by enabling composition and substitutability for pointer analyses. We therefore propose object representatives, which statically represent runtime objects. A representative encapsulates the notion of object identity, as observed through the representative's aliasing relations with other representatives. Object representatives enable pointer analysis clients to disambiguate references to the heap in a uniform yet flexible way. Representatives can be generated from many combinations of pointer analyses, and pointer analyses can be freely exchanged and combined without changing client code. We believe that the use of object representatives brings many software engineering benefits to compiler implementations because, at compile time, object representatives are Java objects. We discuss our motivating case for object representatives, namely, the development of an abstract interpreter for tracematches, a language feature for runtime monitoring. We explain one particular algorithm for computing object representatives which combines flow-sensitive intraprocedural must-alias and must-not-alias analyses with a flow-insensitive, context-sensitive whole-program points-to analysis. In our experience, client analysis implementations can almost directly substitute object representatives for runtime objects, simplifying the design and implementation of such analyses.","PeriodicalId":247606,"journal":{"name":"BCS International Academic Conference","volume":"79 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2008-09-22","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"17","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"BCS International Academic Conference","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.14236/EWIC/VOCS2008.32","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 17

Abstract

Pointer analyses enable many subsequent program analyses and transformations by statically disambiguating references to the heap. However, different client analyses may have different sets of pointer analysis needs, and each must pick some pointer analysis along the cost/precision spectrum to meet those needs. Some analysis clients employ combinations of pointer analyses to obtain better precision with reduced analysis times. Our goal is to ease the task of developing client analyses by enabling composition and substitutability for pointer analyses. We therefore propose object representatives, which statically represent runtime objects. A representative encapsulates the notion of object identity, as observed through the representative's aliasing relations with other representatives. Object representatives enable pointer analysis clients to disambiguate references to the heap in a uniform yet flexible way. Representatives can be generated from many combinations of pointer analyses, and pointer analyses can be freely exchanged and combined without changing client code. We believe that the use of object representatives brings many software engineering benefits to compiler implementations because, at compile time, object representatives are Java objects. We discuss our motivating case for object representatives, namely, the development of an abstract interpreter for tracematches, a language feature for runtime monitoring. We explain one particular algorithm for computing object representatives which combines flow-sensitive intraprocedural must-alias and must-not-alias analyses with a flow-insensitive, context-sensitive whole-program points-to analysis. In our experience, client analysis implementations can almost directly substitute object representatives for runtime objects, simplifying the design and implementation of such analyses.
对象表示:指针信息的统一抽象
指针分析通过静态消除对堆的引用的歧义,支持许多后续的程序分析和转换。然而,不同的客户端分析可能有不同的指针分析需求集,每个客户端分析都必须根据成本/精度范围选择一些指针分析来满足这些需求。一些分析客户端使用指针分析的组合,以在减少分析时间的同时获得更高的精度。我们的目标是通过支持指针分析的组合和可替换性来简化开发客户端分析的任务。因此,我们提出对象表示,它静态地表示运行时对象。从代表与其他代表的混叠关系中可以看出,代表封装了对象身份的概念。对象表示使指针分析客户端能够以统一而灵活的方式消除对堆的引用的歧义。可以从指针分析的许多组合中生成代表,并且可以自由地交换和组合指针分析,而无需更改客户机代码。我们相信,对象表示的使用给编译器实现带来了许多软件工程上的好处,因为在编译时,对象表示是Java对象。我们将讨论对象表示的激励案例,即开发用于跟踪匹配的抽象解释器,这是一种用于运行时监视的语言特性。我们解释了一种用于计算对象表示的特定算法,该算法将流敏感的过程内必须别名和必须不别名分析与流不敏感的、上下文敏感的整个程序点分析相结合。根据我们的经验,客户端分析实现几乎可以直接用对象代表代替运行时对象,从而简化了这种分析的设计和实现。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 求助全文
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信