|
42 | 42 | import com.oracle.graal.python.builtins.objects.PNotImplemented;
|
43 | 43 | import com.oracle.graal.python.builtins.objects.common.IndexNodes.NormalizeIndexNode;
|
44 | 44 | import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes;
|
| 45 | +import com.oracle.graal.python.builtins.objects.function.PArguments; |
45 | 46 | import com.oracle.graal.python.builtins.objects.ints.PInt;
|
46 | 47 | import com.oracle.graal.python.builtins.objects.iterator.PIntegerIterator;
|
| 48 | +import com.oracle.graal.python.builtins.objects.object.PythonObjectLibrary; |
47 | 49 | import com.oracle.graal.python.builtins.objects.slice.PSlice;
|
48 | 50 | import com.oracle.graal.python.builtins.objects.slice.PSlice.SliceInfo;
|
49 | 51 | import com.oracle.graal.python.nodes.expression.BinaryComparisonNode;
|
|
53 | 55 | import com.oracle.graal.python.nodes.function.builtins.PythonBinaryBuiltinNode;
|
54 | 56 | import com.oracle.graal.python.nodes.function.builtins.PythonUnaryBuiltinNode;
|
55 | 57 | import com.oracle.graal.python.nodes.truffle.PythonArithmeticTypes;
|
56 |
| -import com.oracle.graal.python.nodes.util.CastToIndexNode; |
57 | 58 | import com.oracle.graal.python.runtime.exception.PException;
|
58 | 59 | import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
|
59 | 60 | import com.oracle.truffle.api.dsl.Cached;
|
|
63 | 64 | import com.oracle.truffle.api.dsl.Specialization;
|
64 | 65 | import com.oracle.truffle.api.dsl.TypeSystemReference;
|
65 | 66 | import com.oracle.truffle.api.frame.VirtualFrame;
|
| 67 | +import com.oracle.truffle.api.library.CachedLibrary; |
66 | 68 | import com.oracle.truffle.api.profiles.ConditionProfile;
|
67 | 69 |
|
68 | 70 | @CoreFunctions(extendClasses = PythonBuiltinClassType.PRange)
|
@@ -271,11 +273,11 @@ int doInt(PRange self, int elem) {
|
271 | 273 | throw raise(ValueError, "%d is not in range", elem);
|
272 | 274 | }
|
273 | 275 |
|
274 |
| - @Specialization |
| 276 | + @Specialization(limit = "getCallSiteInlineCacheMaxDepth()") |
275 | 277 | Object doGeneric(VirtualFrame frame, PRange self, Object elem,
|
276 |
| - @Cached CastToIndexNode castToIntNode) { |
| 278 | + @CachedLibrary("elem") PythonObjectLibrary lib) { |
277 | 279 | try {
|
278 |
| - return doInt(self, castToIntNode.execute(frame, elem)); |
| 280 | + return doInt(self, lib.asIndexWithState(elem, PArguments.getThreadState(frame))); |
279 | 281 | } catch (PException e) {
|
280 | 282 | throw raise(ValueError, "%s is not in range", elem);
|
281 | 283 | }
|
|
0 commit comments