Skip to content

Commit 8a1ce01

Browse files
committed
Add missing specialization.
1 parent 1707fab commit 8a1ce01

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,18 @@
4545
import com.oracle.graal.python.builtins.objects.list.ListBuiltins;
4646
import com.oracle.graal.python.builtins.objects.list.ListBuiltinsFactory;
4747
import com.oracle.graal.python.builtins.objects.list.PList;
48+
import com.oracle.graal.python.builtins.objects.object.PythonObject;
4849
import com.oracle.graal.python.builtins.objects.tuple.PTuple;
4950
import com.oracle.graal.python.builtins.objects.tuple.TupleBuiltins;
5051
import com.oracle.graal.python.builtins.objects.tuple.TupleBuiltinsFactory;
5152
import com.oracle.graal.python.builtins.objects.type.PythonClass;
5253
import com.oracle.graal.python.nodes.SpecialMethodNames;
54+
import com.oracle.graal.python.nodes.call.special.LookupAndCallBinaryNode;
5355
import com.oracle.graal.python.nodes.truffle.PythonTypes;
5456
import com.oracle.truffle.api.CompilerDirectives;
5557
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
5658
import com.oracle.truffle.api.dsl.Cached;
59+
import com.oracle.truffle.api.dsl.Fallback;
5760
import com.oracle.truffle.api.dsl.ImportStatic;
5861
import com.oracle.truffle.api.dsl.Specialization;
5962
import com.oracle.truffle.api.dsl.TypeSystemReference;
@@ -74,6 +77,7 @@ abstract static class ReadNode extends Node {
7477
@Child private ToSulongNode toSulongNode;
7578

7679
public Object access(PySequenceArrayWrapper object, Object key) {
80+
System.out.println(object.getDelegate().toString() + "[" + key + "]");
7781
return getToSulongNode().execute(getReadArrayItemNode().execute(object.getDelegate(), key));
7882
}
7983

@@ -146,6 +150,12 @@ Object doTuple(PBytes tuple, long idx) {
146150
return tuple.getInternalByteArray()[(int) idx];
147151
}
148152

153+
@Specialization(guards = {"!isTuple(object)", "!isList(object)"})
154+
Object doGeneric(PythonObject object, long idx,
155+
@Cached("create(__GETITEM__)") LookupAndCallBinaryNode getItemNode) {
156+
return getItemNode.executeObject(object, idx);
157+
}
158+
149159
protected static ListBuiltins.GetItemNode createListGetItem() {
150160
return ListBuiltinsFactory.GetItemNodeFactory.create(null);
151161
}
@@ -154,6 +164,14 @@ protected static TupleBuiltins.GetItemNode createTupleGetItem() {
154164
return TupleBuiltinsFactory.GetItemNodeFactory.create(null);
155165
}
156166

167+
protected boolean isTuple(Object object) {
168+
return object instanceof PTuple;
169+
}
170+
171+
protected boolean isList(Object object) {
172+
return object instanceof PList;
173+
}
174+
157175
public static ReadArrayItemNode create() {
158176
return ReadArrayItemNodeGen.create();
159177
}

0 commit comments

Comments
 (0)