From 5021a0789f8b08a877f1b2a1e2fdbfb6fd8a0d86 Mon Sep 17 00:00:00 2001 From: William Kemper Date: Sat, 24 Jun 2023 06:44:04 +0000 Subject: [PATCH] 8287227: Shenandoah: A couple of virtual thread tests failed with iu mode even without Loom enabled. Backport-of: 210a06a287521a554316a9052bd9fdf616c7b884 --- src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp | 9 +++++++++ src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.hpp | 2 ++ 2 files changed, 11 insertions(+) diff --git a/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp b/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp index 21587ba2d66..ef848e7ba95 100644 --- a/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp +++ b/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp @@ -1334,6 +1334,7 @@ void ShenandoahBarrierC2Support::pin_and_expand(PhaseIdealLoop* phase) { Node* orig_ctrl = ctrl; Node* raw_mem = fixer.find_mem(ctrl, lrb); + Node* raw_mem_for_ctrl = fixer.find_mem(ctrl, NULL); IdealLoopTree *loop = phase->get_loop(ctrl); @@ -1435,6 +1436,7 @@ void ShenandoahBarrierC2Support::pin_and_expand(PhaseIdealLoop* phase) { phase->set_ctrl(n, region); follow_barrier_uses(n, ctrl, uses, phase); } + fixer.record_new_ctrl(ctrl, region, raw_mem, raw_mem_for_ctrl); } // Done expanding load-reference-barriers. assert(ShenandoahBarrierSetC2::bsc2()->state()->load_reference_barriers_count() == 0, "all load reference barrier nodes should have been replaced"); @@ -2670,6 +2672,13 @@ void MemoryGraphFixer::fix_mem(Node* ctrl, Node* new_ctrl, Node* mem, Node* mem_ #endif } +void MemoryGraphFixer::record_new_ctrl(Node* ctrl, Node* new_ctrl, Node* mem, Node* mem_for_ctrl) { + if (mem_for_ctrl != mem && new_ctrl != ctrl) { + _memory_nodes.map(ctrl->_idx, mem); + _memory_nodes.map(new_ctrl->_idx, mem_for_ctrl); + } +} + MergeMemNode* MemoryGraphFixer::allocate_merge_mem(Node* mem, Node* rep_proj, Node* rep_ctrl) const { MergeMemNode* mm = MergeMemNode::make(mem); mm->set_memory_at(_alias, rep_proj); diff --git a/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.hpp b/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.hpp index 86a74011f5a..c9404af5ff8 100644 --- a/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.hpp +++ b/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.hpp @@ -132,6 +132,8 @@ class MemoryGraphFixer : public ResourceObj { int alias() const { return _alias; } Node* collect_memory_for_infinite_loop(const Node* in); + + void record_new_ctrl(Node* ctrl, Node* region, Node* mem, Node* mem_for_ctrl); }; class ShenandoahCompareAndSwapPNode : public CompareAndSwapPNode {