|
42 | 42 | import com.oracle.truffle.api.dsl.Specialization;
|
43 | 43 | import com.oracle.truffle.api.frame.VirtualFrame;
|
44 | 44 | import com.oracle.truffle.api.source.SourceSection;
|
| 45 | + |
45 | 46 | import jnr.constants.platform.Sysconf;
|
46 | 47 | import jnr.posix.Passwd;
|
47 | 48 | import jnr.posix.Times;
|
| 49 | + |
48 | 50 | import org.jruby.truffle.nodes.RubyGuards;
|
49 | 51 | import org.jruby.truffle.nodes.RubyNode;
|
50 | 52 | import org.jruby.truffle.nodes.core.*;
|
| 53 | +import org.jruby.truffle.nodes.core.BasicObjectNodes.ReferenceEqualNode; |
| 54 | +import org.jruby.truffle.nodes.core.BasicObjectNodesFactory.ReferenceEqualNodeFactory; |
51 | 55 | import org.jruby.truffle.nodes.core.array.ArrayNodes;
|
52 | 56 | import org.jruby.truffle.nodes.defined.DefinedWrapperNode;
|
53 | 57 | import org.jruby.truffle.nodes.literal.LiteralNode;
|
|
63 | 67 | import org.jruby.truffle.runtime.signal.SignalOperations;
|
64 | 68 | import org.jruby.truffle.runtime.subsystems.ThreadManager;
|
65 | 69 | import org.jruby.util.io.PosixShim;
|
| 70 | + |
66 | 71 | import sun.misc.Signal;
|
67 | 72 |
|
68 | 73 | import java.lang.management.ManagementFactory;
|
@@ -207,68 +212,16 @@ public RubyClass vmObjectClass(VirtualFrame frame, Object object) {
|
207 | 212 | @RubiniusPrimitive(name = "vm_object_equal", needsSelf = false)
|
208 | 213 | public static abstract class VMObjectEqualPrimitiveNode extends RubiniusPrimitiveNode {
|
209 | 214 |
|
| 215 | + @Child ReferenceEqualNode referenceEqualNode; |
| 216 | + |
210 | 217 | public VMObjectEqualPrimitiveNode(RubyContext context, SourceSection sourceSection) {
|
211 | 218 | super(context, sourceSection);
|
| 219 | + referenceEqualNode = ReferenceEqualNodeFactory.create(context, sourceSection, null, null); |
212 | 220 | }
|
213 | 221 |
|
214 | 222 | @Specialization
|
215 |
| - public boolean vmObjectEqual(boolean a, boolean b) { |
216 |
| - return a == b; |
217 |
| - } |
218 |
| - |
219 |
| - @Specialization(guards = "!isBoolean(b)") |
220 |
| - public boolean vmObjectEqual(boolean a, Object b) { |
221 |
| - return false; |
222 |
| - } |
223 |
| - |
224 |
| - @Specialization |
225 |
| - public boolean vmObjectEqual(int a, int b) { |
226 |
| - return a == b; |
227 |
| - } |
228 |
| - |
229 |
| - @Specialization |
230 |
| - public boolean vmObjectEqual(int a, long b) { |
231 |
| - return a == b; |
232 |
| - } |
233 |
| - |
234 |
| - @Specialization(guards = { "!isInteger(b)", "!isLong(b)" }) |
235 |
| - public boolean vmObjectEqual(int a, Object b) { |
236 |
| - return false; |
237 |
| - } |
238 |
| - |
239 |
| - @Specialization |
240 |
| - public boolean vmObjectEqual(long a, int b) { |
241 |
| - return a == b; |
242 |
| - } |
243 |
| - |
244 |
| - @Specialization |
245 |
| - public boolean vmObjectEqual(long a, long b) { |
246 |
| - return a == b; |
247 |
| - } |
248 |
| - |
249 |
| - @Specialization(guards = { "!isInteger(b)", "!isLong(b)" }) |
250 |
| - public boolean vmObjectEqual(long a, Object b) { |
251 |
| - return false; |
252 |
| - } |
253 |
| - |
254 |
| - @Specialization |
255 |
| - public boolean vmObjectEqual(double a, double b) { |
256 |
| - return a == b; |
257 |
| - } |
258 |
| - |
259 |
| - @Specialization(guards = "!isDouble(b)") |
260 |
| - public boolean vmObjectEqual(double a, Object b) { |
261 |
| - return false; |
262 |
| - } |
263 |
| - |
264 |
| - @Specialization |
265 |
| - public boolean vmObjectEqual(RubyBasicObject a, RubyBasicObject b) { |
266 |
| - return a == b; |
267 |
| - } |
268 |
| - |
269 |
| - @Specialization(guards = "!isRubyBasicObject(b)") |
270 |
| - public boolean vmObjectEqual(RubyBasicObject a, Object b) { |
271 |
| - return false; |
| 223 | + public boolean vmObjectEqual(VirtualFrame frame, Object a, Object b) { |
| 224 | + return referenceEqualNode.executeReferenceEqual(frame, a, b); |
272 | 225 | }
|
273 | 226 |
|
274 | 227 | }
|
|
0 commit comments