8256046: Shenandoah: Mix-in NULL_PTR in non-strong ShLRBNode's type
Reviewed-by: roland, shade
diff --git a/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp b/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp
index 5ea607c..ed9c9b5 100644
--- a/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp
+++ b/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp
@@ -2945,7 +2945,12 @@
if (t == TypePtr::NULL_PTR) {
return t;
}
- return t->is_oopptr();
+
+ if (kind() == ShenandoahBarrierSet::AccessKind::NORMAL) {
+ return t;
+ }
+
+ return t->meet(TypePtr::NULL_PTR);
}
const Type* ShenandoahLoadReferenceBarrierNode::Value(PhaseGVN* phase) const {
@@ -2957,8 +2962,11 @@
return t2;
}
- const Type* type = t2->is_oopptr();
- return type;
+ if (kind() == ShenandoahBarrierSet::AccessKind::NORMAL) {
+ return t2;
+ }
+
+ return t2->meet(TypePtr::NULL_PTR);
}
Node* ShenandoahLoadReferenceBarrierNode::Identity(PhaseGVN* phase) {