|
66 | 66 | import com.oracle.graal.python.builtins.objects.PNone;
|
67 | 67 | import com.oracle.graal.python.builtins.objects.cext.PythonAbstractNativeObject;
|
68 | 68 | import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes.XDecRefPointerNode;
|
| 69 | +import com.oracle.graal.python.builtins.objects.cext.capi.PySequenceArrayWrapper; |
69 | 70 | import com.oracle.graal.python.builtins.objects.cext.structs.CStructAccess;
|
70 | 71 | import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes.GetItemScalarNode;
|
71 | 72 | import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes.ListGeneralizationNode;
|
@@ -331,8 +332,14 @@ abstract static class PyTruffleList_TryGetItems extends CApiBinaryBuiltinNode {
|
331 | 332 |
|
332 | 333 | @Specialization
|
333 | 334 | 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) { |
335 | 338 | SequenceStorage sequenceStorage = self.getSequenceStorage();
|
| 339 | + if (sequenceStorage instanceof ObjectSequenceStorage objectStorage) { |
| 340 | + sequenceStorage = toNativeStorageNode.execute(inliningTarget, objectStorage, false); |
| 341 | + self.setSequenceStorage(sequenceStorage); |
| 342 | + } |
336 | 343 | if (sequenceStorage instanceof NativeObjectSequenceStorage nativeStorage) {
|
337 | 344 | writePointerNode.write(outItems, nativeStorage.getPtr());
|
338 | 345 | return nativeStorage.length();
|
|
0 commit comments