diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/UpdateDiag.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/UpdateDiag.java index 1eaa5b17eff11588dc2b2b99bc81272719d85b50..9db416a6efd4a91baaae1971763b4fd6ab7f01a3 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/UpdateDiag.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/UpdateDiag.java @@ -90,7 +90,7 @@ public abstract class UpdateDiag extends RInvisibleBuiltinNode { int nrow = resultVector.getDimensions()[0]; int size = Math.min(nrow, resultVector.getDimensions()[1]); int pos = 0; - naCheck.enable(!resultVector.isComplete()); + naCheck.enable(resultVector); for (int i = 0; i < size; i++) { resultVector.updateDataAt(pos, valueVector.getDataAt(i % valueVector.getLength()), naCheck); pos += nrow + 1; @@ -110,7 +110,7 @@ public abstract class UpdateDiag extends RInvisibleBuiltinNode { int size = Math.min(resultVector.getDimensions()[0], resultVector.getDimensions()[1]); int nrow = resultVector.getDimensions()[0]; int pos = 0; - naCheck.enable(!resultVector.isComplete()); + naCheck.enable(resultVector); for (int i = 0; i < size; i++) { resultVector.updateDataAt(pos, valueVector.getDataAt(i % valueVector.getLength()), naCheck); pos += nrow + 1; diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/array/ArrayPositionCast.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/array/ArrayPositionCast.java index 6904958bc30fe97849d25f79d2d0768fdd266bd2..a9a70f2a664cbdb82df2582c83a0129092096996 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/array/ArrayPositionCast.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/array/ArrayPositionCast.java @@ -659,7 +659,7 @@ public abstract class ArrayPositionCast extends ArrayPositionsCastBase { int logicalVectorLength = operand.getLength(); int logicalVectorInd = 0; int[] data = new int[resultLength]; - naCheck.enable(!operand.isComplete()); + naCheck.enable(operand); int timesSeenFalse = 0; int timesSeenNA = 0; int i = 0; diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/array/read/AccessArrayNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/array/read/AccessArrayNode.java index 42cc3f0d73727ff0f766e5231a30dc66ca76f5c1..c39914478c57d7c429408e0d5dd6b0ac2215f5e8 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/array/read/AccessArrayNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/array/read/AccessArrayNode.java @@ -368,7 +368,7 @@ public abstract class AccessArrayNode extends RNode { int accSrcDimensions = vector.getLength() / srcDimSize; int accDstDimensions = resLength / p.getLength(); - elementNACheck.enable(!p.isComplete()); + elementNACheck.enable(p); for (int i = 0; i < p.getLength(); i++) { int dstArrayBase = accDstDimensions * i; int pos = p.getDataAt(i); @@ -1352,7 +1352,7 @@ public abstract class AccessArrayNode extends RNode { int accSrcDimensions = vector.getLength() / srcDimSize; int accDstDimensions = resLength / p.getLength(); - elementNACheck.enable(!p.isComplete()); + elementNACheck.enable(p); for (int i = 0; i < p.getLength(); i++) { int dstArrayBase = accDstDimensions * i; int pos = p.getDataAt(i); diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/BinaryArithmeticNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/BinaryArithmeticNode.java index ca31defef717cb4c7268e3c49f94a3b39e86a222..67602fb83ed29fc39cf02ccea30d332485c790b4 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/BinaryArithmeticNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/BinaryArithmeticNode.java @@ -750,8 +750,8 @@ public abstract class BinaryArithmeticNode extends RBuiltinNode { if (emptyVector.profile(length == 0)) { return RDataFactory.createEmptyDoubleVector(); } - leftNACheck.enable(!left.isComplete()); - rightNACheck.enable(!right.isComplete()); + leftNACheck.enable(left); + rightNACheck.enable(right); double[] result = new double[length]; for (int i = 0; i < length; ++i) { double leftValue = left.getDataAt(i); diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/BinaryBooleanNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/BinaryBooleanNode.java index 40bec6926fa771ed92988b51ca2b2782a1a1ffd0..cd90c95aa52a8089b6d3e0b197ba2bf6abe24d64 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/BinaryBooleanNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/BinaryBooleanNode.java @@ -1486,7 +1486,7 @@ public abstract class BinaryBooleanNode extends RBuiltinNode { private RLogicalVector performIntVectorOp(RAbstractIntVector left, double rightValue, boolean reverse) { int length = left.getLength(); byte[] result = new byte[length]; - leftNACheck.enable(!left.isComplete()); + leftNACheck.enable(left); rightNACheck.enable(rightValue); for (int i = 0; i < length; ++i) { int leftValue = left.getDataAt(i); @@ -1501,7 +1501,7 @@ public abstract class BinaryBooleanNode extends RBuiltinNode { private RLogicalVector performIntVectorOp(RAbstractIntVector left, String rightValue, boolean reverse) { int length = left.getLength(); byte[] result = new byte[length]; - leftNACheck.enable(!left.isComplete()); + leftNACheck.enable(left); rightNACheck.enable(rightValue); for (int i = 0; i < length; ++i) { String leftValue = RRuntime.intToString(left.getDataAt(i), false); @@ -1516,7 +1516,7 @@ public abstract class BinaryBooleanNode extends RBuiltinNode { private RLogicalVector performIntVectorOp(RAbstractIntVector left, RComplex rightValue, boolean reverse) { int length = left.getLength(); byte[] result = new byte[length]; - leftNACheck.enable(!left.isComplete()); + leftNACheck.enable(left); rightNACheck.enable(rightValue); for (int i = 0; i < length; ++i) { RComplex leftValue = RRuntime.int2complex(left.getDataAt(i)); @@ -1533,7 +1533,7 @@ public abstract class BinaryBooleanNode extends RBuiltinNode { private RLogicalVector performDoubleVectorOp(RAbstractDoubleVector left, double rightValue, boolean reverse) { int length = left.getLength(); byte[] result = new byte[length]; - leftNACheck.enable(!left.isComplete()); + leftNACheck.enable(left); rightNACheck.enable(rightValue); for (int i = 0; i < length; ++i) { double leftValue = left.getDataAt(i); @@ -1548,7 +1548,7 @@ public abstract class BinaryBooleanNode extends RBuiltinNode { private RLogicalVector performDoubleVectorOp(RAbstractDoubleVector left, String rightValue, boolean reverse) { int length = left.getLength(); byte[] result = new byte[length]; - leftNACheck.enable(!left.isComplete()); + leftNACheck.enable(left); rightNACheck.enable(rightValue); for (int i = 0; i < length; ++i) { String leftValue = RRuntime.doubleToString(left.getDataAt(i)); @@ -1563,7 +1563,7 @@ public abstract class BinaryBooleanNode extends RBuiltinNode { private RLogicalVector performDoubleVectorOp(RAbstractDoubleVector left, RComplex rightValue, boolean reverse) { int length = left.getLength(); byte[] result = new byte[length]; - leftNACheck.enable(!left.isComplete()); + leftNACheck.enable(left); rightNACheck.enable(rightValue); for (int i = 0; i < length; ++i) { RComplex leftValue = RRuntime.double2complex(left.getDataAt(i)); @@ -1580,7 +1580,7 @@ public abstract class BinaryBooleanNode extends RBuiltinNode { private RLogicalVector performLogicalVectorOp(RAbstractLogicalVector left, double rightValue, boolean reverse) { int length = left.getLength(); byte[] result = new byte[length]; - leftNACheck.enable(!left.isComplete()); + leftNACheck.enable(left); rightNACheck.enable(rightValue); for (int i = 0; i < length; ++i) { byte leftValue = left.getDataAt(i); @@ -1595,7 +1595,7 @@ public abstract class BinaryBooleanNode extends RBuiltinNode { private RLogicalVector performLogicalVectorOp(RAbstractLogicalVector left, String rightValue, boolean reverse) { int length = left.getLength(); byte[] result = new byte[length]; - leftNACheck.enable(!left.isComplete()); + leftNACheck.enable(left); rightNACheck.enable(rightValue); for (int i = 0; i < length; ++i) { String leftValue = RRuntime.logicalToString(left.getDataAt(i)); @@ -1610,7 +1610,7 @@ public abstract class BinaryBooleanNode extends RBuiltinNode { private RLogicalVector performLogicalVectorOp(RAbstractLogicalVector left, RComplex rightValue, boolean reverse) { int length = left.getLength(); byte[] result = new byte[length]; - leftNACheck.enable(!left.isComplete()); + leftNACheck.enable(left); rightNACheck.enable(rightValue); for (int i = 0; i < length; ++i) { RComplex leftValue = RRuntime.logical2complex(left.getDataAt(i)); @@ -1627,7 +1627,7 @@ public abstract class BinaryBooleanNode extends RBuiltinNode { private RLogicalVector performStringVectorOp(RAbstractStringVector left, String rightValue, boolean reverse) { int length = left.getLength(); byte[] result = new byte[length]; - leftNACheck.enable(!left.isComplete()); + leftNACheck.enable(left); rightNACheck.enable(rightValue); for (int i = 0; i < length; ++i) { String leftValue = left.getDataAt(i); @@ -1644,7 +1644,7 @@ public abstract class BinaryBooleanNode extends RBuiltinNode { private RLogicalVector performComplexVectorOp(RAbstractComplexVector left, RComplex rightValue, boolean reverse) { int length = left.getLength(); byte[] result = new byte[length]; - leftNACheck.enable(!left.isComplete()); + leftNACheck.enable(left); rightNACheck.enable(rightValue); for (int i = 0; i < length; ++i) { RComplex leftValue = left.getDataAt(i); @@ -1659,7 +1659,7 @@ public abstract class BinaryBooleanNode extends RBuiltinNode { private RLogicalVector performComplexVectorOp(RAbstractComplexVector left, String rightValue, boolean reverse) { int length = left.getLength(); byte[] result = new byte[length]; - leftNACheck.enable(!left.isComplete()); + leftNACheck.enable(left); rightNACheck.enable(rightValue); for (int i = 0; i < length; ++i) { String leftValue = RRuntime.complexToString(left.getDataAt(i)); @@ -1674,7 +1674,7 @@ public abstract class BinaryBooleanNode extends RBuiltinNode { private RLogicalVector performRawVectorOp(RAbstractRawVector left, double rightValue, boolean reverse) { int length = left.getLength(); byte[] result = new byte[length]; - leftNACheck.enable(!left.isComplete()); + leftNACheck.enable(left); rightNACheck.enable(rightValue); for (int i = 0; i < length; ++i) { double leftValue = RRuntime.raw2double(left.getDataAt(i)); @@ -1689,7 +1689,7 @@ public abstract class BinaryBooleanNode extends RBuiltinNode { private RLogicalVector performRawVectorOp(RAbstractRawVector left, String rightValue, boolean reverse) { int length = left.getLength(); byte[] result = new byte[length]; - leftNACheck.enable(!left.isComplete()); + leftNACheck.enable(left); rightNACheck.enable(rightValue); for (int i = 0; i < length; ++i) { String leftValue = RRuntime.rawToString(left.getDataAt(i)); @@ -1704,7 +1704,7 @@ public abstract class BinaryBooleanNode extends RBuiltinNode { private RLogicalVector performRawVectorOp(RAbstractRawVector left, RComplex rightValue, boolean reverse) { int length = left.getLength(); byte[] result = new byte[length]; - leftNACheck.enable(!left.isComplete()); + leftNACheck.enable(left); rightNACheck.enable(rightValue); for (int i = 0; i < length; ++i) { RComplex leftValue = RRuntime.raw2complex(left.getDataAt(i)); @@ -1735,8 +1735,8 @@ public abstract class BinaryBooleanNode extends RBuiltinNode { assert areSameLength(left, right); int length = left.getLength(); byte[] result = new byte[length]; - leftNACheck.enable(!left.isComplete()); - rightNACheck.enable(!right.isComplete()); + leftNACheck.enable(left); + rightNACheck.enable(right); for (int i = 0; i < length; ++i) { int leftValue = left.getDataAt(i); int rightValue = right.getDataAt(i); @@ -1754,8 +1754,8 @@ public abstract class BinaryBooleanNode extends RBuiltinNode { int rightLength = right.getLength(); int resultLength = Math.max(leftLength, rightLength); byte[] result = new byte[resultLength]; - leftNACheck.enable(!left.isComplete()); - rightNACheck.enable(!right.isComplete()); + leftNACheck.enable(left); + rightNACheck.enable(right); int l = 0; int r = 0; for (int i = 0; i < resultLength; ++i, l = Utils.incMod(l, leftLength), r = Utils.incMod(r, rightLength)) { @@ -1780,8 +1780,8 @@ public abstract class BinaryBooleanNode extends RBuiltinNode { assert areSameLength(left, right); int length = left.getLength(); byte[] result = new byte[length]; - leftNACheck.enable(!left.isComplete()); - rightNACheck.enable(!right.isComplete()); + leftNACheck.enable(left); + rightNACheck.enable(right); for (int i = 0; i < length; ++i) { double leftValue = left.getDataAt(i); double rightValue = right.getDataAt(i); @@ -1799,8 +1799,8 @@ public abstract class BinaryBooleanNode extends RBuiltinNode { int rightLength = right.getLength(); int resultLength = Math.max(leftLength, rightLength); byte[] result = new byte[resultLength]; - leftNACheck.enable(!left.isComplete()); - rightNACheck.enable(!right.isComplete()); + leftNACheck.enable(left); + rightNACheck.enable(right); int l = 0; int r = 0; for (int i = 0; i < resultLength; ++i, l = Utils.incMod(l, leftLength), r = Utils.incMod(r, rightLength)) { @@ -1825,8 +1825,8 @@ public abstract class BinaryBooleanNode extends RBuiltinNode { assert areSameLength(left, right); int length = left.getLength(); byte[] result = new byte[length]; - leftNACheck.enable(!left.isComplete()); - rightNACheck.enable(!right.isComplete()); + leftNACheck.enable(left); + rightNACheck.enable(right); for (int i = 0; i < length; ++i) { String leftValue = left.getDataAt(i); String rightValue = right.getDataAt(i); @@ -1844,8 +1844,8 @@ public abstract class BinaryBooleanNode extends RBuiltinNode { int rightLength = right.getLength(); int resultLength = Math.max(leftLength, rightLength); byte[] result = new byte[resultLength]; - leftNACheck.enable(!left.isComplete()); - rightNACheck.enable(!right.isComplete()); + leftNACheck.enable(left); + rightNACheck.enable(right); int l = 0; int r = 0; for (int i = 0; i < resultLength; ++i, l = Utils.incMod(l, leftLength), r = Utils.incMod(r, rightLength)) { @@ -1870,8 +1870,8 @@ public abstract class BinaryBooleanNode extends RBuiltinNode { assert areSameLength(left, right); int length = left.getLength(); byte[] result = new byte[length]; - leftNACheck.enable(!left.isComplete()); - rightNACheck.enable(!right.isComplete()); + leftNACheck.enable(left); + rightNACheck.enable(right); for (int i = 0; i < length; ++i) { RComplex leftValue = left.getDataAt(i); RComplex rightValue = right.getDataAt(i); @@ -1889,8 +1889,8 @@ public abstract class BinaryBooleanNode extends RBuiltinNode { int rightLength = right.getLength(); int resultLength = Math.max(leftLength, rightLength); byte[] result = new byte[resultLength]; - leftNACheck.enable(!left.isComplete()); - rightNACheck.enable(!right.isComplete()); + leftNACheck.enable(left); + rightNACheck.enable(right); int l = 0; int r = 0; for (int i = 0; i < resultLength; ++i, l = Utils.incMod(l, leftLength), r = Utils.incMod(r, rightLength)) { diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/CombineBinaryNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/CombineBinaryNode.java index 9f6f63829b619000eb2bbfb0628951d4529ec63d..cb95bbc879f74aa6fc59ae700e01c2d25f24502b 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/CombineBinaryNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/binary/CombineBinaryNode.java @@ -47,7 +47,7 @@ public abstract class CombineBinaryNode extends BinaryNode { namesData[i++] = RRuntime.NAMES_ATTR_EMPTY_VALUE; to++; } - naCheck.enable(!orgNames.isComplete()); + naCheck.enable(orgNames); for (int j = 0; i < to; i++, j++) { namesData[i] = orgNames.getDataAt(j); naCheck.check(namesData[i]);