Skip to content

Commit e6f74b7

Browse files
committed
turn list() and tuple() into context-specific builtins
1 parent 62ce0fe commit e6f74b7

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/BuiltinConstructors.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@
140140
import com.oracle.graal.python.nodes.datamodel.IsSequenceNode;
141141
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
142142
import com.oracle.graal.python.nodes.function.PythonBuiltinNode;
143+
import com.oracle.graal.python.nodes.function.builtins.PythonBinaryBuiltinNode;
143144
import com.oracle.graal.python.nodes.function.builtins.PythonVarargsBuiltinNode;
144145
import com.oracle.graal.python.nodes.object.GetClassNode;
145146
import com.oracle.graal.python.nodes.subscript.SliceLiteralNode;
@@ -809,29 +810,29 @@ public Object createInt(PythonClass cls, Object obj, PNone keywordArg,
809810
@Builtin(name = BOOL, minNumOfArguments = 1, maxNumOfArguments = 2, constructsClass = Boolean.class, base = PInt.class)
810811
@GenerateNodeFactory
811812
@SuppressWarnings("unused")
812-
public abstract static class BoolNode extends PythonBuiltinNode {
813+
public abstract static class BoolNode extends PythonBinaryBuiltinNode {
813814
@Specialization
814-
public boolean bool(Object cls, boolean arg) {
815+
public boolean boolB(Object cls, boolean arg) {
815816
return arg;
816817
}
817818

818819
@Specialization
819-
public boolean bool(Object cls, int arg) {
820+
public boolean boolI(Object cls, int arg) {
820821
return arg != 0;
821822
}
822823

823824
@Specialization
824-
public boolean bool(Object cls, double arg) {
825+
public boolean boolD(Object cls, double arg) {
825826
return arg != 0.0;
826827
}
827828

828829
@Specialization
829-
public boolean bool(Object cls, String arg) {
830+
public boolean boolS(Object cls, String arg) {
830831
return !arg.isEmpty();
831832
}
832833

833834
@Specialization
834-
public boolean bool(Object cls, PNone arg) {
835+
public boolean boolN(Object cls, PNone arg) {
835836
return false;
836837
}
837838

@@ -850,7 +851,7 @@ public boolean bool(Object cls, Object obj,
850851
// list([iterable])
851852
@Builtin(name = LIST, minNumOfArguments = 1, maxNumOfArguments = 2, constructsClass = PList.class)
852853
@GenerateNodeFactory
853-
public abstract static class ListNode extends PythonBuiltinNode {
854+
public abstract static class ListNode extends PythonBinaryBuiltinNode {
854855

855856
@Specialization
856857
protected PList constructList(PythonClass cls, Object value,
@@ -1129,7 +1130,7 @@ private ConditionProfile getIsPStringProfile() {
11291130
// tuple([iterable])
11301131
@Builtin(name = TUPLE, minNumOfArguments = 1, maxNumOfArguments = 2, constructsClass = PTuple.class)
11311132
@GenerateNodeFactory
1132-
public abstract static class TupleNode extends PythonBuiltinNode {
1133+
public abstract static class TupleNode extends PythonBinaryBuiltinNode {
11331134

11341135
@Specialization
11351136
protected PTuple constructTuple(PythonClass cls, Object value,

0 commit comments

Comments
 (0)