Skip to content

Commit cae034b

Browse files
committed
list: ObjectSequenceStorage can contain native objects
1 parent 698febd commit cae034b

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextListBuiltins.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
import com.oracle.graal.python.builtins.objects.PNone;
6767
import com.oracle.graal.python.builtins.objects.cext.PythonAbstractNativeObject;
6868
import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes.XDecRefPointerNode;
69+
import com.oracle.graal.python.builtins.objects.cext.capi.PySequenceArrayWrapper;
6970
import com.oracle.graal.python.builtins.objects.cext.structs.CStructAccess;
7071
import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes.GetItemScalarNode;
7172
import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes.ListGeneralizationNode;
@@ -331,8 +332,14 @@ abstract static class PyTruffleList_TryGetItems extends CApiBinaryBuiltinNode {
331332

332333
@Specialization
333334
static long doGeneric(PList self, Object outItems,
334-
@Cached CStructAccess.WritePointerNode writePointerNode) {
335+
@Bind("this") Node inliningTarget,
336+
@Cached CStructAccess.WritePointerNode writePointerNode,
337+
@Cached PySequenceArrayWrapper.ToNativeStorageNode toNativeStorageNode) {
335338
SequenceStorage sequenceStorage = self.getSequenceStorage();
339+
if (sequenceStorage instanceof ObjectSequenceStorage objectStorage) {
340+
sequenceStorage = toNativeStorageNode.execute(inliningTarget, objectStorage, false);
341+
self.setSequenceStorage(sequenceStorage);
342+
}
336343
if (sequenceStorage instanceof NativeObjectSequenceStorage nativeStorage) {
337344
writePointerNode.write(outItems, nativeStorage.getPtr());
338345
return nativeStorage.length();

0 commit comments

Comments
 (0)