Skip to content
Snippets Groups Projects
Commit 4f855458 authored by Lukas Stadler's avatar Lukas Stadler
Browse files

add missing transferToInterpreter, remove Fallback in GetNonSharedNode

parent a4e86e30
Branches
No related tags found
No related merge requests found
......@@ -29,6 +29,7 @@ import java.util.Arrays;
import java.util.function.DoublePredicate;
import java.util.function.IntPredicate;
import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.dsl.Fallback;
import com.oracle.truffle.api.dsl.Specialization;
import com.oracle.truffle.r.nodes.builtin.RBuiltinNode;
......@@ -82,6 +83,7 @@ public class IsFiniteFunctions {
@Fallback
protected Object doIsFiniteOther(Object x) {
if (typeofNode == null) {
CompilerDirectives.transferToInterpreterAndInvalidate();
typeofNode = insert(TypeofNodeGen.create());
}
String type = typeofNode.execute(x).getName();
......
......@@ -31,13 +31,13 @@ import static com.oracle.truffle.r.runtime.builtins.RBuiltinKind.INTERNAL;
import java.util.function.Function;
import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.dsl.Specialization;
import com.oracle.truffle.api.profiles.BranchProfile;
import com.oracle.truffle.r.nodes.builtin.CastBuilder;
import com.oracle.truffle.r.nodes.builtin.RBuiltinNode;
import com.oracle.truffle.r.nodes.builtin.base.OrderNodeGen.CmpNodeGen;
import com.oracle.truffle.r.nodes.builtin.base.OrderNodeGen.OrderVector1NodeGen;
import com.oracle.truffle.r.nodes.builtin.casts.Filter;
import com.oracle.truffle.r.runtime.RError;
import com.oracle.truffle.r.runtime.builtins.RBuiltin;
import com.oracle.truffle.r.runtime.data.RDataFactory;
......@@ -79,6 +79,7 @@ public abstract class Rank extends RBuiltinNode {
private Order.OrderVector1Node initOrderVector1() {
if (orderVector1Node == null) {
CompilerDirectives.transferToInterpreterAndInvalidate();
orderVector1Node = insert(OrderVector1NodeGen.create(false));
}
return orderVector1Node;
......@@ -86,6 +87,7 @@ public abstract class Rank extends RBuiltinNode {
private Order.CmpNode initOrderCmp() {
if (orderCmpNode == null) {
CompilerDirectives.transferToInterpreterAndInvalidate();
orderCmpNode = insert(CmpNodeGen.create());
}
return orderCmpNode;
......
......@@ -84,6 +84,7 @@ public abstract class StandardGeneric extends RBuiltinNode {
private String argClass(Object arg) {
if (classNode == null) {
CompilerDirectives.transferToInterpreterAndInvalidate();
classNode = insert(ClassHierarchyScalarNodeGen.create());
}
return classNode.executeString(arg);
......
......@@ -22,7 +22,6 @@
*/
package com.oracle.truffle.r.nodes.unary;
import com.oracle.truffle.api.dsl.Fallback;
import com.oracle.truffle.api.dsl.NodeChild;
import com.oracle.truffle.api.dsl.Specialization;
import com.oracle.truffle.api.profiles.ValueProfile;
......@@ -39,12 +38,23 @@ public abstract class GetNonSharedNode extends RNode implements RSyntaxNode {
private final ValueProfile shareableTypeProfile = ValueProfile.createClassProfile();
protected abstract RNode getN();
@Override
protected RSyntaxNode getRSyntaxNode() {
return getN().asRSyntaxNode();
}
@Specialization
protected RTypedValue getNonShared(RShareable shareable) {
return shareableTypeProfile.profile(shareable).getNonShared();
}
@Fallback
protected static boolean isRShareable(Object o) {
return o instanceof RShareable;
}
@Specialization(guards = "!isRShareable(o)")
protected Object getNonShared(Object o) {
return o;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment