Skip to content

Commit 2e732ab

Browse files
committed
Refactor ObjectIDNode so it can be DSL inlinable
1 parent fb8630f commit 2e732ab

File tree

1 file changed

+10
-19
lines changed

1 file changed

+10
-19
lines changed

src/main/java/org/truffleruby/core/basicobject/BasicObjectNodes.java

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
import com.oracle.truffle.api.RootCallTarget;
1313
import com.oracle.truffle.api.dsl.Bind;
14-
import com.oracle.truffle.api.dsl.NeverDefault;
1514
import com.oracle.truffle.api.interop.InteropLibrary;
1615
import com.oracle.truffle.api.interop.UnsupportedMessageException;
1716
import com.oracle.truffle.api.object.Shape;
@@ -24,6 +23,7 @@
2423
import org.truffleruby.annotations.Visibility;
2524
import org.truffleruby.annotations.Split;
2625
import org.truffleruby.builtins.CoreMethodArrayArgumentsNode;
26+
import org.truffleruby.builtins.CoreMethodNode;
2727
import org.truffleruby.core.basicobject.BasicObjectNodesFactory.InstanceExecNodeFactory;
2828
import org.truffleruby.core.cast.BooleanCastNode;
2929
import org.truffleruby.core.cast.NameToJavaStringNode;
@@ -48,7 +48,6 @@
4848
import org.truffleruby.language.RubyBaseNode;
4949
import org.truffleruby.language.RubyDynamicObject;
5050
import org.truffleruby.language.RubyNode;
51-
import org.truffleruby.language.RubySourceNode;
5251
import org.truffleruby.language.arguments.ArgumentsDescriptor;
5352
import org.truffleruby.language.arguments.EmptyArgumentsDescriptor;
5453
import org.truffleruby.language.arguments.RubyArguments;
@@ -133,31 +132,28 @@ protected boolean equal(Object a, Object b,
133132
}
134133
}
135134

136-
@GenerateUncached
137-
@GenerateNodeFactory
138135
@CoreMethod(names = "__id__")
139136
@NodeChild(value = "valueNode", type = RubyNode.class)
140-
public abstract static class ObjectIDNode extends RubySourceNode {
137+
public abstract static class BasicObjectObjectIDNode extends CoreMethodNode {
141138

142-
@NeverDefault
143-
public static ObjectIDNode create() {
144-
return BasicObjectNodesFactory.ObjectIDNodeFactory.create(null);
139+
@Specialization
140+
protected Object objectIDNode(Object value,
141+
@Cached ObjectIDNode objectIDNode) {
142+
return objectIDNode.execute(value);
145143
}
144+
}
146145

147-
public static ObjectIDNode create(RubyNode valueNode) {
148-
return BasicObjectNodesFactory.ObjectIDNodeFactory.create(valueNode);
149-
}
146+
@GenerateUncached
147+
public abstract static class ObjectIDNode extends RubyBaseNode {
150148

151149
public static ObjectIDNode getUncached() {
152-
return BasicObjectNodesFactory.ObjectIDNodeFactory.getUncached();
150+
return BasicObjectNodesFactory.ObjectIDNodeGen.getUncached();
153151
}
154152

155153
public abstract Object execute(Object value);
156154

157155
public abstract long execute(RubyDynamicObject value);
158156

159-
abstract RubyNode getValueNode();
160-
161157
@Specialization
162158
protected long objectIDNil(Nil nil) {
163159
return ObjectIDOperations.NIL;
@@ -255,11 +251,6 @@ protected int objectIDForeign(Object value,
255251
return System.identityHashCode(value);
256252
}
257253
}
258-
259-
@Override
260-
public RubyNode cloneUninitialized() {
261-
return create(getValueNode().cloneUninitialized()).copyFlags(this);
262-
}
263254
}
264255

265256
@GenerateUncached

0 commit comments

Comments
 (0)