Skip to content

Commit 130b21a

Browse files
qunaibitcosminbasca
authored andcommitted
[GR-23259] make test_slice pass
1 parent 9d6c0d3 commit 130b21a

24 files changed

+917
-302
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,9 @@
1+
*graalpython.lib-python.3.test.test_slice.SliceTest.test_cmp
12
*graalpython.lib-python.3.test.test_slice.SliceTest.test_constructor
3+
*graalpython.lib-python.3.test.test_slice.SliceTest.test_cycle
4+
*graalpython.lib-python.3.test.test_slice.SliceTest.test_hash
5+
*graalpython.lib-python.3.test.test_slice.SliceTest.test_indices
6+
*graalpython.lib-python.3.test.test_slice.SliceTest.test_members
7+
*graalpython.lib-python.3.test.test_slice.SliceTest.test_pickle
28
*graalpython.lib-python.3.test.test_slice.SliceTest.test_repr
9+
*graalpython.lib-python.3.test.test_slice.SliceTest.test_setslice_without_getslice

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/BuiltinConstructors.java

Lines changed: 11 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@
2727

2828
import static com.oracle.graal.python.builtins.objects.cext.NativeCAPISymbols.FUN_ADD_NATIVE_SLOTS;
2929
import static com.oracle.graal.python.builtins.objects.cext.NativeCAPISymbols.FUN_PY_OBJECT_NEW;
30-
import static com.oracle.graal.python.builtins.objects.range.PRange.getLenOfRange;
31-
import static com.oracle.graal.python.builtins.objects.slice.PSlice.MISSING_INDEX;
30+
import static com.oracle.graal.python.builtins.objects.range.RangeUtils.canBeInt;
31+
import static com.oracle.graal.python.builtins.objects.range.RangeUtils.canBePint;
3232
import static com.oracle.graal.python.nodes.BuiltinNames.BOOL;
3333
import static com.oracle.graal.python.nodes.BuiltinNames.BYTEARRAY;
3434
import static com.oracle.graal.python.nodes.BuiltinNames.BYTES;
@@ -207,7 +207,6 @@
207207
import com.oracle.graal.python.runtime.PythonCore;
208208
import com.oracle.graal.python.runtime.exception.PException;
209209
import com.oracle.graal.python.runtime.object.PythonObjectFactory;
210-
import com.oracle.graal.python.runtime.sequence.PSequence;
211210
import com.oracle.graal.python.runtime.sequence.storage.ByteSequenceStorage;
212211
import com.oracle.graal.python.runtime.sequence.storage.ObjectSequenceStorage;
213212
import com.oracle.graal.python.runtime.sequence.storage.SequenceStorage;
@@ -3163,39 +3162,25 @@ Object call(Object getSetClass, PNone get, PNone set, String name, PythonAbstrac
31633162
@Builtin(name = "slice", minNumOfPositionalArgs = 2, maxNumOfPositionalArgs = 4, constructsClass = PythonBuiltinClassType.PSlice)
31643163
@GenerateNodeFactory
31653164
public abstract static class CreateSliceNode extends PythonBuiltinNode {
3165+
31663166
@Specialization(guards = {"isNoValue(second)", "isNoValue(third)"})
31673167
@SuppressWarnings("unused")
3168-
Object sliceStop(Object cls, int first, PNone second, PNone third) {
3169-
return factory().createSlice(MISSING_INDEX, first, MISSING_INDEX);
3170-
}
3171-
3172-
@Specialization(guards = "isNoValue(third)")
3173-
Object sliceStart(@SuppressWarnings("unused") Object cls, int first, int second, @SuppressWarnings("unused") PNone third) {
3174-
return factory().createSlice(first, second, MISSING_INDEX);
3175-
}
3176-
3177-
@Specialization
3178-
Object slice(@SuppressWarnings("unused") Object cls, int first, int second, int third) {
3179-
return factory().createSlice(first, second, third);
3180-
}
3181-
3182-
@Specialization(guards = "isNoValue(third)")
3183-
Object slice(VirtualFrame frame, @SuppressWarnings("unused") Object cls, Object first, Object second, @SuppressWarnings("unused") PNone third,
3168+
Object stop(VirtualFrame frame, Object cls, Object first, Object second, Object third,
31843169
@Cached("create()") SliceLiteralNode sliceNode) {
3185-
return sliceNode.execute(frame, first, second, MISSING_INDEX);
3170+
return sliceNode.execute(frame, PNone.NONE, first, PNone.NONE);
31863171
}
31873172

3188-
@Specialization(guards = {"isNoValue(second)", "isNoValue(third)"})
3173+
@Specialization(guards = {"!isNoValue(second)", "isNoValue(third)"})
31893174
@SuppressWarnings("unused")
3190-
Object slice(VirtualFrame frame, Object cls, Object first, PNone second, PNone third,
3175+
Object startStop(VirtualFrame frame, Object cls, Object first, Object second, Object third,
31913176
@Cached("create()") SliceLiteralNode sliceNode) {
3192-
return sliceNode.execute(frame, MISSING_INDEX, first, MISSING_INDEX);
3177+
return sliceNode.execute(frame, first, second, PNone.NONE);
31933178
}
31943179

3195-
@Specialization(guards = {"!isNoValue(stop)", "!isNoValue(step)"})
3196-
Object slice(VirtualFrame frame, @SuppressWarnings("unused") Object cls, Object start, Object stop, Object step,
3180+
@Specialization(guards = {"!isNoValue(second)", "!isNoValue(third)"})
3181+
Object slice(VirtualFrame frame, @SuppressWarnings("unused") Object cls, Object first, Object second, Object third,
31973182
@Cached("create()") SliceLiteralNode sliceNode) {
3198-
return sliceNode.execute(frame, start, stop, step);
3183+
return sliceNode.execute(frame, first, second, third);
31993184
}
32003185
}
32013186

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/SysModuleBuiltins.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ public class SysModuleBuiltins extends PythonBuiltins {
108108
public static final String PLATFORM_DARWIN = "darwin";
109109
public static final String PLATFORM_WIN32 = "win32";
110110
public static final PNone FRAMEWORK = PNone.NONE;
111+
public static final int MAXSIZE = Integer.MAX_VALUE;
111112

112113
static {
113114
String compile_time;
@@ -135,7 +136,7 @@ public void initialize(PythonCore core) {
135136
builtinConstants.put("modules", core.factory().createDict());
136137
builtinConstants.put("path", core.factory().createList());
137138
builtinConstants.put("builtin_module_names", core.factory().createTuple(core.builtinModuleNames()));
138-
builtinConstants.put("maxsize", Integer.MAX_VALUE);
139+
builtinConstants.put("maxsize", MAXSIZE);
139140
builtinConstants.put("version_info", core.factory().createTuple(new Object[]{PythonLanguage.MAJOR, PythonLanguage.MINOR, PythonLanguage.MICRO, "dev", 0}));
140141
builtinConstants.put("version", PythonLanguage.VERSION +
141142
" (" + COMPILE_TIME + ")" +

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/bytes/ByteArrayBuiltins.java

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626

2727
package com.oracle.graal.python.builtins.objects.bytes;
2828

29-
import static com.oracle.graal.python.builtins.objects.slice.PSlice.MISSING_INDEX;
3029
import static com.oracle.graal.python.nodes.SpecialMethodNames.__DELITEM__;
3130
import static com.oracle.graal.python.nodes.SpecialMethodNames.__IADD__;
3231
import static com.oracle.graal.python.nodes.SpecialMethodNames.__SETITEM__;
@@ -46,9 +45,7 @@
4645
import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes;
4746
import com.oracle.graal.python.builtins.objects.memoryview.PMemoryView;
4847
import com.oracle.graal.python.builtins.objects.object.PythonObjectLibrary;
49-
import com.oracle.graal.python.builtins.objects.range.PRange;
5048
import com.oracle.graal.python.builtins.objects.slice.PSlice;
51-
import com.oracle.graal.python.builtins.objects.tuple.PTuple;
5249
import com.oracle.graal.python.nodes.ErrorMessages;
5350
import com.oracle.graal.python.nodes.SpecialMethodNames;
5451
import com.oracle.graal.python.nodes.call.special.LookupAndCallUnaryNode;
@@ -57,8 +54,8 @@
5754
import com.oracle.graal.python.nodes.function.builtins.PythonBinaryBuiltinNode;
5855
import com.oracle.graal.python.nodes.function.builtins.PythonTernaryBuiltinNode;
5956
import com.oracle.graal.python.nodes.function.builtins.PythonUnaryBuiltinNode;
57+
import com.oracle.graal.python.nodes.subscript.SliceLiteralNode;
6058
import com.oracle.graal.python.nodes.truffle.PythonArithmeticTypes;
61-
import com.oracle.graal.python.runtime.sequence.PSequence;
6259
import com.oracle.graal.python.runtime.sequence.storage.SequenceStorage;
6360
import com.oracle.truffle.api.dsl.Cached;
6461
import com.oracle.truffle.api.dsl.Fallback;
@@ -164,10 +161,6 @@ protected static SequenceStorageNodes.ExtendNode createExtend() {
164161
return SequenceStorageNodes.ExtendNode.create(BytesLikeNoGeneralizationNode.SUPPLIER);
165162
}
166163

167-
protected boolean isPSequenceWithStorage(Object source) {
168-
return (source instanceof PSequence && !(source instanceof PTuple || source instanceof PRange));
169-
}
170-
171164
}
172165

173166
// bytearray.copy()
@@ -201,8 +194,9 @@ public abstract static class ByteArrayClearNode extends PythonUnaryBuiltinNode {
201194

202195
@Specialization
203196
public PNone clear(VirtualFrame frame, PByteArray byteArray,
204-
@Cached("create()") SequenceStorageNodes.DeleteNode deleteNode) {
205-
deleteNode.execute(frame, byteArray.getSequenceStorage(), factory().createSlice(MISSING_INDEX, MISSING_INDEX, 1));
197+
@Cached("create()") SequenceStorageNodes.DeleteNode deleteNode,
198+
@Cached SliceLiteralNode slice) {
199+
deleteNode.execute(frame, byteArray.getSequenceStorage(), slice.execute(frame, PNone.NONE, PNone.NONE, 1));
206200
return PNone.NONE;
207201
}
208202
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/DynamicObjectNativeWrapper.java

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -309,12 +309,6 @@ protected static boolean eq(NativeMember expected, String actual) {
309309
return expected.getMemberName().equals(actual);
310310
}
311311

312-
protected static Object getSliceComponent(int sliceComponent) {
313-
if (sliceComponent == PSlice.MISSING_INDEX) {
314-
return PNone.NONE;
315-
}
316-
return sliceComponent;
317-
}
318312
}
319313

320314
@GenerateUncached
@@ -817,19 +811,19 @@ static int doBufReadonly(PBuffer object, @SuppressWarnings("unused") PythonNativ
817811
@Specialization(guards = "eq(START, key)")
818812
static Object doStart(PSlice object, @SuppressWarnings("unused") PythonNativeWrapper nativeWrapper, @SuppressWarnings("unused") String key,
819813
@Shared("toSulongNode") @Cached CExtNodes.ToSulongNode toSulongNode) {
820-
return toSulongNode.execute(getSliceComponent(object.getStart()));
814+
return toSulongNode.execute(object.getStart());
821815
}
822816

823817
@Specialization(guards = "eq(STOP, key)")
824818
static Object doStop(PSlice object, @SuppressWarnings("unused") PythonNativeWrapper nativeWrapper, @SuppressWarnings("unused") String key,
825819
@Shared("toSulongNode") @Cached CExtNodes.ToSulongNode toSulongNode) {
826-
return toSulongNode.execute(getSliceComponent(object.getStop()));
820+
return toSulongNode.execute(object.getStop());
827821
}
828822

829823
@Specialization(guards = "eq(STEP, key)")
830824
static Object doStep(PSlice object, @SuppressWarnings("unused") PythonNativeWrapper nativeWrapper, @SuppressWarnings("unused") String key,
831825
@Shared("toSulongNode") @Cached CExtNodes.ToSulongNode toSulongNode) {
832-
return toSulongNode.execute(getSliceComponent(object.getStep()));
826+
return toSulongNode.execute(object.getStep());
833827
}
834828

835829
@Specialization(guards = "eq(IM_SELF, key)")

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/common/SequenceNodes.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
package com.oracle.graal.python.builtins.objects.common;
4242

4343
import com.oracle.graal.python.builtins.objects.object.PythonObjectLibrary;
44-
import com.oracle.graal.python.builtins.objects.range.PRange;
4544
import com.oracle.graal.python.builtins.objects.str.PString;
4645
import com.oracle.graal.python.nodes.PGuards;
4746
import com.oracle.graal.python.runtime.sequence.PSequence;
@@ -68,11 +67,6 @@ int doPString(PString str,
6867
return lib.length(str);
6968
}
7069

71-
@Specialization
72-
int doPRange(PRange range) {
73-
return range.len();
74-
}
75-
7670
@Specialization(guards = {"!isPString(seq)", "!isPRange(seq)"})
7771
int doWithStorage(PSequence seq,
7872
@Cached SequenceNodes.GetSequenceStorageNode getStorage,

0 commit comments

Comments
 (0)