|
42 | 42 | import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
|
43 | 43 | import com.oracle.graal.python.nodes.function.builtins.PythonUnaryBuiltinNode;
|
44 | 44 | import com.oracle.graal.python.runtime.exception.PException;
|
| 45 | +import com.oracle.graal.python.runtime.sequence.PSequence; |
45 | 46 | import com.oracle.truffle.api.dsl.Cached;
|
46 | 47 | import com.oracle.truffle.api.dsl.GenerateNodeFactory;
|
47 | 48 | import com.oracle.truffle.api.dsl.NodeFactory;
|
48 | 49 | import com.oracle.truffle.api.dsl.Specialization;
|
49 | 50 | import com.oracle.truffle.api.profiles.ConditionProfile;
|
| 51 | +import com.oracle.truffle.api.profiles.ValueProfile; |
50 | 52 |
|
51 | 53 | @CoreFunctions(extendClasses = PSequenceIterator.class)
|
52 | 54 | public class IteratorBuiltins extends PythonBuiltins {
|
@@ -145,9 +147,11 @@ public Object next(PBaseSetIterator self) {
|
145 | 147 | }
|
146 | 148 |
|
147 | 149 | @Specialization(guards = "self.isPSequence()")
|
148 |
| - public Object next(PSequenceIterator self) { |
149 |
| - if (!self.stopIterationReached && self.index < self.getPSequence().len()) { |
150 |
| - return self.getPSequence().getItem(self.index++); |
| 150 | + public Object next(PSequenceIterator self, |
| 151 | + @Cached("createClassProfile()") ValueProfile sequenceProfile) { |
| 152 | + PSequence sequence = sequenceProfile.profile(self.getPSequence()); |
| 153 | + if (!self.stopIterationReached && self.index < sequence.len()) { |
| 154 | + return sequence.getItem(self.index++); |
151 | 155 | }
|
152 | 156 | self.stopIterationReached = true;
|
153 | 157 | throw raise(StopIteration);
|
|
0 commit comments