Skip to content
Snippets Groups Projects
Commit deb716f3 authored by Florian Angerer's avatar Florian Angerer
Browse files

[GR-2798] Fix: Did not properly determine class hierarchy of attributables in upcalls.

parents cdc37ecb ebc77232
Branches
No related tags found
No related merge requests found
......@@ -30,6 +30,8 @@ import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
......@@ -41,7 +43,7 @@ import com.oracle.truffle.api.source.Source;
import com.oracle.truffle.api.source.SourceSection;
import com.oracle.truffle.r.nodes.RASTUtils;
import com.oracle.truffle.r.nodes.ffi.ParseResult.ParseStatus;
import com.oracle.truffle.r.nodes.function.ImplicitClassHierarchyNode;
import com.oracle.truffle.r.nodes.function.ClassHierarchyNode;
import com.oracle.truffle.r.runtime.RArguments;
import com.oracle.truffle.r.runtime.RCaller;
import com.oracle.truffle.r.runtime.RCleanUp;
......@@ -105,8 +107,6 @@ import com.oracle.truffle.r.runtime.nodes.DuplicationHelper;
import com.oracle.truffle.r.runtime.nodes.RNode;
import com.oracle.truffle.r.runtime.nodes.RSyntaxNode;
import com.oracle.truffle.r.runtime.rng.RRNG;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* This class provides a simple Java-based implementation of {@link UpCallsRFFI}, where all the
......@@ -298,7 +298,7 @@ public abstract class JavaUpCallsRFFIImpl implements UpCallsRFFI {
}
public static RStringVector getClassHr(Object v) {
return ImplicitClassHierarchyNode.getImplicitClass(v);
return ClassHierarchyNode.getClassHierarchy(v);
}
@Override
......
......@@ -62,9 +62,13 @@ public abstract class ClassHierarchyNode extends UnaryNode {
* attribute is not set.
*/
@TruffleBoundary
public static RStringVector getClassHierarchy(RAttributable value) {
Object v = value.getAttr(RRuntime.CLASS_ATTR_KEY);
RStringVector result = v instanceof RStringVector ? (RStringVector) v : ImplicitClassHierarchyNode.getImplicitClass(value);
public static RStringVector getClassHierarchy(Object value) {
RStringVector result = null;
if (value instanceof RAttributable) {
Object v = ((RAttributable) value).getAttr(RRuntime.CLASS_ATTR_KEY);
result = v instanceof RStringVector ? (RStringVector) v : ImplicitClassHierarchyNode.getImplicitClass(value);
}
return result != null ? result : RDataFactory.createEmptyStringVector();
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment