Skip to content

Commit a5d52a6

Browse files
committed
range builtins
1 parent e11cec2 commit a5d52a6

File tree

1 file changed

+6
-4
lines changed
  • graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/range

1 file changed

+6
-4
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/range/RangeBuiltins.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,10 @@
4242
import com.oracle.graal.python.builtins.objects.PNotImplemented;
4343
import com.oracle.graal.python.builtins.objects.common.IndexNodes.NormalizeIndexNode;
4444
import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes;
45+
import com.oracle.graal.python.builtins.objects.function.PArguments;
4546
import com.oracle.graal.python.builtins.objects.ints.PInt;
4647
import com.oracle.graal.python.builtins.objects.iterator.PIntegerIterator;
48+
import com.oracle.graal.python.builtins.objects.object.PythonObjectLibrary;
4749
import com.oracle.graal.python.builtins.objects.slice.PSlice;
4850
import com.oracle.graal.python.builtins.objects.slice.PSlice.SliceInfo;
4951
import com.oracle.graal.python.nodes.expression.BinaryComparisonNode;
@@ -53,7 +55,6 @@
5355
import com.oracle.graal.python.nodes.function.builtins.PythonBinaryBuiltinNode;
5456
import com.oracle.graal.python.nodes.function.builtins.PythonUnaryBuiltinNode;
5557
import com.oracle.graal.python.nodes.truffle.PythonArithmeticTypes;
56-
import com.oracle.graal.python.nodes.util.CastToIndexNode;
5758
import com.oracle.graal.python.runtime.exception.PException;
5859
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
5960
import com.oracle.truffle.api.dsl.Cached;
@@ -63,6 +64,7 @@
6364
import com.oracle.truffle.api.dsl.Specialization;
6465
import com.oracle.truffle.api.dsl.TypeSystemReference;
6566
import com.oracle.truffle.api.frame.VirtualFrame;
67+
import com.oracle.truffle.api.library.CachedLibrary;
6668
import com.oracle.truffle.api.profiles.ConditionProfile;
6769

6870
@CoreFunctions(extendClasses = PythonBuiltinClassType.PRange)
@@ -271,11 +273,11 @@ int doInt(PRange self, int elem) {
271273
throw raise(ValueError, "%d is not in range", elem);
272274
}
273275

274-
@Specialization
276+
@Specialization(limit = "getCallSiteInlineCacheMaxDepth()")
275277
Object doGeneric(VirtualFrame frame, PRange self, Object elem,
276-
@Cached CastToIndexNode castToIntNode) {
278+
@CachedLibrary("elem") PythonObjectLibrary lib) {
277279
try {
278-
return doInt(self, castToIntNode.execute(frame, elem));
280+
return doInt(self, lib.asIndexWithState(elem, PArguments.getThreadState(frame)));
279281
} catch (PException e) {
280282
throw raise(ValueError, "%s is not in range", elem);
281283
}

0 commit comments

Comments
 (0)