Skip to content

Commit ff4d74e

Browse files
committed
Fix transient error in tee builtins
1 parent f51c636 commit ff4d74e

File tree

1 file changed

+10
-16
lines changed
  • graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/itertools

1 file changed

+10
-16
lines changed

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

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@
8080
import com.oracle.graal.python.runtime.object.PFactory;
8181
import com.oracle.truffle.api.dsl.Bind;
8282
import com.oracle.truffle.api.dsl.Cached;
83-
import com.oracle.truffle.api.dsl.Cached.Shared;
8483
import com.oracle.truffle.api.dsl.GenerateNodeFactory;
8584
import com.oracle.truffle.api.dsl.ImportStatic;
8685
import com.oracle.truffle.api.dsl.NeverDefault;
@@ -149,26 +148,21 @@ static Object iter(PTee self) {
149148
@ImportStatic(TeeDataObjectBuiltins.class)
150149
@GenerateNodeFactory
151150
public abstract static class NextNode extends TpIterNextBuiltin {
152-
@Specialization(guards = "self.getIndex() < LINKCELLS")
153-
static Object next(VirtualFrame frame, PTee self,
151+
@Specialization
152+
static Object doIt(VirtualFrame frame, PTee self,
154153
@Bind("this") Node inliningTarget,
155-
@Shared @Cached PyIterNextNode nextNode,
156-
@Shared @Cached PRaiseNode raiseNode) {
154+
@Bind PythonLanguage language,
155+
@Cached InlinedConditionProfile indexConditionProfile,
156+
@Cached PyIterNextNode nextNode,
157+
@Cached PRaiseNode raiseNode) {
158+
if (indexConditionProfile.profile(inliningTarget, self.getIndex() >= LINKCELLS)) {
159+
self.setDataObj(self.getDataobj().jumplink(language));
160+
self.setIndex(0);
161+
}
157162
Object value = self.getDataobj().getItem(frame, inliningTarget, self.getIndex(), nextNode, raiseNode);
158163
self.setIndex(self.getIndex() + 1);
159164
return value;
160165
}
161-
162-
@Specialization(guards = "self.getIndex() >= LINKCELLS")
163-
static Object nextNext(VirtualFrame frame, PTee self,
164-
@Bind("this") Node inliningTarget,
165-
@Shared @Cached PyIterNextNode nextNode,
166-
@Bind PythonLanguage language,
167-
@Shared @Cached PRaiseNode raiseNode) {
168-
self.setDataObj(self.getDataobj().jumplink(language));
169-
self.setIndex(1);
170-
return self.getDataobj().getItem(frame, inliningTarget, 0, nextNode, raiseNode);
171-
}
172166
}
173167

174168
@Builtin(name = J___REDUCE__, minNumOfPositionalArgs = 1)

0 commit comments

Comments
 (0)