逃逸分析与数组存储优化技术解析
逃逸属性 E 的定义与分析
逃逸分析在程序分析中起着重要作用,它会对每个程序点 p 处,从作用域内的某个变量或字段可达对象的创建点集合进行过近似处理。为了更好地理解逃逸分析,我们首先需要定义可达对象的概念。
设 τ ∈ Typing , σ = ⟨φ, µ⟩ ∈ Στ 且 S ⊆ Στ ,在 σ 中可达对象的集合 Oτ(σ) 定义如下:
- O0τ(σ) = ∅
- Oi+1τ(σ) = {µφ(v) | v ∈ dom(τ), φ(v) ∈ Loc} ∪ {µ(o.φ(f)) | o ∈ Oiτ(σ), f ∈ dom(F(o.π)), o.φ(f) ∈ Loc}
同时,我们定义 αEτ (S) = {o.π | σ ∈ S 且 o ∈ Oτ(σ)} ⊆ Π 。需要注意的是,类型为 int 的变量和字段对 αEτ 没有贡献。
例如,在图 3 中, Oτ(⟨φ1, µ1⟩) = {o1, o2} , αEτ (⟨φ1, µ1⟩) = {π, π2} ,而 o4 ∉ Oτ(⟨φ1, µ1⟩) ,因为 o4 无法从 φ1 的变量中到达。 </
超级会员免费看
订阅专栏 解锁全文
178

被折叠的 条评论
为什么被折叠?



