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