|
66 | 66 | import com.oracle.graal.python.builtins.objects.foreign.ForeignObjectBuiltins.NormalizeForeignForBinopNode;
|
67 | 67 | import com.oracle.graal.python.builtins.objects.ints.PInt;
|
68 | 68 | import com.oracle.graal.python.builtins.objects.object.ObjectNodes;
|
| 69 | +import com.oracle.graal.python.builtins.objects.type.SpecialMethodSlot; |
69 | 70 | import com.oracle.graal.python.builtins.objects.type.TpSlots;
|
70 | 71 | import com.oracle.graal.python.builtins.objects.type.slots.TpSlotBinaryOp.BinaryOpBuiltinNode;
|
71 | 72 | import com.oracle.graal.python.builtins.objects.type.slots.TpSlotInquiry.NbBoolBuiltinNode;
|
72 | 73 | import com.oracle.graal.python.lib.PyNumberAddNode;
|
73 | 74 | import com.oracle.graal.python.lib.PyNumberMultiplyNode;
|
74 | 75 | import com.oracle.graal.python.lib.PyObjectStrAsTruffleStringNode;
|
75 | 76 | import com.oracle.graal.python.nodes.PRaiseNode;
|
| 77 | +import com.oracle.graal.python.nodes.call.special.LookupAndCallBinaryNode; |
76 | 78 | import com.oracle.graal.python.nodes.expression.BinaryArithmetic;
|
77 | 79 | import com.oracle.graal.python.nodes.expression.BinaryArithmetic.BitAndNode;
|
78 | 80 | import com.oracle.graal.python.nodes.expression.BinaryArithmetic.BitOrNode;
|
79 | 81 | import com.oracle.graal.python.nodes.expression.BinaryArithmetic.BitXorNode;
|
80 |
| -import com.oracle.graal.python.nodes.expression.BinaryComparisonNode; |
81 | 82 | import com.oracle.graal.python.nodes.expression.BinaryOpNode;
|
82 | 83 | import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
|
83 | 84 | import com.oracle.graal.python.nodes.function.builtins.PythonBinaryBuiltinNode;
|
@@ -381,10 +382,10 @@ abstract static class RDivModNode extends ForeignBinaryNode {
|
381 | 382 | }
|
382 | 383 |
|
383 | 384 | public abstract static class ForeignBinaryComparisonNode extends PythonBinaryBuiltinNode {
|
384 |
| - @Child private BinaryComparisonNode comparisonNode; |
| 385 | + @Child private LookupAndCallBinaryNode comparisonNode; |
385 | 386 |
|
386 |
| - protected ForeignBinaryComparisonNode(BinaryComparisonNode op) { |
387 |
| - this.comparisonNode = op; |
| 387 | + protected ForeignBinaryComparisonNode(SpecialMethodSlot slot, SpecialMethodSlot rslot) { |
| 388 | + comparisonNode = LookupAndCallBinaryNode.create(slot, rslot, true, true); |
388 | 389 | }
|
389 | 390 |
|
390 | 391 | @Specialization(guards = {"lib.isBoolean(left)"})
|
@@ -493,39 +494,39 @@ public static PNotImplemented doGeneric(Object left, Object right) {
|
493 | 494 | @GenerateNodeFactory
|
494 | 495 | public abstract static class LtNode extends ForeignBinaryComparisonNode {
|
495 | 496 | protected LtNode() {
|
496 |
| - super(BinaryComparisonNode.LtNode.create()); |
| 497 | + super(SpecialMethodSlot.Lt, SpecialMethodSlot.Gt); |
497 | 498 | }
|
498 | 499 | }
|
499 | 500 |
|
500 | 501 | @Builtin(name = J___LE__, minNumOfPositionalArgs = 2)
|
501 | 502 | @GenerateNodeFactory
|
502 | 503 | public abstract static class LeNode extends ForeignBinaryComparisonNode {
|
503 | 504 | protected LeNode() {
|
504 |
| - super(BinaryComparisonNode.LeNode.create()); |
| 505 | + super(SpecialMethodSlot.Le, SpecialMethodSlot.Ge); |
505 | 506 | }
|
506 | 507 | }
|
507 | 508 |
|
508 | 509 | @Builtin(name = J___GT__, minNumOfPositionalArgs = 2)
|
509 | 510 | @GenerateNodeFactory
|
510 | 511 | public abstract static class GtNode extends ForeignBinaryComparisonNode {
|
511 | 512 | protected GtNode() {
|
512 |
| - super(BinaryComparisonNode.GtNode.create()); |
| 513 | + super(SpecialMethodSlot.Gt, SpecialMethodSlot.Lt); |
513 | 514 | }
|
514 | 515 | }
|
515 | 516 |
|
516 | 517 | @Builtin(name = J___GE__, minNumOfPositionalArgs = 2)
|
517 | 518 | @GenerateNodeFactory
|
518 | 519 | public abstract static class GeNode extends ForeignBinaryComparisonNode {
|
519 | 520 | protected GeNode() {
|
520 |
| - super(BinaryComparisonNode.GeNode.create()); |
| 521 | + super(SpecialMethodSlot.Ge, SpecialMethodSlot.Le); |
521 | 522 | }
|
522 | 523 | }
|
523 | 524 |
|
524 | 525 | @Builtin(name = J___EQ__, minNumOfPositionalArgs = 2)
|
525 | 526 | @GenerateNodeFactory
|
526 | 527 | public abstract static class EqNode extends ForeignBinaryComparisonNode {
|
527 | 528 | protected EqNode() {
|
528 |
| - super(BinaryComparisonNode.EqNode.create()); |
| 529 | + super(SpecialMethodSlot.Eq, SpecialMethodSlot.Eq); |
529 | 530 | }
|
530 | 531 | }
|
531 | 532 |
|
|
0 commit comments