|
11 | 11 |
|
12 | 12 | import com.oracle.truffle.api.RootCallTarget;
|
13 | 13 | import com.oracle.truffle.api.dsl.Bind;
|
14 |
| -import com.oracle.truffle.api.dsl.NeverDefault; |
15 | 14 | import com.oracle.truffle.api.interop.InteropLibrary;
|
16 | 15 | import com.oracle.truffle.api.interop.UnsupportedMessageException;
|
17 | 16 | import com.oracle.truffle.api.object.Shape;
|
|
24 | 23 | import org.truffleruby.annotations.Visibility;
|
25 | 24 | import org.truffleruby.annotations.Split;
|
26 | 25 | import org.truffleruby.builtins.CoreMethodArrayArgumentsNode;
|
| 26 | +import org.truffleruby.builtins.CoreMethodNode; |
27 | 27 | import org.truffleruby.core.basicobject.BasicObjectNodesFactory.InstanceExecNodeFactory;
|
28 | 28 | import org.truffleruby.core.cast.BooleanCastNode;
|
29 | 29 | import org.truffleruby.core.cast.NameToJavaStringNode;
|
|
48 | 48 | import org.truffleruby.language.RubyBaseNode;
|
49 | 49 | import org.truffleruby.language.RubyDynamicObject;
|
50 | 50 | import org.truffleruby.language.RubyNode;
|
51 |
| -import org.truffleruby.language.RubySourceNode; |
52 | 51 | import org.truffleruby.language.arguments.ArgumentsDescriptor;
|
53 | 52 | import org.truffleruby.language.arguments.EmptyArgumentsDescriptor;
|
54 | 53 | import org.truffleruby.language.arguments.RubyArguments;
|
@@ -133,31 +132,28 @@ protected boolean equal(Object a, Object b,
|
133 | 132 | }
|
134 | 133 | }
|
135 | 134 |
|
136 |
| - @GenerateUncached |
137 |
| - @GenerateNodeFactory |
138 | 135 | @CoreMethod(names = "__id__")
|
139 | 136 | @NodeChild(value = "valueNode", type = RubyNode.class)
|
140 |
| - public abstract static class ObjectIDNode extends RubySourceNode { |
| 137 | + public abstract static class BasicObjectObjectIDNode extends CoreMethodNode { |
141 | 138 |
|
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); |
145 | 143 | }
|
| 144 | + } |
146 | 145 |
|
147 |
| - public static ObjectIDNode create(RubyNode valueNode) { |
148 |
| - return BasicObjectNodesFactory.ObjectIDNodeFactory.create(valueNode); |
149 |
| - } |
| 146 | + @GenerateUncached |
| 147 | + public abstract static class ObjectIDNode extends RubyBaseNode { |
150 | 148 |
|
151 | 149 | public static ObjectIDNode getUncached() {
|
152 |
| - return BasicObjectNodesFactory.ObjectIDNodeFactory.getUncached(); |
| 150 | + return BasicObjectNodesFactory.ObjectIDNodeGen.getUncached(); |
153 | 151 | }
|
154 | 152 |
|
155 | 153 | public abstract Object execute(Object value);
|
156 | 154 |
|
157 | 155 | public abstract long execute(RubyDynamicObject value);
|
158 | 156 |
|
159 |
| - abstract RubyNode getValueNode(); |
160 |
| - |
161 | 157 | @Specialization
|
162 | 158 | protected long objectIDNil(Nil nil) {
|
163 | 159 | return ObjectIDOperations.NIL;
|
@@ -255,11 +251,6 @@ protected int objectIDForeign(Object value,
|
255 | 251 | return System.identityHashCode(value);
|
256 | 252 | }
|
257 | 253 | }
|
258 |
| - |
259 |
| - @Override |
260 |
| - public RubyNode cloneUninitialized() { |
261 |
| - return create(getValueNode().cloneUninitialized()).copyFlags(this); |
262 |
| - } |
263 | 254 | }
|
264 | 255 |
|
265 | 256 | @GenerateUncached
|
|
0 commit comments