Skip to content

Commit 0aea685

Browse files
committed
Always use longs for pointer offsets
1 parent a562e65 commit 0aea685

File tree

2 files changed

+9
-13
lines changed

2 files changed

+9
-13
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/ctypes/CtypesNodes.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -433,11 +433,7 @@ static void getBuffer(Node inliningTarget, CDataObject self, Object view, @Suppr
433433
writePointerNode.write(view, CFields.Py_buffer__format, formatPtr);
434434
writeIntNode.write(view, CFields.Py_buffer__ndim, dict.ndim);
435435
Object shapePtr = allocateNode.alloc(dict.shape.length * Long.BYTES);
436-
long[] shapeArray = new long[dict.shape.length];
437-
for (int i = 0; i < dict.shape.length; i++) {
438-
shapeArray[i] = dict.shape[i];
439-
}
440-
writeLongNode.writeLongArray(shapePtr, shapeArray);
436+
writeLongNode.writeIntArray(shapePtr, dict.shape);
441437
writePointerNode.write(view, CFields.Py_buffer__shape, shapePtr);
442438
writeLongNode.write(view, CFields.Py_buffer__itemsize, itemDict.size);
443439
writePointerNode.write(view, CFields.Py_buffer__strides, nativeNull);

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -296,15 +296,15 @@ public final byte[] readByteArray(Object pointer, int elements) {
296296
return readByteArray(pointer, elements, 0);
297297
}
298298

299-
public final byte[] readByteArray(Object pointer, int elements, int sourceOffset) {
299+
public final byte[] readByteArray(Object pointer, int elements, long sourceOffset) {
300300
byte[] result = new byte[elements];
301301
for (int i = 0; i < result.length; i++) {
302302
result[i] = (byte) execute(pointer, (i + sourceOffset) * Byte.BYTES);
303303
}
304304
return result;
305305
}
306306

307-
public final void readByteArray(Object pointer, byte[] target, int length, int sourceOffset, int targetOffset) {
307+
public final void readByteArray(Object pointer, byte[] target, int length, long sourceOffset, int targetOffset) {
308308
for (int i = 0; i < length; i++) {
309309
target[i + targetOffset] = (byte) execute(pointer, (i + sourceOffset) * Byte.BYTES);
310310
}
@@ -1054,7 +1054,7 @@ public final void writeArray(Object pointer, int[] values) {
10541054
writeArray(pointer, values, values.length, 0, 0);
10551055
}
10561056

1057-
public final void writeArray(Object pointer, int[] values, int length, int sourceOffset, int targetOffset) {
1057+
public final void writeArray(Object pointer, int[] values, int length, int sourceOffset, long targetOffset) {
10581058
for (int i = 0; i < length; i++) {
10591059
execute(pointer, (i + targetOffset) * Integer.BYTES, values[i + sourceOffset]);
10601060
}
@@ -1112,7 +1112,7 @@ public final void writeLongArray(Object pointer, long[] values) {
11121112
writeLongArray(pointer, values, values.length, 0, 0);
11131113
}
11141114

1115-
public final void writeLongArray(Object pointer, long[] values, int length, int sourceOffset, int targetOffset) {
1115+
public final void writeLongArray(Object pointer, long[] values, int length, int sourceOffset, long targetOffset) {
11161116
for (int i = 0; i < length; i++) {
11171117
execute(pointer, (i + targetOffset) * Long.BYTES, values[i + sourceOffset]);
11181118
}
@@ -1122,9 +1122,9 @@ public final void writeIntArray(Object pointer, int[] values) {
11221122
writeIntArray(pointer, values, values.length, 0, 0);
11231123
}
11241124

1125-
public final void writeIntArray(Object pointer, int[] values, int length, int sourceOffset, int targetOffset) {
1125+
public final void writeIntArray(Object pointer, int[] values, int length, int sourceOffset, long targetOffset) {
11261126
for (int i = 0; i < length; i++) {
1127-
execute(pointer, (long) (i + targetOffset) * Long.BYTES, values[i + sourceOffset]);
1127+
execute(pointer, (i + targetOffset) * Long.BYTES, values[i + sourceOffset]);
11281128
}
11291129
}
11301130

@@ -1192,7 +1192,7 @@ public final void writeArrayElement(Object pointer, long element, Object value)
11921192
execute(pointer, element * POINTER_SIZE, value);
11931193
}
11941194

1195-
public final void writePointerArray(Object pointer, long[] values, int length, int sourceOffset, int targetOffset) {
1195+
public final void writePointerArray(Object pointer, long[] values, int length, int sourceOffset, long targetOffset) {
11961196
for (int i = 0; i < length; i++) {
11971197
execute(pointer, (i + targetOffset) * POINTER_SIZE, values[i + sourceOffset]);
11981198
}
@@ -1250,7 +1250,7 @@ public final boolean accepts(ArgDescriptor desc) {
12501250
return desc.isPyObject();
12511251
}
12521252

1253-
public final void writeArray(Object pointer, Object[] values, int length, int sourceOffset, int targetOffset) {
1253+
public final void writeArray(Object pointer, Object[] values, int length, int sourceOffset, long targetOffset) {
12541254
if (length > values.length) {
12551255
throw CompilerDirectives.shouldNotReachHere();
12561256
}

0 commit comments

Comments
 (0)