98
98
import com .oracle .graal .python .builtins .objects .common .PHashingCollection ;
99
99
import com .oracle .graal .python .builtins .objects .common .SequenceNodes ;
100
100
import com .oracle .graal .python .builtins .objects .common .SequenceStorageNodes ;
101
- import com .oracle .graal .python .builtins .objects .complex .PComplex ;
102
101
import com .oracle .graal .python .builtins .objects .dict .PDict ;
103
102
import com .oracle .graal .python .builtins .objects .frame .FrameBuiltins .GetLocalsNode ;
104
103
import com .oracle .graal .python .builtins .objects .function .Arity ;
176
175
import com .oracle .truffle .api .dsl .Cached ;
177
176
import com .oracle .truffle .api .dsl .Fallback ;
178
177
import com .oracle .truffle .api .dsl .GenerateNodeFactory ;
178
+ import com .oracle .truffle .api .dsl .ImportStatic ;
179
179
import com .oracle .truffle .api .dsl .Specialization ;
180
180
import com .oracle .truffle .api .dsl .TypeSystemReference ;
181
181
import com .oracle .truffle .api .frame .Frame ;
@@ -498,7 +498,8 @@ private ListAppendNode getAppendNode() {
498
498
@ Builtin (name = DIVMOD , fixedNumOfPositionalArgs = 2 )
499
499
@ TypeSystemReference (PythonArithmeticTypes .class )
500
500
@ GenerateNodeFactory
501
- public abstract static class DivModNode extends PythonBuiltinNode {
501
+ @ ImportStatic (BinaryArithmetic .class )
502
+ public abstract static class DivModNode extends PythonBinaryBuiltinNode {
502
503
@ Specialization (guards = "b != 0" )
503
504
public PTuple doLong (long a , long b ) {
504
505
return factory ().createTuple (new Object []{Math .floorDiv (a , b ), Math .floorMod (a , b )});
@@ -518,22 +519,10 @@ public PTuple doDouble(double a, double b) {
518
519
return factory ().createTuple (new Object []{q , a % b });
519
520
}
520
521
521
- @ Specialization
522
- @ SuppressWarnings ("unused" )
523
- public PTuple doComplex (PComplex c , Object o ) {
524
- throw raise (PythonErrorType .TypeError , "can't take floor or mod of complex number." );
525
- }
526
-
527
- @ Specialization
528
- @ SuppressWarnings ("unused" )
529
- public PTuple doComplex (Object o , PComplex c ) {
530
- throw raise (PythonErrorType .TypeError , "can't take floor or mod of complex number." );
531
- }
532
-
533
522
@ Specialization
534
523
public PTuple doObject (Object a , Object b ,
535
- @ Cached ("create(__FLOORDIV__ )" ) LookupAndCallBinaryNode floordivNode ,
536
- @ Cached ("create(__MOD__ )" ) LookupAndCallBinaryNode modNode ) {
524
+ @ Cached ("FloorDiv. create()" ) LookupAndCallBinaryNode floordivNode ,
525
+ @ Cached ("Mod. create()" ) LookupAndCallBinaryNode modNode ) {
537
526
Object div = floordivNode .executeObject (a , b );
538
527
Object mod = modNode .executeObject (a , b );
539
528
return factory ().createTuple (new Object []{div , mod });
0 commit comments