From ee8f60926b06418ed584c1ef42454d7b503c2a12 Mon Sep 17 00:00:00 2001 From: Lukas Stadler <lukas.stadler@oracle.com> Date: Thu, 3 Aug 2017 17:19:53 +0200 Subject: [PATCH] more careful with "null" source sections: wrappers need to return their delegate's source sections --- .../r/nodes/function/RCallBaseNodeWrapperFactory.java | 6 ++++++ .../truffle/r/nodes/function/WrapArgumentBaseNode.java | 10 ++++++++-- .../nodes/instrumentation/RNodeWrapperFactory.java | 6 ++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/RCallBaseNodeWrapperFactory.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/RCallBaseNodeWrapperFactory.java index 70d38d3f29..8bb9c406ad 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/RCallBaseNodeWrapperFactory.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/RCallBaseNodeWrapperFactory.java @@ -28,6 +28,7 @@ import com.oracle.truffle.api.instrumentation.ProbeNode; import com.oracle.truffle.api.nodes.Node; import com.oracle.truffle.api.nodes.NodeCost; import com.oracle.truffle.api.nodes.NodeInfo; +import com.oracle.truffle.api.source.SourceSection; import com.oracle.truffle.r.runtime.nodes.RSyntaxNode; public class RCallBaseNodeWrapperFactory implements InstrumentableFactory<RCallBaseNode> { @@ -96,6 +97,11 @@ public class RCallBaseNodeWrapperFactory implements InstrumentableFactory<RCallB public RSyntaxNode getRSyntaxNode() { return delegate.asRSyntaxNode(); } + + @Override + public SourceSection getSourceSection() { + return delegate.getSourceSection(); + } } @Override diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/WrapArgumentBaseNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/WrapArgumentBaseNode.java index a86dd95a42..6822dd5e8a 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/WrapArgumentBaseNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/WrapArgumentBaseNode.java @@ -24,6 +24,7 @@ package com.oracle.truffle.r.nodes.function; import com.oracle.truffle.api.frame.VirtualFrame; import com.oracle.truffle.api.profiles.ConditionProfile; +import com.oracle.truffle.api.source.SourceSection; import com.oracle.truffle.r.runtime.RInternalError; import com.oracle.truffle.r.runtime.data.RSharingAttributeStorage; import com.oracle.truffle.r.runtime.nodes.RNode; @@ -42,7 +43,7 @@ public abstract class WrapArgumentBaseNode extends RNode { this.operand = operand; } - public RNode getOperand() { + public final RNode getOperand() { return operand; } @@ -76,6 +77,11 @@ public abstract class WrapArgumentBaseNode extends RNode { @Override public RSyntaxNode getRSyntaxNode() { - return getOperand().asRSyntaxNode(); + return operand == null ? null : operand.asRSyntaxNode(); + } + + @Override + public SourceSection getSourceSection() { + return operand == null ? null : operand.getSourceSection(); } } diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/nodes/instrumentation/RNodeWrapperFactory.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/nodes/instrumentation/RNodeWrapperFactory.java index b385fc6fe9..de50cdebb7 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/nodes/instrumentation/RNodeWrapperFactory.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/nodes/instrumentation/RNodeWrapperFactory.java @@ -28,6 +28,7 @@ import com.oracle.truffle.api.instrumentation.ProbeNode; import com.oracle.truffle.api.nodes.Node; import com.oracle.truffle.api.nodes.NodeCost; import com.oracle.truffle.api.nodes.NodeInfo; +import com.oracle.truffle.api.source.SourceSection; import com.oracle.truffle.r.runtime.nodes.RNode; import com.oracle.truffle.r.runtime.nodes.RSyntaxNode; @@ -97,6 +98,11 @@ public final class RNodeWrapperFactory implements InstrumentableFactory<RNode> { public RSyntaxNode getRSyntaxNode() { return delegate.asRSyntaxNode(); } + + @Override + public SourceSection getSourceSection() { + return delegate.getSourceSection(); + } } @Override -- GitLab