From e8821385870c7937d31c9ab5278f880d6a2eeeb9 Mon Sep 17 00:00:00 2001 From: Lukas Stadler <lukas.stadler@oracle.com> Date: Tue, 11 Nov 2014 12:53:23 +0100 Subject: [PATCH] avoid unnecessary isComplete call --- .../r/nodes/builtin/base/UpdateDiag.java | 4 +- .../nodes/access/array/ArrayPositionCast.java | 2 +- .../access/array/read/AccessArrayNode.java | 4 +- .../r/nodes/binary/BinaryArithmeticNode.java | 4 +- .../r/nodes/binary/BinaryBooleanNode.java | 62 +++++++++---------- .../r/nodes/binary/CombineBinaryNode.java | 2 +- 6 files changed, 39 insertions(+), 39 deletions(-) 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 1eaa5b17ef..9db416a6ef 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 6904958bc3..a9a70f2a66 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 42cc3f0d73..c39914478c 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 ca31defef7..67602fb83e 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 40bec6926f..cd90c95aa5 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 9f6f63829b..cb95bbc879 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]); -- GitLab