【技术实现步骤摘要】
一种无损压缩系统依赖图的方法及装置
本专利技术涉及计算机领域,尤其涉及一种无损压缩系统依赖图的方法及装置。
技术介绍
程序静态切片是一种重要的程序分析技术,广泛应用于程序理解、测试、调试、验证、维护,能够帮助程序员提取所关注代码,降低程序分析、错误验证、维护等领域。目前,主流的切片工具均采用基于系统依赖图的图可达算法。系统依赖图(SystemDependenceGraph,SDG)是一个有向图,是对程序依赖图(ProgramDependenceGraph,PDG)的扩展。以系统依赖图为基础的程序切片算法,是通过遍历系统依赖图,从中提取出可能影响某个变量在程序中某个位置上的取值的程序代码。但是现有的切片算法开销与精度都无法满足大规模使用程序的需求。因此,为了解决上述问题,现有技术通常采用的技术包括:一、通过提高别名分析精度降低SDG的规模,因为SDG的规模不仅决定其自身的计算与存储的时空开销,还直接影响切片的效率。其中,别名分析,也称指针分析,是一种识别程序中可能用两种以上的方法访问的存储位置的静态分析技术。别名分析所得出的结果是基于SDG的程序切片技术中用于创建系统依赖图时所需的输入之一。二、通过限制切片算法的上下文敏感性(ContextSensitivity)来减少切片算法遍历SDG的开销。在实现上述降低SDG规模和减少切片算法的时空开销的过程中,专利技术人发现现有技术中至少存在如下问题:提高指针分析的精度虽然可以适度降低SDG的规模,但高精度的指针分析算法本身不仅需要高昂的时空开销,也几乎无助于切片精度的提高。而采用限制切片算法的上下文敏感性来缓解遍历 ...
【技术保护点】
一种无损压缩系统依赖图的方法,其特征在于,包括:根据别名分析信息获取程序中所有变量间的等价关系,并根据所述等价关系将所有变量分为不同的等价类;其中,所述别名分析信息是根据别名分析算法得到的;根据系统依赖图中的各个节点所代表的变量所属的等价类为所述系统依赖图中的各个节点设置键值;根据所述系统依赖图中的各个节点的键值对所述系统依赖图进行压缩。
【技术特征摘要】
1.一种无损压缩系统依赖图的方法,其特征在于,包括:根据别名分析信息获取程序中所有变量间的等价关系,并根据所述等价关系将所有变量分为不同的等价类;其中,所述别名分析信息是根据别名分析算法得到的;根据系统依赖图中的各个节点所代表的变量所属的等价类为所述系统依赖图中的各个节点设置键值;根据所述系统依赖图中的各个节点的键值对所述系统依赖图进行压缩。2.根据权利要求1所述的无损压缩系统依赖图的方法,其特征在于,所述根据别名分析信息获取程序中所有变量间的等价关系,并根据所述等价关系将所有变量分为不同的等价类包括:根据所述别名分析信息建立从第一变量集合到指向所述变量集合中每个变量的指针集合的幂集的映射f,所述第一变量集合为程序中所有变量的集合;根据所述映射f建立从所述指针集合的幂集到第二变量集合的映射f',将所有变量分为不同的等价类;所述第二变量集合为被同一组指针所指向的变量的集合。3.根据权利要求2所述的无损压缩系统依赖图的方法,其特征在于,所述根据所述别名分析信息建立从第一变量集合到指向所述变量集合中每个变量的指针集合的幂集的映射f包括:为程序中的每个指针变量建立一个由该指针变量所指向的变量构成的指向集,为所有指向集中出现的每个变量建立一个空集合;将每个指针变量添加到该指针变量所指向的变量对应的空集合中,以得到所述映射f。4.根据权利要求2所述的无损压缩系统依赖图的方法,其特征在于,根据所述映射f建立从所述指针集合的幂集到第二变量集合的映射f',将所有变量分为不同的等价类包括:建立第i个空集合,将所述映射f的定义域中一个变量var,以及所有被映射到f(var)的变量添加到所述第i个空集合中,得到第i个等价类,并对所述第i个等价类设置编号,并从所述映射f的定义域中删除添加到所述第i个空集合中的变量,直至映射f的定义域中的变量个数为0;其中,i的起始值为1,所述变量var表示映射f的定义域中的任意一个变量。5.根据权利要求1至4任意一项所述的无损压缩系统依赖图的方法,其特征在于,所述根据系统依赖图中的各个节点所代表的变量所属的等价类为所述系统依赖图中的各个节点设置键值包括:将所述系统依赖图上的各个节点所代表的变量所属的等价类的编号对应设置为所述各个节点的键值。6.根据权利要求1至4任意一项所述的无损压缩系统依赖图的方法,其特征在于,所述根据所述系统依赖图中的各个节点的键值对所述系统依赖图进行压缩包括:若所述系统依赖图上的任意一个节点的前驱节点集合或者后继节点集合中的任意两个节点拥有相同的键值,并且所述任意两个节点中有一个是副作用节点,则将所述任意两个节点中的副作用节点的出入边依次转化为所述任意两个节点...
【专利技术属性】
技术研发人员:李丰,霍玮,陈聪明,衷璐洁,张兆庆,冯晓兵,
申请(专利权)人:华为技术有限公司,中国科学院计算技术研究所,
类型:发明
国别省市:广东;44