Skip to content

Commit 24a0f75

Browse files
committed
Remove obsolete method 'PSequence.delItem'.
1 parent d9bdd1c commit 24a0f75

File tree

7 files changed

+33
-50
lines changed

7 files changed

+33
-50
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/array/PArray.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,6 @@ public void setSlice(PSlice slice, PSequence value) {
5454
throw new UnsupportedOperationException();
5555
}
5656

57-
@Override
58-
public void delItem(int idx) {
59-
throw new UnsupportedOperationException();
60-
}
61-
6257
@Override
6358
public SequenceStorage getSequenceStorage() {
6459
return store;

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

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,6 @@ public PByteArray(PythonClass cls, SequenceStorage store) {
5757
this.store = store;
5858
}
5959

60-
public void setItem(int idx, Object value) {
61-
setItemNormalized(SequenceUtil.normalizeIndex(idx, store.length(), "array index out of range"), value);
62-
}
63-
6460
public void setItemNormalized(int index, Object value) {
6561
try {
6662
store.setItemNormalized(index, value);
@@ -98,12 +94,6 @@ public void setSlice(PSlice slice, PSequence value) {
9894
setSlice(sliceInfo.start, sliceInfo.stop, sliceInfo.step, value);
9995
}
10096

101-
@Override
102-
public void delItem(int idx) {
103-
int index = SequenceUtil.normalizeIndex(idx, store.length(), "array index out of range");
104-
store.delItemInBound(index);
105-
}
106-
10797
@Override
10898
public SequenceStorage getSequenceStorage() {
10999
return store;

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

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -245,23 +245,22 @@ private CastToIndexNode getCastToIndexNode() {
245245
private int normalizeIndex(Object idx, int length) {
246246
int intIdx = getCastToIndexNode().execute(idx);
247247
if (normalizeIndexNode != null) {
248-
return normalizeIndexNode.execute(intIdx, length);
248+
return normalizeIndexNode.doInt(intIdx, length);
249249
}
250250
return intIdx;
251251
}
252252

253253
private int normalizeIndex(int idx, int length) {
254-
int intIdx = getCastToIndexNode().execute(idx);
255254
if (normalizeIndexNode != null) {
256-
return normalizeIndexNode.execute(intIdx, length);
255+
return normalizeIndexNode.doInt(idx, length);
257256
}
258-
return intIdx;
257+
return idx;
259258
}
260259

261260
private int normalizeIndex(long idx, int length) {
262261
int intIdx = getCastToIndexNode().execute(idx);
263262
if (normalizeIndexNode != null) {
264-
return normalizeIndexNode.execute(intIdx, length);
263+
return normalizeIndexNode.doInt(intIdx, length);
265264
}
266265
return intIdx;
267266
}
@@ -1304,7 +1303,7 @@ public NormalizeIndexNode(String errorMessage, boolean boundsCheck) {
13041303
public abstract int execute(Object index, int length);
13051304

13061305
@Specialization
1307-
int doInt(int index, int length) {
1306+
public int doInt(int index, int length) {
13081307
int idx = index;
13091308
if (negativeIndexProfile.profile(idx < 0)) {
13101309
idx += length;

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/list/ListBuiltins.java

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@
9898
import com.oracle.graal.python.runtime.sequence.storage.SetSequenceStorageItem;
9999
import com.oracle.graal.python.runtime.sequence.storage.TupleSequenceStorage;
100100
import com.oracle.truffle.api.CompilerDirectives;
101+
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
101102
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
102103
import com.oracle.truffle.api.dsl.Cached;
103104
import com.oracle.truffle.api.dsl.Fallback;
@@ -672,7 +673,7 @@ public PNone remove(PList list, Object value,
672673
for (int i = 0; i < len; i++) {
673674
Object object = getItemNode.execute(listStore, i);
674675
if (eqNode.executeBool(object, value)) {
675-
list.delItem(i);
676+
listStore.delItemInBound(i);
676677
return PNone.NONE;
677678
}
678679
}
@@ -692,6 +693,8 @@ public abstract static class ListPopNode extends PythonBuiltinNode {
692693

693694
@Child private SequenceStorageNodes.GetItemNode getItemNode;
694695

696+
@CompilationFinal private ValueProfile storeProfile;
697+
695698
@Specialization(guards = "isIntStorage(list)")
696699
public int popInt(PList list, @SuppressWarnings("unused") PNone none,
697700
@Cached("createBinaryProfile()") ConditionProfile isEmpty) {
@@ -725,25 +728,25 @@ public Object popObject(PList list, @SuppressWarnings("unused") PNone none,
725728
}
726729

727730
@Specialization
728-
public Object popLast(PList list, @SuppressWarnings("unused") PNone none,
729-
@Cached("createBinaryProfile()") ConditionProfile isEmpty) {
730-
raiseIndexError(isEmpty.profile(list.len() == 0));
731-
Object ret = getGetItemNode().execute(list.getSequenceStorage(), -1);
732-
list.delItem(list.len() - 1);
731+
public Object popLast(PList list, @SuppressWarnings("unused") PNone none) {
732+
SequenceStorage store = getStoreProfile().profile(list.getSequenceStorage());
733+
int len = store.length();
734+
Object ret = getGetItemNode().execute(store, -1);
735+
store.delItemInBound(len - 1);
733736
return ret;
734737
}
735738

736739
@Specialization
737740
public Object pop(PList list, boolean bindex,
738741
@Cached("createBinaryProfile()") ConditionProfile isOutOfRange) {
739742
int index = bindex ? 1 : 0;
740-
return popOnIndex(list, index, isOutOfRange);
743+
return popOnIndex(list.getSequenceStorage(), index, isOutOfRange);
741744
}
742745

743746
@Specialization
744747
public Object pop(PList list, int index,
745748
@Cached("createBinaryProfile()") ConditionProfile isOutOfRange) {
746-
return popOnIndex(list, index, isOutOfRange);
749+
return popOnIndex(list.getSequenceStorage(), index, isOutOfRange);
747750
}
748751

749752
@Specialization
@@ -765,20 +768,31 @@ protected void raiseIndexError(boolean con) {
765768
}
766769
}
767770

768-
private Object popOnIndex(PList list, int index, ConditionProfile cp) {
769-
int len = list.len();
771+
private Object popOnIndex(SequenceStorage store, int index, ConditionProfile cp) {
772+
773+
SequenceStorage profiled = getStoreProfile().profile(store);
774+
int len = profiled.length();
770775
if (cp.profile((index < 0 && (index + len) < 0) || index >= len)) {
771776
throw raise(PythonErrorType.IndexError, "pop index out of range");
772777
}
773-
Object ret = getGetItemNode().execute(list.getSequenceStorage(), index);
774-
list.delItem(index);
778+
Object ret = getGetItemNode().execute(profiled, index);
779+
// this is safe because index is already verified by 'GetItemNode'
780+
profiled.delItemInBound(index);
775781
return ret;
776782
}
777783

784+
private ValueProfile getStoreProfile() {
785+
if (storeProfile == null) {
786+
CompilerDirectives.transferToInterpreterAndInvalidate();
787+
storeProfile = ValueProfile.createClassProfile();
788+
}
789+
return storeProfile;
790+
}
791+
778792
private SequenceStorageNodes.GetItemNode getGetItemNode() {
779793
if (getItemNode == null) {
780794
CompilerDirectives.transferToInterpreterAndInvalidate();
781-
getItemNode = insert(SequenceStorageNodes.GetItemNode.create());
795+
getItemNode = insert(SequenceStorageNodes.GetItemNode.create(NormalizeIndexNode.create("pop index out of range")));
782796
}
783797
return getItemNode;
784798
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/list/PList.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import com.oracle.graal.python.builtins.objects.slice.PSlice;
2929
import com.oracle.graal.python.builtins.objects.type.PythonClass;
3030
import com.oracle.graal.python.runtime.sequence.PSequence;
31-
import com.oracle.graal.python.runtime.sequence.SequenceUtil;
3231
import com.oracle.graal.python.runtime.sequence.storage.EmptySequenceStorage;
3332
import com.oracle.graal.python.runtime.sequence.storage.SequenceStorage;
3433
import com.oracle.graal.python.runtime.sequence.storage.SequenceStoreException;
@@ -57,7 +56,7 @@ public final void setSequenceStorage(SequenceStorage newStorage) {
5756
@Override
5857
public final void setSlice(PSlice slice, PSequence value) {
5958
// Should not be used. Replaces with ListNodes.SetSliceNode.
60-
// When it will be replaced in other PSequence implementeations,
59+
// When it will be replaced in other PSequence implementations,
6160
// then the setSlice from PSequence can be removed.
6261
throw new UnsupportedOperationException();
6362
}
@@ -67,12 +66,6 @@ public final void setSlice(int start, int stop, int step, PSequence value) {
6766
throw new UnsupportedOperationException();
6867
}
6968

70-
@Override
71-
public final void delItem(int idx) {
72-
int index = SequenceUtil.normalizeIndex(idx, store.length(), "list index out of range");
73-
store.delItemInBound(index);
74-
}
75-
7669
public final void delSlice(PSlice slice) {
7770
PSlice.SliceInfo sliceInfo = slice.computeActualIndices(this.len());
7871
store.delSlice(sliceInfo.start, sliceInfo.stop, sliceInfo.step);

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/runtime/sequence/PImmutableSequence.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,4 @@ public final void setSlice(PSlice slice, PSequence value) {
5858
public final void setSlice(int start, int stop, int step, PSequence value) {
5959
throw new UnsupportedOperationException();
6060
}
61-
62-
@Override
63-
public final void delItem(int idx) {
64-
throw new UnsupportedOperationException();
65-
}
66-
6761
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/runtime/sequence/PSequence.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,6 @@ public PSequence(PythonClass cls) {
4242

4343
public abstract void setSlice(PSlice slice, PSequence value);
4444

45-
public abstract void delItem(int idx);
46-
4745
public abstract SequenceStorage getSequenceStorage();
4846

4947
/**

0 commit comments

Comments
 (0)