Skip to content

Commit a79ef82

Browse files
committed
[GR-49481] Remove explicit null check exceptions from genCheckCast and genInstanceof.
(cherry picked from commit 020b17f)
1 parent 9c24b11 commit a79ef82

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

compiler/src/org.graalvm.compiler.java/src/org/graalvm/compiler/java/BytecodeParser.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4406,7 +4406,7 @@ protected void genCheckCast(ResolvedJavaType resolvedType, ValueNode objectIn) {
44064406
if (profile.getNullSeen().isFalse()) {
44074407
SpeculationLog.Speculation speculation = mayUseTypeProfile();
44084408
if (speculation != null) {
4409-
object = nullCheckedValue(object);
4409+
object = addNonNullCast(object, InvalidateReprofile);
44104410
ResolvedJavaType singleType = profile.asSingleType();
44114411
if (singleType != null && checkedType.getType().isAssignableFrom(singleType)) {
44124412
LogicNode typeCheck = append(createInstanceOf(TypeReference.createExactTrusted(singleType), object, profile));
@@ -4469,7 +4469,7 @@ protected void genInstanceOf(ResolvedJavaType resolvedType, ValueNode objectIn)
44694469
LogicNode instanceOfNode = null;
44704470
if (profile != null) {
44714471
if (profile.getNullSeen().isFalse()) {
4472-
object = nullCheckedValue(object);
4472+
object = addNonNullCast(object, InvalidateReprofile);
44734473
boolean createGuard = true;
44744474
ResolvedJavaType singleType = profile.asSingleType();
44754475
if (singleType != null) {

compiler/src/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderContext.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,12 +127,16 @@ default <T extends ValueNode> T add(T value) {
127127
}
128128

129129
default ValueNode addNonNullCast(ValueNode value) {
130+
return addNonNullCast(value, DeoptimizationAction.None);
131+
}
132+
133+
default ValueNode addNonNullCast(ValueNode value, DeoptimizationAction action) {
130134
AbstractPointerStamp valueStamp = (AbstractPointerStamp) value.stamp(NodeView.DEFAULT);
131135
if (valueStamp.nonNull()) {
132136
return value;
133137
} else {
134138
LogicNode isNull = add(IsNullNode.create(value));
135-
FixedGuardNode fixedGuard = add(new FixedGuardNode(isNull, DeoptimizationReason.NullCheckException, DeoptimizationAction.None, true));
139+
FixedGuardNode fixedGuard = add(new FixedGuardNode(isNull, DeoptimizationReason.NullCheckException, action, true));
136140
Stamp newStamp = valueStamp.improveWith(StampFactory.objectNonNull());
137141
return add(PiNode.create(value, newStamp, fixedGuard));
138142
}

0 commit comments

Comments
 (0)