23 Star 19 Fork 75

src-openEuler / openjdk-1.8.0

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
8223486-split-if-update_uses-accesses-stale-idom-dat.patch 1.52 KB
一键复制 编辑 原始数据 按行查看 历史
Autistic_boyya 提交于 2024-04-19 11:49 . I9I0M2:update to 8u412
Subject: 8223486: split-if update_uses accesses stale idom data
---
hotspot/src/share/vm/opto/split_if.cpp | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/hotspot/src/share/vm/opto/split_if.cpp b/hotspot/src/share/vm/opto/split_if.cpp
index 94d680c11..636af191d 100644
--- a/hotspot/src/share/vm/opto/split_if.cpp
+++ b/hotspot/src/share/vm/opto/split_if.cpp
@@ -486,7 +486,9 @@ void PhaseIdealLoop::do_split_if( Node *iff ) {
}
_igvn.remove_dead_node(new_iff);
// Lazy replace IDOM info with the region's dominator
- lazy_replace( iff, region_dom );
+ lazy_replace(iff, region_dom);
+ lazy_update(region, region_dom); // idom must be update before handle_uses
+ region->set_req(0, NULL); // Break the self-cycle. Required for lazy_update to work on region
// Now make the original merge point go dead, by handling all its uses.
small_cache region_cache;
@@ -529,13 +531,8 @@ void PhaseIdealLoop::do_split_if( Node *iff ) {
--k;
} // End of while merge point has phis
- assert(region->outcnt() == 1, "Only self reference should remain"); // Just Self on the Region
- region->set_req(0, NULL); // Break the self-cycle
+ _igvn.remove_dead_node(region);
- // Any leftover bits in the splitting block must not have depended on local
- // Phi inputs (these have already been split-up). Hence it's safe to hoist
- // these guys to the dominating point.
- lazy_replace( region, region_dom );
#ifndef PRODUCT
if( VerifyLoopOptimizations ) verify();
#endif
--
2.19.1
1
https://gitee.com/src-openeuler/openjdk-1.8.0.git
git@gitee.com:src-openeuler/openjdk-1.8.0.git
src-openeuler
openjdk-1.8.0
openjdk-1.8.0
master

搜索帮助