一个指针和引用的模型

因为我们进行的是上下文无关的分析,所以只需要断定一个给定的变量u能够指向一个给定的堆对象h,不需要指出在程序中的什么地方u可能指向h,或者在什么样的上下文中u可以指向h请注意,变量可以通过它的全名来命名。在Java中,这个全名包括了模块、类、方法和方法中的块以及变量名本身。因此,我们可以区分标识符相同的多个变量。
假设我们的语言可以用下列方式来表示和操作引用:

1)某些程序变量的类型为“指向T的指针”或“指向r的引用”,其中T是一个类型。这些变量可以是静态的,也可能位于运行时刻栈中。我们简单地称它们为变量。

相关指针分析

上下文相关性可以大大提高过程间分析的精确性。我们讨论了两种过程间分析的方法,一种基于克隆的方法,另一种是基于摘要的方法。那么我们应该使用哪一个方法呢?

在计算指针指向信息的摘要时有几个难点。首先,这些摘要很大。每个方法的摘要必须包括这个函数和所有被调用者可能做出的所有更新所产生的影响。这些影响需要用输人参数来表示。也就是说,一个方法可能改变的指向集合包括:所有可通过静态变量及输人参数到达的所有数据的指向集合,以及由该方法及被调用方法所创建的全部对象的指向集合。虽然人们已经给 出了复杂的解决方案,但是现在还没有解决方法可以被应用到大型程序中。即使摘要可以通过自底向上的方式计算得到,但如何在一个典型的自顶向下处理过程中计算所有上下文环境下的指针指向集合是一个更大的问题。因为上下文环境的数量可能按照指数级增长。这样的信息对于一些全局性查询是必须的,比如在代码中找出指向某个特定对象的所有指针。

«1»
最近发表
控制面板
您好,欢迎到访网站!
  [查看权限]
网站分类
搜索
Tags列表
网站收藏
图标汇集
  • 订阅本站的 RSS 2.0 新闻聚合
友情链接

热门搜索: 外链域名 高外链域名 高收录域名

Copyright www.thyst.cn. Some Rights Reserved.