|
80 | 80 | import com.oracle.graal.python.runtime.object.PFactory;
|
81 | 81 | import com.oracle.truffle.api.dsl.Bind;
|
82 | 82 | import com.oracle.truffle.api.dsl.Cached;
|
83 |
| -import com.oracle.truffle.api.dsl.Cached.Shared; |
84 | 83 | import com.oracle.truffle.api.dsl.GenerateNodeFactory;
|
85 | 84 | import com.oracle.truffle.api.dsl.ImportStatic;
|
86 | 85 | import com.oracle.truffle.api.dsl.NeverDefault;
|
@@ -149,26 +148,21 @@ static Object iter(PTee self) {
|
149 | 148 | @ImportStatic(TeeDataObjectBuiltins.class)
|
150 | 149 | @GenerateNodeFactory
|
151 | 150 | 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, |
154 | 153 | @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 | + } |
157 | 162 | Object value = self.getDataobj().getItem(frame, inliningTarget, self.getIndex(), nextNode, raiseNode);
|
158 | 163 | self.setIndex(self.getIndex() + 1);
|
159 | 164 | return value;
|
160 | 165 | }
|
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 |
| - } |
172 | 166 | }
|
173 | 167 |
|
174 | 168 | @Builtin(name = J___REDUCE__, minNumOfPositionalArgs = 1)
|
|
0 commit comments