[发明专利]一种无损压缩系统依赖图的方法及装置有效
申请号: | 201210584770.6 | 申请日: | 2012-12-28 |
公开(公告)号: | CN103902273B | 公开(公告)日: | 2017-07-07 |
发明(设计)人: | 李丰;霍玮;陈聪明;衷璐洁;张兆庆;冯晓兵 | 申请(专利权)人: | 华为技术有限公司;中国科学院计算技术研究所 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 北京中博世达专利商标代理有限公司11274 | 代理人: | 申健 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 无损 压缩 系统 依赖 方法 装置 | ||
技术领域
本发明涉及计算机领域,尤其涉及一种无损压缩系统依赖图的方法及装置。
背景技术
程序静态切片是一种重要的程序分析技术,广泛应用于程序理解、测试、调试、验证、维护,能够帮助程序员提取所关注代码,降低程序分析、错误验证、维护等领域。目前,主流的切片工具均采用基于系统依赖图的图可达算法。
系统依赖图(System Dependence Graph,SDG)是一个有向图,是对程序依赖图(Program Dependence Graph,PDG)的扩展。以系统依赖图为基础的程序切片算法,是通过遍历系统依赖图,从中提取出可能影响某个变量在程序中某个位置上的取值的程序代码。但是现有的切片算法开销与精度都无法满足大规模使用程序的需求。
因此,为了解决上述问题,现有技术通常采用的技术包括:一、通过提高别名分析精度降低SDG的规模,因为SDG的规模不仅决定其自身的计算与存储的时空开销,还直接影响切片的效率。其中,别名分析,也称指针分析,是一种识别程序中可能用两种以上的方法访问的存储位置的静态分析技术。别名分析所得出的结果是基于SDG的程序切片技术中用于创建系统依赖图时所需的输入之一。二、通过限制切片算法的上下文敏感性(Context Sensitivity)来减少切片算法遍历SDG的开销。
在实现上述降低SDG规模和减少切片算法的时空开销的过程中,发明人发现现有技术中至少存在如下问题:
提高指针分析的精度虽然可以适度降低SDG的规模,但高精度的指针分析算法本身不仅需要高昂的时空开销,也几乎无助于切片精度的提高。而采用限制切片算法的上下文敏感性来缓解遍历SDG的开销,会使切片的精度降低。
发明内容
本发明的实施例提供一种无损压缩系统依赖图的方法及装置,能够实现系统依赖图的无损压缩,并降低系统依赖图的规模,从而降低以系统依赖图为基础的切片算法的开销。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供一种无损压缩系统依赖图的方法,包括:
根据别名分析信息获取程序中所有变量间的等价关系,并根据所述等价关系将所有变量分为不同的等价类,其中,所述别名分析信息是根据别名分析算法得到的;
根据系统依赖图中的各个节点所代表的变量所属的等价类为所述系统依赖图中的各个节点设置键值;
根据所述系统依赖图中的各个节点的键值对所述系统依赖图进行压缩。
在第一种可能的实现方式中,结合第一方面,所述根据别名分析信息获取程序中所有变量间的等价关系,并根据所述等价关系将所有变量分为不同的等价类包括:
根据所述别名分析信息建立从第一变量集合到指向所述变量集合中每个变量的指针集合的幂集的映射f,所述第一变量集合为程序中所有变量的集合;
根据所述映射f建立从所述指针集合的幂集到第二变量集合的映射f′,以将所有变量分为不同的等价类;所述第二变量集合为被同一组指针所指向的变量的集合。
在第二种可能的实现方式中,结合第一方面或第一方面的第一种可能的实现方式,所述根据所述别名分析信息建立从第一变量集合到指向所述变量集合中每个变量的指针集合的幂集的映射f包括:
为程序中的每个指针变量建立一个由该指针变量所指向的变量构成的指向集,为所有指向集中出现的每个变量建立一个空集合;
将每个指针变量添加到该指针变量所指向的变量对应的空集合中,以得到所述映射f。
在第三种可能的实现方式中,结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,根据所述映射f建立从所述指针集合的幂集到第二变量集合的映射f′,以将所有变量分为不同的等价类包括:
建立第i个空集合,将所述映射f的定义域中一个变量var,以及所有被映射到f(var)的变量添加到所述第i个空集合中,得到第i个等价类,并对所述第i个等价类设置唯一的编号,并从所述映射f的定义域中删除添加到所述第i个空集合中的变量,直至映射f的定义域中的变量个数为0;其中,i的起始值为1,所述变量var表示映射f的定义域中的任意一个变量。
在第四种可能的实现方式中,结合第一方面或第一方面的第一种可能的实现方式至第一方面的第三种可能的实现方式,所述根据系统依赖图中的各个节点所代表的变量所属的等价类为所述系统依赖图中的各个节点设置键值包括:
将所述系统依赖图上的各个节点所代表的变量所属的等价类的编号对应设置为所述各个节点的键值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司;中国科学院计算技术研究所,未经华为技术有限公司;中国科学院计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210584770.6/2.html,转载请声明来源钻瓜专利网。