Skip to content

Commit 5021a07

Browse files
William Kempershipilev
authored andcommitted
8287227: Shenandoah: A couple of virtual thread tests failed with iu mode even without Loom enabled.
Backport-of: 210a06a287521a554316a9052bd9fdf616c7b884
1 parent b8a65e0 commit 5021a07

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1334,6 +1334,7 @@ void ShenandoahBarrierC2Support::pin_and_expand(PhaseIdealLoop* phase) {
13341334
Node* orig_ctrl = ctrl;
13351335

13361336
Node* raw_mem = fixer.find_mem(ctrl, lrb);
1337+
Node* raw_mem_for_ctrl = fixer.find_mem(ctrl, NULL);
13371338

13381339
IdealLoopTree *loop = phase->get_loop(ctrl);
13391340

@@ -1435,6 +1436,7 @@ void ShenandoahBarrierC2Support::pin_and_expand(PhaseIdealLoop* phase) {
14351436
phase->set_ctrl(n, region);
14361437
follow_barrier_uses(n, ctrl, uses, phase);
14371438
}
1439+
fixer.record_new_ctrl(ctrl, region, raw_mem, raw_mem_for_ctrl);
14381440
}
14391441
// Done expanding load-reference-barriers.
14401442
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_
26702672
#endif
26712673
}
26722674

2675+
void MemoryGraphFixer::record_new_ctrl(Node* ctrl, Node* new_ctrl, Node* mem, Node* mem_for_ctrl) {
2676+
if (mem_for_ctrl != mem && new_ctrl != ctrl) {
2677+
_memory_nodes.map(ctrl->_idx, mem);
2678+
_memory_nodes.map(new_ctrl->_idx, mem_for_ctrl);
2679+
}
2680+
}
2681+
26732682
MergeMemNode* MemoryGraphFixer::allocate_merge_mem(Node* mem, Node* rep_proj, Node* rep_ctrl) const {
26742683
MergeMemNode* mm = MergeMemNode::make(mem);
26752684
mm->set_memory_at(_alias, rep_proj);

src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,8 @@ class MemoryGraphFixer : public ResourceObj {
132132
int alias() const { return _alias; }
133133

134134
Node* collect_memory_for_infinite_loop(const Node* in);
135+
136+
void record_new_ctrl(Node* ctrl, Node* region, Node* mem, Node* mem_for_ctrl);
135137
};
136138

137139
class ShenandoahCompareAndSwapPNode : public CompareAndSwapPNode {

0 commit comments

Comments
 (0)