Skip to content

Commit d785617

Browse files
committed
ValueProfile for PSequence iteration
1 parent 6b778ca commit d785617

File tree

1 file changed

+7
-3
lines changed
  • graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/iterator

1 file changed

+7
-3
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/iterator/IteratorBuiltins.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,13 @@
4242
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
4343
import com.oracle.graal.python.nodes.function.builtins.PythonUnaryBuiltinNode;
4444
import com.oracle.graal.python.runtime.exception.PException;
45+
import com.oracle.graal.python.runtime.sequence.PSequence;
4546
import com.oracle.truffle.api.dsl.Cached;
4647
import com.oracle.truffle.api.dsl.GenerateNodeFactory;
4748
import com.oracle.truffle.api.dsl.NodeFactory;
4849
import com.oracle.truffle.api.dsl.Specialization;
4950
import com.oracle.truffle.api.profiles.ConditionProfile;
51+
import com.oracle.truffle.api.profiles.ValueProfile;
5052

5153
@CoreFunctions(extendClasses = PSequenceIterator.class)
5254
public class IteratorBuiltins extends PythonBuiltins {
@@ -145,9 +147,11 @@ public Object next(PBaseSetIterator self) {
145147
}
146148

147149
@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++);
151155
}
152156
self.stopIterationReached = true;
153157
throw raise(StopIteration);

0 commit comments

Comments
 (0)