|
60 | 60 | import com.oracle.graal.python.builtins.objects.common.SequenceNodes.SetSequenceStorageNode;
|
61 | 61 | import com.oracle.graal.python.builtins.objects.ints.PInt;
|
62 | 62 | import com.oracle.graal.python.builtins.objects.memoryview.PMemoryView;
|
| 63 | +import com.oracle.graal.python.builtins.objects.mmap.PMMap; |
63 | 64 | import com.oracle.graal.python.builtins.objects.object.PythonObject;
|
64 | 65 | import com.oracle.graal.python.nodes.ErrorMessages;
|
65 | 66 | import com.oracle.graal.python.nodes.PRaiseNode;
|
66 | 67 | import com.oracle.graal.python.nodes.object.GetClassNode;
|
| 68 | +import com.oracle.graal.python.runtime.PosixSupportLibrary; |
| 69 | +import com.oracle.graal.python.runtime.PythonContext; |
67 | 70 | import com.oracle.graal.python.runtime.sequence.PSequence;
|
68 | 71 | import com.oracle.graal.python.runtime.sequence.storage.NativeSequenceStorage;
|
69 | 72 | import com.oracle.truffle.api.CompilerDirectives;
|
@@ -114,17 +117,20 @@ private static Object allocate(PMemoryView object) {
|
114 | 117 |
|
115 | 118 | Object buf;
|
116 | 119 | if (object.getBufferPointer() == null) {
|
117 |
| - NativeSequenceStorage nativeStorage; |
| 120 | + Object pointer; |
118 | 121 | if (object.getOwner() instanceof PSequence owner) {
|
119 |
| - nativeStorage = ToNativeStorageNode.executeUncached(GetSequenceStorageNode.executeUncached(owner), owner instanceof PBytesLike); |
| 122 | + NativeSequenceStorage nativeStorage = ToNativeStorageNode.executeUncached(GetSequenceStorageNode.executeUncached(owner), owner instanceof PBytesLike); |
120 | 123 | SetSequenceStorageNode.executeUncached(owner, nativeStorage);
|
| 124 | + pointer = nativeStorage.getPtr(); |
121 | 125 | } else if (object.getOwner() instanceof PArray owner) {
|
122 |
| - nativeStorage = ToNativeStorageNode.executeUncached(owner.getSequenceStorage(), true); |
| 126 | + NativeSequenceStorage nativeStorage = ToNativeStorageNode.executeUncached(owner.getSequenceStorage(), true); |
123 | 127 | owner.setSequenceStorage(nativeStorage);
|
| 128 | + pointer = nativeStorage.getPtr(); |
| 129 | + } else if (object.getOwner() instanceof PMMap owner) { |
| 130 | + pointer = PosixSupportLibrary.getUncached().mmapGetPointer(PythonContext.get(null).getPosixSupport(), owner.getPosixSupportHandle()); |
124 | 131 | } else {
|
125 | 132 | throw shouldNotReachHere("Cannot convert managed object to native storage");
|
126 | 133 | }
|
127 |
| - Object pointer = nativeStorage.getPtr(); |
128 | 134 | if (object.getOffset() == 0) {
|
129 | 135 | buf = pointer;
|
130 | 136 | } else {
|
|
0 commit comments