Skip to content

Commit 210a06a

Browse files
committed
8287227: Shenandoah: A couple of virtual thread tests failed with iu mode even without Loom enabled.
Reviewed-by: shade, rkennke
1 parent 64f95cf commit 210a06a

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
@@ -1335,6 +1335,7 @@ void ShenandoahBarrierC2Support::pin_and_expand(PhaseIdealLoop* phase) {
13351335
Node* orig_ctrl = ctrl;
13361336

13371337
Node* raw_mem = fixer.find_mem(ctrl, lrb);
1338+
Node* raw_mem_for_ctrl = fixer.find_mem(ctrl, NULL);
13381339

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

@@ -1436,6 +1437,7 @@ void ShenandoahBarrierC2Support::pin_and_expand(PhaseIdealLoop* phase) {
14361437
phase->set_ctrl(n, region);
14371438
follow_barrier_uses(n, ctrl, uses, phase);
14381439
}
1440+
fixer.record_new_ctrl(ctrl, region, raw_mem, raw_mem_for_ctrl);
14391441
}
14401442
// Done expanding load-reference-barriers.
14411443
assert(ShenandoahBarrierSetC2::bsc2()->state()->load_reference_barriers_count() == 0, "all load reference barrier nodes should have been replaced");
@@ -2671,6 +2673,13 @@ void MemoryGraphFixer::fix_mem(Node* ctrl, Node* new_ctrl, Node* mem, Node* mem_
26712673
#endif
26722674
}
26732675

2676+
void MemoryGraphFixer::record_new_ctrl(Node* ctrl, Node* new_ctrl, Node* mem, Node* mem_for_ctrl) {
2677+
if (mem_for_ctrl != mem && new_ctrl != ctrl) {
2678+
_memory_nodes.map(ctrl->_idx, mem);
2679+
_memory_nodes.map(new_ctrl->_idx, mem_for_ctrl);
2680+
}
2681+
}
2682+
26742683
MergeMemNode* MemoryGraphFixer::allocate_merge_mem(Node* mem, Node* rep_proj, Node* rep_ctrl) const {
26752684
MergeMemNode* mm = MergeMemNode::make(mem);
26762685
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)