Skip to content

Commit 769a513

Browse files
committed
moved itertools.__init__ builtins to ItertoolsModuleBuiltins constructors
1 parent 2c75d0d commit 769a513

19 files changed

+710
-836
lines changed

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

Lines changed: 669 additions & 174 deletions
Large diffs are not rendered by default.

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/itertools/AccumulateBuiltins.java

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040
*/
4141
package com.oracle.graal.python.builtins.objects.itertools;
4242

43-
import static com.oracle.graal.python.nodes.SpecialMethodNames.__INIT__;
4443
import static com.oracle.graal.python.nodes.SpecialMethodNames.__ITER__;
4544
import static com.oracle.graal.python.nodes.SpecialMethodNames.__NEXT__;
4645
import static com.oracle.graal.python.nodes.SpecialMethodNames.__REDUCE__;
@@ -61,7 +60,6 @@
6160
import com.oracle.graal.python.nodes.expression.BinaryArithmetic;
6261
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
6362
import com.oracle.graal.python.nodes.function.builtins.PythonBinaryBuiltinNode;
64-
import com.oracle.graal.python.nodes.function.builtins.PythonQuaternaryBuiltinNode;
6563
import com.oracle.graal.python.nodes.function.builtins.PythonUnaryBuiltinNode;
6664
import com.oracle.graal.python.nodes.object.GetClassNode;
6765
import com.oracle.truffle.api.dsl.Cached;
@@ -80,20 +78,6 @@ protected List<? extends NodeFactory<? extends PythonBuiltinBaseNode>> getNodeFa
8078
return AccumulateBuiltinsFactory.getFactories();
8179
}
8280

83-
@Builtin(name = __INIT__, minNumOfPositionalArgs = 1, parameterNames = {"$self", "iterable", "func", "initial"})
84-
@GenerateNodeFactory
85-
public abstract static class InitNode extends PythonQuaternaryBuiltinNode {
86-
@Specialization
87-
Object init(VirtualFrame frame, PAccumulate self, Object iterable, Object func, Object initial,
88-
@Cached PyObjectGetIter getIter) {
89-
self.setIterable(getIter.execute(frame, iterable));
90-
self.setFunc(func instanceof PNone ? null : func);
91-
self.setTotal(PAccumulate.MARKER);
92-
self.setInitial(initial instanceof PNone ? null : initial);
93-
return PNone.NONE;
94-
}
95-
}
96-
9781
@Builtin(name = __ITER__, minNumOfPositionalArgs = 1)
9882
@GenerateNodeFactory
9983
public abstract static class IterNode extends PythonUnaryBuiltinNode {
@@ -150,21 +134,21 @@ Object reduce(VirtualFrame frame, PAccumulate self,
150134
hasInitialProfile.enter();
151135
Object type = getClassNode.execute(self);
152136
PTuple inititalTuple = factory().createTuple(new Object[]{self.getInitial()});
153-
PChain chain = factory().createChain();
137+
PChain chain = factory().createChain(PythonBuiltinClassType.PChain);
154138
chain.setSource(inititalTuple);
155139
chain.setActive(self.getIterable());
156140

157141
PTuple tuple = factory().createTuple(new Object[]{chain, self.getFunc()});
158142
return factory().createTuple(new Object[]{type, tuple, PNone.NONE});
159143
} else if (self.getTotal() == PNone.NONE) {
160144
hasTotalProfile.enter();
161-
PChain chain = factory().createChain();
145+
PChain chain = factory().createChain(PythonBuiltinClassType.PChain);
162146
PList noneList = factory().createList(new Object[]{PNone.NONE});
163147
Object noneIter = getIter.execute(frame, noneList);
164148
chain.setSource(getIter.execute(frame, factory().createList(new Object[]{noneIter, self.getIterable()})));
165149
chain.setActive(PNone.NONE);
166150

167-
PAccumulate accumulate = factory().createAccumulate();
151+
PAccumulate accumulate = factory().createAccumulate(PythonBuiltinClassType.PAccumulate);
168152
accumulate.setIterable(chain);
169153
accumulate.setFunc(self.getFunc());
170154

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/itertools/ChainBuiltins.java

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@
4444
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.TypeError;
4545
import static com.oracle.graal.python.nodes.ErrorMessages.ARGUMENTS_MUST_BE_ITERATORS;
4646
import static com.oracle.graal.python.nodes.ErrorMessages.IS_NOT_A;
47-
import static com.oracle.graal.python.nodes.SpecialMethodNames.__INIT__;
4847
import static com.oracle.graal.python.nodes.SpecialMethodNames.__ITER__;
4948
import static com.oracle.graal.python.nodes.SpecialMethodNames.__NEXT__;
5049
import static com.oracle.graal.python.nodes.SpecialMethodNames.__REDUCE__;
@@ -65,7 +64,6 @@
6564
import com.oracle.graal.python.lib.PyObjectGetIter;
6665
import com.oracle.graal.python.lib.PyObjectLookupAttr;
6766
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
68-
import com.oracle.graal.python.nodes.function.PythonBuiltinNode;
6967
import com.oracle.graal.python.nodes.function.builtins.PythonBinaryBuiltinNode;
7068
import com.oracle.graal.python.nodes.function.builtins.PythonUnaryBuiltinNode;
7169
import com.oracle.graal.python.nodes.object.GetClassNode;
@@ -89,18 +87,6 @@ protected List<? extends NodeFactory<? extends PythonBuiltinBaseNode>> getNodeFa
8987
return ChainBuiltinsFactory.getFactories();
9088
}
9189

92-
@Builtin(name = __INIT__, minNumOfPositionalArgs = 1, takesVarArgs = true)
93-
@GenerateNodeFactory
94-
public abstract static class InitNode extends PythonBuiltinNode {
95-
@Specialization
96-
Object init(VirtualFrame frame, PChain self, Object[] iterables,
97-
@Cached PyObjectGetIter getIter) {
98-
self.setSource(getIter.execute(frame, factory().createList(iterables)));
99-
self.setActive(PNone.NONE);
100-
return PNone.NONE;
101-
}
102-
}
103-
10490
@Builtin(name = __ITER__, minNumOfPositionalArgs = 1)
10591
@GenerateNodeFactory
10692
public abstract static class IterNode extends PythonUnaryBuiltinNode {
@@ -149,7 +135,7 @@ public abstract static class FromIterNode extends PythonBinaryBuiltinNode {
149135
@Specialization
150136
Object fromIter(VirtualFrame frame, @SuppressWarnings("unused") Object cls, Object arg,
151137
@Cached PyObjectGetIter getIter) {
152-
PChain instance = factory().createChain();
138+
PChain instance = factory().createChain(PythonBuiltinClassType.PChain);
153139
instance.setSource(getIter.execute(frame, arg));
154140
instance.setActive(PNone.NONE);
155141
return instance;
@@ -219,7 +205,7 @@ Object setState(VirtualFrame frame, PChain self, Object state,
219205
private void checkIterator(VirtualFrame frame, PyObjectLookupAttr getAttrNode, Object obj, BranchProfile profile) throws PException {
220206
if (getAttrNode.execute(frame, obj, __NEXT__) == PNone.NO_VALUE) {
221207
profile.enter();
222-
throw raise(TypeError, ARGUMENTS_MUST_BE_ITERATORS + " " + obj);
208+
throw raise(TypeError, ARGUMENTS_MUST_BE_ITERATORS);
223209
}
224210
}
225211
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/itertools/CombinationsBuiltins.java

Lines changed: 0 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -42,16 +42,12 @@
4242

4343
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.StopIteration;
4444
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.TypeError;
45-
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.ValueError;
4645
import static com.oracle.graal.python.nodes.ErrorMessages.IS_NOT_A;
47-
import static com.oracle.graal.python.nodes.ErrorMessages.MUST_BE_NON_NEGATIVE;
48-
import static com.oracle.graal.python.nodes.SpecialMethodNames.__INIT__;
4946
import static com.oracle.graal.python.nodes.SpecialMethodNames.__ITER__;
5047
import static com.oracle.graal.python.nodes.SpecialMethodNames.__NEXT__;
5148
import static com.oracle.graal.python.nodes.SpecialMethodNames.__REDUCE__;
5249
import static com.oracle.graal.python.nodes.SpecialMethodNames.__SETSTATE__;
5350

54-
import com.oracle.graal.python.annotations.ArgumentClinic;
5551
import com.oracle.graal.python.builtins.Builtin;
5652
import com.oracle.graal.python.builtins.CoreFunctions;
5753
import com.oracle.graal.python.builtins.PythonBuiltinClassType;
@@ -70,9 +66,7 @@
7066
import com.oracle.graal.python.nodes.control.GetNextNode;
7167
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
7268
import com.oracle.graal.python.nodes.function.builtins.PythonBinaryBuiltinNode;
73-
import com.oracle.graal.python.nodes.function.builtins.PythonTernaryClinicBuiltinNode;
7469
import com.oracle.graal.python.nodes.function.builtins.PythonUnaryBuiltinNode;
75-
import com.oracle.graal.python.nodes.function.builtins.clinic.ArgumentClinicProvider;
7670
import com.oracle.graal.python.nodes.object.GetClassNode;
7771
import com.oracle.graal.python.nodes.object.IsBuiltinClassProfile;
7872
import com.oracle.graal.python.nodes.util.CastToJavaIntLossyNode;
@@ -100,55 +94,6 @@ protected List<? extends NodeFactory<? extends PythonBuiltinBaseNode>> getNodeFa
10094
return CombinationsBuiltinsFactory.getFactories();
10195
}
10296

103-
@Builtin(name = __INIT__, minNumOfPositionalArgs = 3, parameterNames = {"$self", "iterable", "r"})
104-
@ArgumentClinic(name = "r", conversion = ArgumentClinic.ClinicConversion.Int)
105-
@GenerateNodeFactory
106-
public abstract static class InitNode extends PythonTernaryClinicBuiltinNode {
107-
@Override
108-
protected ArgumentClinicProvider getArgumentClinic() {
109-
return CombinationsBuiltinsClinicProviders.InitNodeClinicProviderGen.INSTANCE;
110-
}
111-
112-
@Specialization(guards = "r >= 0")
113-
Object init(VirtualFrame frame, PCombinations self, Object iterable, int r,
114-
@Cached IterableToArrayNode toArrayNode,
115-
@Cached LoopConditionProfile indicesLoopProfile) {
116-
117-
self.setPool(toArrayNode.execute(frame, iterable));
118-
119-
int[] indices = new int[r];
120-
indicesLoopProfile.profileCounted(r);
121-
for (int i = 0; indicesLoopProfile.inject(i < r); i++) {
122-
indices[i] = i;
123-
}
124-
self.setIndices(indices);
125-
self.setR(r);
126-
self.setLastResult(null);
127-
self.setStopped(r > self.getPool().length);
128-
129-
return PNone.NONE;
130-
}
131-
132-
@Specialization(guards = "r >= 0")
133-
Object init(VirtualFrame frame, PCombinationsWithReplacement self, Object iterable, int r,
134-
@Cached IterableToArrayNode toArrayNode) {
135-
self.setPool(toArrayNode.execute(frame, iterable));
136-
self.setR(r);
137-
138-
self.setIndices(new int[r]);
139-
self.setLastResult(null);
140-
self.setStopped(self.getPool().length == 0 && r > 0);
141-
142-
return PNone.NONE;
143-
}
144-
145-
@SuppressWarnings("unused")
146-
@Specialization(guards = "r < 0")
147-
Object init(Object self, Object iterable, int r) {
148-
throw raise(ValueError, MUST_BE_NON_NEGATIVE, "r");
149-
}
150-
}
151-
15297
public abstract static class IterableToArrayNode extends PNodeWithRaise {
15398
public abstract Object[] execute(VirtualFrame frame, Object iterable);
15499

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/itertools/CompressBuiltins.java

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
package com.oracle.graal.python.builtins.objects.itertools;
4242

4343
import static com.oracle.graal.python.nodes.SpecialMethodNames.__REDUCE__;
44-
import static com.oracle.graal.python.nodes.SpecialMethodNames.__INIT__;
4544
import static com.oracle.graal.python.nodes.SpecialMethodNames.__ITER__;
4645
import static com.oracle.graal.python.nodes.SpecialMethodNames.__NEXT__;
4746

@@ -54,10 +53,8 @@
5453
import com.oracle.graal.python.builtins.modules.BuiltinFunctions;
5554
import com.oracle.graal.python.builtins.objects.PNone;
5655
import com.oracle.graal.python.builtins.objects.tuple.PTuple;
57-
import com.oracle.graal.python.lib.PyObjectGetIter;
5856
import com.oracle.graal.python.lib.PyObjectIsTrueNode;
5957
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
60-
import com.oracle.graal.python.nodes.function.builtins.PythonTernaryBuiltinNode;
6158
import com.oracle.graal.python.nodes.function.builtins.PythonUnaryBuiltinNode;
6259
import com.oracle.graal.python.nodes.object.GetClassNode;
6360
import com.oracle.truffle.api.dsl.Cached;
@@ -75,18 +72,6 @@ protected List<? extends NodeFactory<? extends PythonBuiltinBaseNode>> getNodeFa
7572
return CompressBuiltinsFactory.getFactories();
7673
}
7774

78-
@Builtin(name = __INIT__, minNumOfPositionalArgs = 3, parameterNames = {"$self", "data", "selectors"})
79-
@GenerateNodeFactory
80-
public abstract static class InitNode extends PythonTernaryBuiltinNode {
81-
@Specialization
82-
Object init(VirtualFrame frame, PCompress self, Object data, Object selectors,
83-
@Cached PyObjectGetIter getIter) {
84-
self.setData(getIter.execute(frame, data));
85-
self.setSelectors(getIter.execute(frame, selectors));
86-
return PNone.NONE;
87-
}
88-
}
89-
9075
@Builtin(name = __ITER__, minNumOfPositionalArgs = 1)
9176
@GenerateNodeFactory
9277
public abstract static class IterNode extends PythonUnaryBuiltinNode {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/itertools/CountBuiltins.java

Lines changed: 0 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -40,37 +40,25 @@
4040
*/
4141
package com.oracle.graal.python.builtins.objects.itertools;
4242

43-
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.TypeError;
44-
import static com.oracle.graal.python.nodes.ErrorMessages.NUMBER_IS_REQUIRED;
4543
import static com.oracle.graal.python.nodes.SpecialAttributeNames.__NAME__;
46-
import static com.oracle.graal.python.nodes.SpecialMethodNames.__FLOAT__;
47-
import static com.oracle.graal.python.nodes.SpecialMethodNames.__INDEX__;
48-
import static com.oracle.graal.python.nodes.SpecialMethodNames.__INIT__;
49-
import static com.oracle.graal.python.nodes.SpecialMethodNames.__INT__;
5044
import static com.oracle.graal.python.nodes.SpecialMethodNames.__ITER__;
5145
import static com.oracle.graal.python.nodes.SpecialMethodNames.__NEXT__;
5246
import static com.oracle.graal.python.nodes.SpecialMethodNames.__REDUCE__;
5347
import static com.oracle.graal.python.nodes.SpecialMethodNames.__REPR__;
5448

55-
import com.oracle.graal.python.annotations.ArgumentClinic;
56-
5749
import com.oracle.graal.python.builtins.Builtin;
5850
import java.util.List;
5951

6052
import com.oracle.graal.python.builtins.CoreFunctions;
6153
import com.oracle.graal.python.builtins.PythonBuiltinClassType;
6254
import com.oracle.graal.python.builtins.PythonBuiltins;
63-
import com.oracle.graal.python.builtins.objects.PNone;
6455
import com.oracle.graal.python.builtins.objects.tuple.PTuple;
6556
import com.oracle.graal.python.lib.PyObjectGetAttr;
66-
import com.oracle.graal.python.lib.PyObjectLookupAttr;
6757
import com.oracle.graal.python.lib.PyObjectReprAsObjectNode;
6858
import com.oracle.graal.python.lib.PyObjectTypeCheck;
6959
import com.oracle.graal.python.nodes.expression.BinaryArithmetic;
7060
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
71-
import com.oracle.graal.python.nodes.function.builtins.PythonTernaryClinicBuiltinNode;
7261
import com.oracle.graal.python.nodes.function.builtins.PythonUnaryBuiltinNode;
73-
import com.oracle.graal.python.nodes.function.builtins.clinic.ArgumentClinicProvider;
7462
import com.oracle.graal.python.nodes.object.GetClassNode;
7563
import com.oracle.graal.python.nodes.util.CastToJavaLongExactNode;
7664
import com.oracle.graal.python.nodes.util.CastToJavaStringNode;
@@ -91,41 +79,6 @@ protected List<? extends NodeFactory<? extends PythonBuiltinBaseNode>> getNodeFa
9179
return CountBuiltinsFactory.getFactories();
9280
}
9381

94-
@Builtin(name = __INIT__, minNumOfPositionalArgs = 1, parameterNames = {"$self", "start", "step"})
95-
@ArgumentClinic(name = "start", defaultValue = "0", useDefaultForNone = true)
96-
@ArgumentClinic(name = "step", defaultValue = "1", useDefaultForNone = true)
97-
@GenerateNodeFactory
98-
public abstract static class InitNode extends PythonTernaryClinicBuiltinNode {
99-
@Override
100-
protected ArgumentClinicProvider getArgumentClinic() {
101-
return CountBuiltinsClinicProviders.InitNodeClinicProviderGen.INSTANCE;
102-
}
103-
104-
@Specialization
105-
Object init(VirtualFrame frame, PCount self, Object start, Object step,
106-
@Cached PyObjectTypeCheck typeCheckNode,
107-
@Cached PyObjectLookupAttr lookupAttrNode,
108-
@Cached BranchProfile startNumberProfile,
109-
@Cached BranchProfile stepNumberProfile) {
110-
checkType(frame, start, typeCheckNode, lookupAttrNode, startNumberProfile);
111-
checkType(frame, step, typeCheckNode, lookupAttrNode, stepNumberProfile);
112-
self.setCnt(start);
113-
self.setStep(step);
114-
return PNone.NONE;
115-
}
116-
117-
private void checkType(VirtualFrame frame, Object obj, PyObjectTypeCheck typeCheckNode, PyObjectLookupAttr lookupAttrNode, BranchProfile isNumberProfile) {
118-
if (typeCheckNode.execute(obj, PythonBuiltinClassType.PComplex) ||
119-
lookupAttrNode.execute(frame, obj, __INDEX__) != PNone.NO_VALUE ||
120-
lookupAttrNode.execute(frame, obj, __FLOAT__) != PNone.NO_VALUE ||
121-
lookupAttrNode.execute(frame, obj, __INT__) != PNone.NO_VALUE) {
122-
isNumberProfile.enter();
123-
return;
124-
}
125-
throw raise(TypeError, NUMBER_IS_REQUIRED);
126-
}
127-
}
128-
12982
@Builtin(name = __ITER__, minNumOfPositionalArgs = 1)
13083
@GenerateNodeFactory
13184
public abstract static class IterNode extends PythonUnaryBuiltinNode {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/itertools/DropwhileBuiltins.java

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@
4444
import static com.oracle.graal.python.nodes.ErrorMessages.INVALID_ARGS;
4545
import static com.oracle.graal.python.nodes.SpecialMethodNames.__REDUCE__;
4646
import static com.oracle.graal.python.nodes.SpecialMethodNames.__SETSTATE__;
47-
import static com.oracle.graal.python.nodes.SpecialMethodNames.__INIT__;
4847
import static com.oracle.graal.python.nodes.SpecialMethodNames.__ITER__;
4948
import static com.oracle.graal.python.nodes.SpecialMethodNames.__NEXT__;
5049

@@ -57,12 +56,10 @@
5756
import com.oracle.graal.python.builtins.modules.BuiltinFunctions;
5857
import com.oracle.graal.python.builtins.objects.PNone;
5958
import com.oracle.graal.python.builtins.objects.tuple.PTuple;
60-
import com.oracle.graal.python.lib.PyObjectGetIter;
6159
import com.oracle.graal.python.lib.PyObjectIsTrueNode;
6260
import com.oracle.graal.python.nodes.call.CallNode;
6361
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
6462
import com.oracle.graal.python.nodes.function.builtins.PythonBinaryBuiltinNode;
65-
import com.oracle.graal.python.nodes.function.builtins.PythonTernaryBuiltinNode;
6663
import com.oracle.graal.python.nodes.function.builtins.PythonUnaryBuiltinNode;
6764
import com.oracle.graal.python.nodes.object.GetClassNode;
6865
import com.oracle.graal.python.nodes.util.CannotCastException;
@@ -83,19 +80,6 @@ protected List<? extends NodeFactory<? extends PythonBuiltinBaseNode>> getNodeFa
8380
return DropwhileBuiltinsFactory.getFactories();
8481
}
8582

86-
@Builtin(name = __INIT__, minNumOfPositionalArgs = 3)
87-
@GenerateNodeFactory
88-
public abstract static class InitNode extends PythonTernaryBuiltinNode {
89-
@Specialization
90-
Object init(VirtualFrame frame, PDropwhile self, Object predicate, Object iterable,
91-
@Cached PyObjectGetIter getIter) {
92-
self.setPredicate(predicate);
93-
self.setIterable(getIter.execute(frame, iterable));
94-
self.setDoneDropping(false);
95-
return PNone.NONE;
96-
}
97-
}
98-
9983
@Builtin(name = __ITER__, minNumOfPositionalArgs = 1)
10084
@GenerateNodeFactory
10185
public abstract static class IterNode extends PythonUnaryBuiltinNode {

0 commit comments

Comments
 (0)