Skip to content

Commit bc2f247

Browse files
committed
[GR-21867] Convert PIBytesLike interface to PBytesLike abstract class
PullRequest: graalpython/1222
2 parents 6886e4f + 267b7c3 commit bc2f247

32 files changed

+508
-548
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/BinasciiModuleBuiltins.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
import com.oracle.graal.python.builtins.objects.array.PArray;
5757
import com.oracle.graal.python.builtins.objects.bytes.BytesNodes;
5858
import com.oracle.graal.python.builtins.objects.bytes.PBytes;
59-
import com.oracle.graal.python.builtins.objects.bytes.PIBytesLike;
59+
import com.oracle.graal.python.builtins.objects.bytes.PBytesLike;
6060
import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes;
6161
import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodesFactory.ToByteArrayNodeGen;
6262
import com.oracle.graal.python.builtins.objects.ints.PInt;
@@ -120,7 +120,7 @@ PBytes doString(String data) {
120120
}
121121

122122
@Specialization
123-
PBytes doBytesLike(VirtualFrame frame, PIBytesLike data,
123+
PBytes doBytesLike(VirtualFrame frame, PBytesLike data,
124124
@Cached("create()") BytesNodes.ToBytesNode toBytesNode) {
125125
return factory().createBytes(b64decode(toBytesNode.execute(frame, data)));
126126
}
@@ -275,22 +275,22 @@ private PBytes b2a(byte[] data, boolean newline) {
275275
}
276276

277277
@Specialization(guards = "isNoValue(newline)")
278-
PBytes b2aBytesLike(PIBytesLike data, @SuppressWarnings("unused") PNone newline) {
278+
PBytes b2aBytesLike(PBytesLike data, @SuppressWarnings("unused") PNone newline) {
279279
return b2aBytesLike(data, 1);
280280
}
281281

282282
@Specialization
283-
PBytes b2aBytesLike(PIBytesLike data, long newline) {
283+
PBytes b2aBytesLike(PBytesLike data, long newline) {
284284
return b2a(getToByteArrayNode().execute(data.getSequenceStorage()), newline != 0);
285285
}
286286

287287
@Specialization
288-
PBytes b2aBytesLike(PIBytesLike data, PInt newline) {
288+
PBytes b2aBytesLike(PBytesLike data, PInt newline) {
289289
return b2a(getToByteArrayNode().execute(data.getSequenceStorage()), !newline.isZero());
290290
}
291291

292292
@Specialization(limit = "1")
293-
PBytes b2aBytesLike(VirtualFrame frame, PIBytesLike data, Object newline,
293+
PBytes b2aBytesLike(VirtualFrame frame, PBytesLike data, Object newline,
294294
@CachedLibrary("newline") PythonObjectLibrary lib) {
295295
return (PBytes) getRecursiveNode().execute(frame, data, asPInt(newline, lib));
296296
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/BuiltinConstructors.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@
107107
import com.oracle.graal.python.builtins.objects.bytes.BytesUtils;
108108
import com.oracle.graal.python.builtins.objects.bytes.PByteArray;
109109
import com.oracle.graal.python.builtins.objects.bytes.PBytes;
110-
import com.oracle.graal.python.builtins.objects.bytes.PIBytesLike;
110+
import com.oracle.graal.python.builtins.objects.bytes.PBytesLike;
111111
import com.oracle.graal.python.builtins.objects.cell.PCell;
112112
import com.oracle.graal.python.builtins.objects.cext.CExtNodes;
113113
import com.oracle.graal.python.builtins.objects.cext.CExtNodes.PCallCapiFunction;
@@ -913,7 +913,7 @@ Object floatFromString(VirtualFrame frame, Object cls, String arg) {
913913
return factoryCreateFloat(cls, value);
914914
}
915915

916-
private double convertBytesToDouble(VirtualFrame frame, PIBytesLike arg) {
916+
private double convertBytesToDouble(VirtualFrame frame, PBytesLike arg) {
917917
return convertStringToDouble(frame, createString(getByteArray(frame, arg)), arg);
918918
}
919919

@@ -998,8 +998,8 @@ static boolean isHandledType(PythonObjectLibrary lib, Object o) {
998998
// These types are handled only if the object doesn't implement __float__/__index__
999999
if (obj instanceof PString) {
10001000
return convertStringToDouble(frame, ((PString) obj).getValue(), obj);
1001-
} else if (obj instanceof PIBytesLike) {
1002-
return convertBytesToDouble(frame, (PIBytesLike) obj);
1001+
} else if (obj instanceof PBytesLike) {
1002+
return convertBytesToDouble(frame, (PBytesLike) obj);
10031003
} else if (lib.isBuffer(obj)) {
10041004
try {
10051005
return convertStringToDouble(frame, createString(lib.getBufferBytes(obj)), obj);
@@ -1046,7 +1046,7 @@ protected static boolean isSubtypeOfFloat(VirtualFrame frame, IsSubtypeNode isSu
10461046
return isSubtypeNode.execute(frame, cls, PythonBuiltinClassType.PFloat);
10471047
}
10481048

1049-
private byte[] getByteArray(VirtualFrame frame, PIBytesLike pByteArray) {
1049+
private byte[] getByteArray(VirtualFrame frame, PBytesLike pByteArray) {
10501050
if (toByteArrayNode == null) {
10511051
CompilerDirectives.transferToInterpreterAndInvalidate();
10521052
toByteArrayNode = insert(BytesNodes.ToBytesNode.create());
@@ -1398,13 +1398,13 @@ Object createIntError(VirtualFrame frame, Object cls, String number, Object base
13981398
// PIBytesLike
13991399

14001400
@Specialization
1401-
Object parseBytesError(VirtualFrame frame, Object cls, PIBytesLike arg, int base) {
1401+
Object parseBytesError(VirtualFrame frame, Object cls, PBytesLike arg, int base) {
14021402
checkBase(base);
14031403
return stringToInt(frame, cls, toString(frame, arg), base, arg);
14041404
}
14051405

14061406
@Specialization(guards = "isNoValue(base)")
1407-
Object parseBytesError(VirtualFrame frame, Object cls, PIBytesLike arg, @SuppressWarnings("unused") PNone base) {
1407+
Object parseBytesError(VirtualFrame frame, Object cls, PBytesLike arg, @SuppressWarnings("unused") PNone base) {
14081408
return parseBytesError(frame, cls, arg, 10);
14091409
}
14101410

@@ -1552,7 +1552,7 @@ private Object callTrunc(VirtualFrame frame, Object obj) {
15521552
return callTruncNode.executeObject(frame, obj);
15531553
}
15541554

1555-
private String toString(VirtualFrame frame, PIBytesLike pByteArray) {
1555+
private String toString(VirtualFrame frame, PBytesLike pByteArray) {
15561556
if (toByteArrayNode == null) {
15571557
CompilerDirectives.transferToInterpreterAndInvalidate();
15581558
toByteArrayNode = insert(BytesNodes.ToBytesNode.create());

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/BuiltinFunctions.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@
8585
import com.oracle.graal.python.builtins.objects.PNone;
8686
import com.oracle.graal.python.builtins.objects.bytes.BytesUtils;
8787
import com.oracle.graal.python.builtins.objects.bytes.PBytes;
88-
import com.oracle.graal.python.builtins.objects.bytes.PIBytesLike;
88+
import com.oracle.graal.python.builtins.objects.bytes.PBytesLike;
8989
import com.oracle.graal.python.builtins.objects.code.PCode;
9090
import com.oracle.graal.python.builtins.objects.common.HashingCollectionNodes;
9191
import com.oracle.graal.python.builtins.objects.common.HashingStorageLibrary;
@@ -1551,7 +1551,7 @@ public int ord(PString pchr,
15511551
}
15521552

15531553
@Specialization
1554-
public long ord(VirtualFrame frame, PIBytesLike chr,
1554+
public long ord(VirtualFrame frame, PBytesLike chr,
15551555
@Cached CastToJavaLongExactNode castNode,
15561556
@Cached SequenceStorageNodes.LenNode lenNode,
15571557
@Cached SequenceStorageNodes.GetItemNode getItemNode) {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/CodecsModuleBuiltins.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
import com.oracle.graal.python.builtins.objects.bytes.BytesNodes;
6363
import com.oracle.graal.python.builtins.objects.bytes.BytesUtils;
6464
import com.oracle.graal.python.builtins.objects.bytes.PBytes;
65-
import com.oracle.graal.python.builtins.objects.bytes.PIBytesLike;
65+
import com.oracle.graal.python.builtins.objects.bytes.PBytesLike;
6666
import com.oracle.graal.python.builtins.objects.common.HashingStorage;
6767
import com.oracle.graal.python.builtins.objects.common.HashingStorageLibrary;
6868
import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes;
@@ -146,14 +146,14 @@ Object encode(Object str, @SuppressWarnings("unused") Object errors) {
146146
@Builtin(name = "unicode_escape_decode", minNumOfPositionalArgs = 1, parameterNames = {"str", "errors"})
147147
@GenerateNodeFactory
148148
abstract static class UnicodeEscapeDecode extends PythonBinaryBuiltinNode {
149-
@Specialization(guards = "isBytes(bytes)")
150-
Object encode(VirtualFrame frame, Object bytes, @SuppressWarnings("unused") PNone errors,
149+
@Specialization
150+
Object encode(VirtualFrame frame, PBytesLike bytes, @SuppressWarnings("unused") PNone errors,
151151
@Shared("toBytes") @Cached("create()") BytesNodes.ToBytesNode toBytes) {
152152
return encode(frame, bytes, "", toBytes);
153153
}
154154

155-
@Specialization(guards = "isBytes(bytes)")
156-
Object encode(VirtualFrame frame, Object bytes, @SuppressWarnings("unused") String errors,
155+
@Specialization
156+
Object encode(VirtualFrame frame, PBytesLike bytes, @SuppressWarnings("unused") String errors,
157157
@Shared("toBytes") @Cached("create()") BytesNodes.ToBytesNode toBytes) {
158158
// for now we'll just parse this as a String, ignoring any error strategies
159159
PythonCore core = getCore();
@@ -316,28 +316,28 @@ abstract static class CodecsDecodeNode extends EncodeBaseNode {
316316
@Child private CoerceToBooleanNode castToBooleanNode;
317317

318318
@Specialization
319-
Object decode(VirtualFrame frame, PIBytesLike bytes, @SuppressWarnings("unused") PNone encoding, @SuppressWarnings("unused") PNone errors, Object finalData) {
319+
Object decode(VirtualFrame frame, PBytesLike bytes, @SuppressWarnings("unused") PNone encoding, @SuppressWarnings("unused") PNone errors, Object finalData) {
320320
ByteBuffer decoded = getBytes(bytes);
321321
String string = decodeBytes(decoded, "utf-8", "strict", castToBoolean(frame, finalData));
322322
return factory().createTuple(new Object[]{string, decoded.position()});
323323
}
324324

325325
@Specialization(guards = {"isString(encoding)"})
326-
Object decode(VirtualFrame frame, PIBytesLike bytes, Object encoding, @SuppressWarnings("unused") PNone errors, Object finalData) {
326+
Object decode(VirtualFrame frame, PBytesLike bytes, Object encoding, @SuppressWarnings("unused") PNone errors, Object finalData) {
327327
ByteBuffer decoded = getBytes(bytes);
328328
String string = decodeBytes(decoded, castToString(encoding), "strict", castToBoolean(frame, finalData));
329329
return factory().createTuple(new Object[]{string, decoded.position()});
330330
}
331331

332332
@Specialization(guards = {"isString(errors)"})
333-
Object decode(VirtualFrame frame, PIBytesLike bytes, @SuppressWarnings("unused") PNone encoding, Object errors, Object finalData) {
333+
Object decode(VirtualFrame frame, PBytesLike bytes, @SuppressWarnings("unused") PNone encoding, Object errors, Object finalData) {
334334
ByteBuffer decoded = getBytes(bytes);
335335
String string = decodeBytes(decoded, "utf-8", castToString(errors), castToBoolean(frame, finalData));
336336
return factory().createTuple(new Object[]{string, decoded.position()});
337337
}
338338

339339
@Specialization(guards = {"isString(encoding)", "isString(errors)"})
340-
Object decode(VirtualFrame frame, PIBytesLike bytes, Object encoding, Object errors, Object finalData) {
340+
Object decode(VirtualFrame frame, PBytesLike bytes, Object encoding, Object errors, Object finalData) {
341341
ByteBuffer decoded = getBytes(bytes);
342342
String string = decodeBytes(decoded, castToString(encoding), castToString(errors), castToBoolean(frame, finalData));
343343
return factory().createTuple(new Object[]{string, decoded.position()});
@@ -368,7 +368,7 @@ String decodeBytes(ByteBuffer byteBuffer, String encoding, String errors, boolea
368368
return String.valueOf(decoded.flip());
369369
}
370370

371-
private ByteBuffer getBytes(PIBytesLike bytesLike) {
371+
private ByteBuffer getBytes(PBytesLike bytesLike) {
372372
if (toByteArrayNode == null) {
373373
CompilerDirectives.transferToInterpreterAndInvalidate();
374374
toByteArrayNode = insert(GetInternalByteArrayNodeGen.create());
@@ -407,13 +407,13 @@ abstract static class RawDecodeNode extends EncodeBaseNode {
407407
@Child private GetInternalByteArrayNode toByteArrayNode;
408408

409409
@Specialization
410-
Object decode(PIBytesLike bytes, @SuppressWarnings("unused") PNone errors) {
410+
Object decode(PBytesLike bytes, @SuppressWarnings("unused") PNone errors) {
411411
String string = decodeBytes(getBytesBuffer(bytes), "strict");
412412
return factory().createTuple(new Object[]{string, string.length()});
413413
}
414414

415415
@Specialization(guards = {"isString(errors)"})
416-
Object decode(PIBytesLike bytes, Object errors,
416+
Object decode(PBytesLike bytes, Object errors,
417417
@Cached CastToJavaStringNode castStr) {
418418
String profiledErrors;
419419
try {
@@ -426,7 +426,7 @@ Object decode(PIBytesLike bytes, Object errors,
426426
return factory().createTuple(new Object[]{string, string.length()});
427427
}
428428

429-
private ByteBuffer getBytesBuffer(PIBytesLike bytesLike) {
429+
private ByteBuffer getBytesBuffer(PBytesLike bytesLike) {
430430
if (toByteArrayNode == null) {
431431
CompilerDirectives.transferToInterpreterAndInvalidate();
432432
toByteArrayNode = insert(GetInternalByteArrayNodeGen.create());

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/ImpModuleBuiltins.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060
import com.oracle.graal.python.builtins.objects.PNone;
6161
import com.oracle.graal.python.builtins.objects.PythonAbstractObjectFactory.PInteropGetAttributeNodeGen;
6262
import com.oracle.graal.python.builtins.objects.bytes.PBytes;
63-
import com.oracle.graal.python.builtins.objects.bytes.PIBytesLike;
63+
import com.oracle.graal.python.builtins.objects.bytes.PBytesLike;
6464
import com.oracle.graal.python.builtins.objects.cext.CExtNodesFactory.AsPythonObjectNodeGen;
6565
import com.oracle.graal.python.builtins.objects.cext.hpy.GraalHPyContext;
6666
import com.oracle.graal.python.builtins.objects.cext.hpy.GraalHPyInitObject;
@@ -528,7 +528,7 @@ public Object run(PythonObject moduleSpec) {
528528
public abstract static class SourceHashNode extends PythonBinaryBuiltinNode {
529529
@Specialization
530530
@TruffleBoundary
531-
PBytes run(long magicNumber, PIBytesLike source) {
531+
PBytes run(long magicNumber, PBytesLike source) {
532532
byte[] hash = new byte[Long.BYTES];
533533
long hashCode = magicNumber ^ source.hashCode();
534534
for (int i = 0; i < hash.length; i++) {
@@ -538,7 +538,7 @@ PBytes run(long magicNumber, PIBytesLike source) {
538538
}
539539

540540
@Specialization
541-
PBytes run(PInt magicNumber, PIBytesLike source) {
541+
PBytes run(PInt magicNumber, PBytesLike source) {
542542
return run(magicNumber.longValue(), source);
543543
}
544544
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/MarshalModuleBuiltins.java

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@
4444
import com.oracle.graal.python.builtins.objects.PNone;
4545
import com.oracle.graal.python.builtins.objects.array.PArray;
4646
import com.oracle.graal.python.builtins.objects.bytes.BytesNodes;
47-
import com.oracle.graal.python.builtins.objects.bytes.PByteArray;
4847
import com.oracle.graal.python.builtins.objects.bytes.PBytes;
48+
import com.oracle.graal.python.builtins.objects.bytes.PBytesLike;
4949
import com.oracle.graal.python.builtins.objects.code.CodeNodes;
5050
import com.oracle.graal.python.builtins.objects.code.CodeNodes.CreateCodeNode;
5151
import com.oracle.graal.python.builtins.objects.code.PCode;
@@ -162,21 +162,12 @@ abstract static class LoadsNode extends PythonBuiltinNode {
162162

163163
@Child private UnmarshallerNode marshaller = UnmarshallerNode.create();
164164

165-
@SuppressWarnings("unused")
166-
@Specialization
167-
Object doit(VirtualFrame frame, PBytes bytes,
168-
@Cached("create()") BytesNodes.ToBytesNode toBytesNode) {
169-
return marshaller.execute(frame, toBytesNode.execute(frame, bytes), CURRENT_VERSION);
170-
}
171-
172-
@SuppressWarnings("unused")
173165
@Specialization
174-
Object doit(VirtualFrame frame, PByteArray bytes,
166+
Object doit(VirtualFrame frame, PBytesLike bytes,
175167
@Cached("create()") BytesNodes.ToBytesNode toBytesNode) {
176168
return marshaller.execute(frame, toBytesNode.execute(frame, bytes), CURRENT_VERSION);
177169
}
178170

179-
@SuppressWarnings("unused")
180171
@Specialization
181172
Object doit(VirtualFrame frame, PMemoryView bytes,
182173
@Cached("create()") BytesNodes.ToBytesNode toBytesNode) {
@@ -370,14 +361,7 @@ void handleInternedString(InternedString v, int version, DataOutputStream buffer
370361
}
371362

372363
@Specialization
373-
void handleBytesLike(VirtualFrame frame, PBytes v, int version, DataOutputStream buffer,
374-
@Cached("create()") BytesNodes.ToBytesNode toBytesNode) {
375-
writeByte(TYPE_BYTESLIKE, version, buffer);
376-
writeBytes(toBytesNode.execute(frame, v), version, buffer);
377-
}
378-
379-
@Specialization
380-
void handleBytesLike(VirtualFrame frame, PByteArray v, int version, DataOutputStream buffer,
364+
void handleBytesLike(VirtualFrame frame, PBytesLike v, int version, DataOutputStream buffer,
381365
@Cached("create()") BytesNodes.ToBytesNode toBytesNode) {
382366
writeByte(TYPE_BYTESLIKE, version, buffer);
383367
writeBytes(toBytesNode.execute(frame, v), version, buffer);

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/PosixModuleBuiltins.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,8 @@
9393
import com.oracle.graal.python.builtins.modules.PosixModuleBuiltinsFactory.StatNodeFactory;
9494
import com.oracle.graal.python.builtins.objects.PNone;
9595
import com.oracle.graal.python.builtins.objects.bytes.BytesNodes;
96-
import com.oracle.graal.python.builtins.objects.bytes.PByteArray;
9796
import com.oracle.graal.python.builtins.objects.bytes.PBytes;
97+
import com.oracle.graal.python.builtins.objects.bytes.PBytesLike;
9898
import com.oracle.graal.python.builtins.objects.common.SequenceNodes;
9999
import com.oracle.graal.python.builtins.objects.common.SequenceNodes.LenNode;
100100
import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes;
@@ -1189,13 +1189,7 @@ private static byte[] stringToBytes(String data) {
11891189
}
11901190

11911191
@Specialization
1192-
Object write(VirtualFrame frame, int fd, PBytes data,
1193-
@Cached("createClassProfile()") ValueProfile channelClassProfile) {
1194-
return write(frame, fd, getByteArray(data.getSequenceStorage()), channelClassProfile);
1195-
}
1196-
1197-
@Specialization
1198-
Object write(VirtualFrame frame, int fd, PByteArray data,
1192+
Object write(VirtualFrame frame, int fd, PBytesLike data,
11991193
@Cached("createClassProfile()") ValueProfile channelClassProfile) {
12001194
return write(frame, fd, getByteArray(data.getSequenceStorage()), channelClassProfile);
12011195
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/SREModuleBuiltins.java

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,7 @@
5353
import com.oracle.graal.python.builtins.objects.PNone;
5454
import com.oracle.graal.python.builtins.objects.bytes.BytesNodes;
5555
import com.oracle.graal.python.builtins.objects.bytes.BytesUtils;
56-
import com.oracle.graal.python.builtins.objects.bytes.PByteArray;
57-
import com.oracle.graal.python.builtins.objects.bytes.PBytes;
56+
import com.oracle.graal.python.builtins.objects.bytes.PBytesLike;
5857
import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes;
5958
import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodesFactory.ToByteArrayNodeGen;
6059
import com.oracle.graal.python.builtins.objects.memoryview.PMemoryView;
@@ -145,13 +144,7 @@ Object run(String str) {
145144
}
146145

147146
@Specialization
148-
Object run(PBytes str) {
149-
byte[] bytes = doBytes(getToByteArrayNode().execute(str.getSequenceStorage()));
150-
return factory().createByteArray(bytes);
151-
}
152-
153-
@Specialization
154-
Object run(PByteArray str) {
147+
Object run(PBytesLike str) {
155148
byte[] bytes = doBytes(getToByteArrayNode().execute(str.getSequenceStorage()));
156149
return factory().createByteArray(bytes);
157150
}

0 commit comments

Comments
 (0)