Skip to content

Commit 5fe800b

Browse files
committed
More internals do generic dispatch, fix NA handling in CastIntegerNode
1 parent 6133faa commit 5fe800b

File tree

4 files changed

+12
-3
lines changed

4 files changed

+12
-3
lines changed

com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/IsFiniteFunctions.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ protected RLogicalVector doFunComplex(RAbstractComplexVector x, ComplexPredicate
146146
}
147147
}
148148

149-
@RBuiltin(name = "is.finite", kind = PRIMITIVE, parameterNames = {"x"}, behavior = PURE)
149+
@RBuiltin(name = "is.finite", kind = PRIMITIVE, dispatch = INTERNAL_GENERIC, parameterNames = {"x"}, behavior = PURE)
150150
public abstract static class IsFinite extends Adapter {
151151

152152
static {
@@ -184,7 +184,7 @@ protected RLogicalVector doIsFinite(RAbstractComplexVector vec) {
184184
}
185185
}
186186

187-
@RBuiltin(name = "is.infinite", kind = PRIMITIVE, parameterNames = {"x"}, behavior = PURE)
187+
@RBuiltin(name = "is.infinite", kind = PRIMITIVE, dispatch = INTERNAL_GENERIC, parameterNames = {"x"}, behavior = PURE)
188188
public abstract static class IsInfinite extends Adapter {
189189

190190
static {

com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/IsTypeFunctions.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,11 @@ protected byte isRecursive(@SuppressWarnings("unused") RExternalPtr obj) {
136136
return RRuntime.LOGICAL_FALSE;
137137
}
138138

139+
@Specialization
140+
protected byte isRecursive(@SuppressWarnings("unused") RSymbol symbol) {
141+
return RRuntime.LOGICAL_FALSE;
142+
}
143+
139144
@Fallback
140145
protected byte isRecursiveFallback(@SuppressWarnings("unused") Object value) {
141146
return RRuntime.LOGICAL_TRUE;

com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/CastIntegerNode.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ protected RAbstractIntVector doDoubleVector(RAbstractDoubleVector x,
176176
if (useClosure()) {
177177
return (RAbstractIntVector) castWithReuse(RType.Integer, operand, naProfile.getConditionProfile());
178178
}
179-
return vectorCopy(operand, naCheck.convertDoubleVectorToIntData(operand), naCheck.neverSeenNA());
179+
return vectorCopy(operand, naCheck.convertDoubleVectorToIntData(operand), naCheck.neverSeenNAOrNaN());
180180
}
181181

182182
@Specialization

com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ops/na/NACheck.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,10 @@ public boolean neverSeenNA() {
228228
return state != CHECK && !seenNaN;
229229
}
230230

231+
public boolean neverSeenNAOrNaN() {
232+
return neverSeenNA() && seenNaN;
233+
}
234+
231235
public boolean hasNeverBeenTrue() {
232236
return neverSeenNA();
233237
}

0 commit comments

Comments
 (0)