|
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