diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/FilterNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/FilterNode.java index 7924c01c9b73d825940fcfcfb56870c0f7729e47..9e693d7a482d8593be5751392a82f63f8995b0f4 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/FilterNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/FilterNode.java @@ -25,6 +25,7 @@ package com.oracle.truffle.r.nodes.unary; import com.oracle.truffle.api.dsl.Specialization; import com.oracle.truffle.api.profiles.BranchProfile; import com.oracle.truffle.api.profiles.ConditionProfile; +import com.oracle.truffle.api.profiles.ValueProfile; import com.oracle.truffle.r.nodes.binary.BoxPrimitiveNode; import com.oracle.truffle.r.nodes.binary.BoxPrimitiveNodeGen; import com.oracle.truffle.r.nodes.builtin.ArgumentFilter; @@ -45,6 +46,7 @@ public abstract class FilterNode extends CastNode { private final BranchProfile warningProfile = BranchProfile.create(); private final ConditionProfile conditionProfile = ConditionProfile.createBinaryProfile(); + private final ValueProfile valueProfile = ValueProfile.createClassProfile(); @Child private BoxPrimitiveNode boxPrimitiveNode = BoxPrimitiveNodeGen.create(); @@ -92,7 +94,7 @@ public abstract class FilterNode extends CastNode { @Specialization public Object executeRest(Object x) { - if (!conditionProfile.profile(evalCondition(x))) { + if (!conditionProfile.profile(evalCondition(valueProfile.profile(x)))) { handleMessage(x); } return x;