Skip to content

Commit 3e5a318

Browse files
committed
[GR-34169] Simplify builtin nodes (remove "call" indirection).
PullRequest: graalpython/1982
2 parents 2412ae3 + f405980 commit 3e5a318

File tree

64 files changed

+201
-462
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+201
-462
lines changed

graalpython/com.oracle.graal.python.test/src/com/oracle/graal/python/builtins/modules/ClinicTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ protected BinaryBuiltinRoot(PythonBinaryClinicBuiltinNode node) {
193193
@Override
194194
public Object execute(VirtualFrame frame) {
195195
try {
196-
return node.call(frame, frame.getArguments()[0], frame.getArguments()[1]);
196+
return node.execute(frame, frame.getArguments()[0], frame.getArguments()[1]);
197197
} catch (PException ex) {
198198
boolean expectTypeError = frame.getArguments().length >= 3 && (boolean) frame.getArguments()[2];
199199
if (expectTypeError) {

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

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@
6565
import com.oracle.graal.python.nodes.function.builtins.PythonVarargsBuiltinNode;
6666
import com.oracle.graal.python.nodes.function.builtins.clinic.ArgumentClinicProvider;
6767
import com.oracle.graal.python.nodes.object.IsBuiltinClassProfile;
68-
import com.oracle.graal.python.nodes.util.CastToJavaStringNode;
6968
import com.oracle.graal.python.nodes.util.SplitArgsNode;
7069
import com.oracle.graal.python.runtime.exception.PException;
7170
import com.oracle.graal.python.runtime.object.PythonObjectFactory;
@@ -194,20 +193,19 @@ PArray arrayWithRangeInitializer(Object cls, String typeCode, PIntRange range,
194193
PArray arrayWithBytesInitializer(VirtualFrame frame, Object cls, String typeCode, PBytesLike bytes,
195194
@Cached ArrayBuiltins.FromBytesNode fromBytesNode) {
196195
PArray array = getFactory().createArray(cls, typeCode, getFormatChecked(typeCode));
197-
fromBytesNode.execute(frame, array, bytes);
196+
fromBytesNode.executeWithoutClinic(frame, array, bytes);
198197
return array;
199198
}
200199

201200
@Specialization(guards = "isString(initializer)")
202201
PArray arrayWithStringInitializer(VirtualFrame frame, Object cls, String typeCode, Object initializer,
203-
@Cached CastToJavaStringNode cast,
204202
@Cached ArrayBuiltins.FromUnicodeNode fromUnicodeNode) {
205203
BufferFormat format = getFormatChecked(typeCode);
206204
if (format != BufferFormat.UNICODE) {
207205
throw raise(TypeError, "cannot use a str to initialize an array with typecode '%s'", typeCode);
208206
}
209207
PArray array = getFactory().createArray(cls, typeCode, format);
210-
fromUnicodeNode.execute(frame, array, cast.execute(initializer));
208+
fromUnicodeNode.execute(frame, array, initializer);
211209
return array;
212210
}
213211

@@ -366,17 +364,17 @@ private Object doReconstruct(VirtualFrame frame, Object arrayType, String typeCo
366364
PArray array;
367365
if (machineFormat == MachineFormat.forFormat(format)) {
368366
array = factory().createArray(arrayType, typeCode, machineFormat.format);
369-
fromBytesNode.execute(frame, array, bytes);
367+
fromBytesNode.executeWithoutClinic(frame, array, bytes);
370368
} else {
371369
String newTypeCode = machineFormat.format == format ? typeCode : machineFormat.format.baseTypeCode;
372370
array = factory().createArray(arrayType, newTypeCode, machineFormat.format);
373371
if (machineFormat.unicodeEncoding != null) {
374372
Object decoded = callDecode.execute(frame, bytes, "decode", machineFormat.unicodeEncoding);
375373
fromUnicodeNode.execute(frame, array, decoded);
376374
} else {
377-
fromBytesNode.execute(frame, array, bytes);
375+
fromBytesNode.executeWithoutClinic(frame, array, bytes);
378376
if (machineFormat.order != ByteOrder.nativeOrder()) {
379-
byteSwapNode.call(frame, array);
377+
byteSwapNode.execute(frame, array);
380378
}
381379
}
382380
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2391,7 +2391,7 @@ private PythonClass typeMetaclass(VirtualFrame frame, PythonLanguage language, S
23912391
// Check valid slot name
23922392
if (element instanceof String) {
23932393
slotName = (String) element;
2394-
if (!(boolean) isIdentifier.call(frame, slotName)) {
2394+
if (!(boolean) isIdentifier.execute(frame, slotName)) {
23952395
throw raise(TypeError, ErrorMessages.SLOTS_MUST_BE_IDENTIFIERS);
23962396
}
23972397
} else {

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

Lines changed: 32 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -541,7 +541,10 @@ Object encode(Object str, @SuppressWarnings("unused") Object encoding, @Suppress
541541
@ArgumentClinic(name = "final", conversion = ArgumentClinic.ClinicConversion.Boolean, defaultValue = "false", useDefaultForNone = true)
542542
@GenerateNodeFactory
543543
public abstract static class CodecsDecodeNode extends PythonQuaternaryClinicBuiltinNode {
544-
public abstract Object execute(Object input, Object encoding, Object errors, Object finalData);
544+
545+
public final Object call(VirtualFrame frame, Object input, Object encoding, Object errors, Object finalData) {
546+
return execute(frame, input, encoding, errors, finalData);
547+
}
545548

546549
@Override
547550
protected ArgumentClinicProvider getArgumentClinic() {
@@ -827,7 +830,7 @@ PTuple lookup(VirtualFrame frame, PBytesLike encoding,
827830
@Cached ConditionProfile hasSearchPathProfile,
828831
@Cached ConditionProfile hasTruffleEncodingProfile,
829832
@Cached ConditionProfile isTupleProfile) {
830-
String decoded = (String) ((PTuple) asciiDecodeNode.call(frame, encoding, PNone.NO_VALUE)).getSequenceStorage().getInternalArray()[0];
833+
String decoded = (String) ((PTuple) asciiDecodeNode.execute(frame, encoding, PNone.NO_VALUE)).getSequenceStorage().getInternalArray()[0];
831834
return lookup(frame, decoded, callNode, lenNode, hasSearchPathProfile, hasTruffleEncodingProfile, isTupleProfile);
832835
}
833836

@@ -884,7 +887,7 @@ private static Object[] getSearchPaths(PythonContext ctx) {
884887
}
885888

886889
private static boolean isTupleInstanceCheck(VirtualFrame frame, Object result, int len, TupleBuiltins.LenNode lenNode) throws PException {
887-
return (result instanceof PTuple) && ((int) lenNode.call(frame, result) == len);
890+
return (result instanceof PTuple) && ((int) lenNode.execute(frame, result) == len);
888891
}
889892

890893
@TruffleBoundary
@@ -936,7 +939,7 @@ abstract static class ForgetCodecNode extends PythonBuiltinNode {
936939
@Specialization
937940
Object forget(VirtualFrame frame, PBytesLike encoding,
938941
@Cached AsciiDecodeNode asciiDecodeNode) {
939-
forget((String) ((PTuple) asciiDecodeNode.call(frame, encoding, PNone.NO_VALUE)).getSequenceStorage().getInternalArray()[0]);
942+
forget((String) ((PTuple) asciiDecodeNode.execute(frame, encoding, PNone.NO_VALUE)).getSequenceStorage().getInternalArray()[0]);
940943
return PNone.NONE;
941944
}
942945

@@ -1061,7 +1064,7 @@ Object decode(VirtualFrame frame, Object obj, String encoding, String errors,
10611064
}
10621065

10631066
private static Object codec_getItem(VirtualFrame frame, String encoding, int index, LookupNode lookupNode, SequenceStorageNodes.GetItemNode getItemNode) {
1064-
PTuple t = (PTuple) lookupNode.call(frame, encoding);
1067+
PTuple t = (PTuple) lookupNode.execute(frame, encoding);
10651068
return getItemNode.execute(frame, t.getSequenceStorage(), index);
10661069
}
10671070

@@ -1079,7 +1082,7 @@ abstract static class UTF8EncodeNode extends PythonBinaryBuiltinNode {
10791082
@Specialization
10801083
Object encode(VirtualFrame frame, Object obj, Object errors,
10811084
@Cached CodecsEncodeNode encode) {
1082-
return encode.call(frame, obj, "utf-8", errors);
1085+
return encode.execute(frame, obj, "utf-8", errors);
10831086
}
10841087
}
10851088

@@ -1089,7 +1092,7 @@ abstract static class UTF8DecodeNode extends PythonTernaryBuiltinNode {
10891092
@Specialization
10901093
Object encode(VirtualFrame frame, Object obj, Object errors, Object ffinal,
10911094
@Cached CodecsDecodeNode decode) {
1092-
return decode.call(frame, obj, "utf-8", errors, ffinal);
1095+
return decode.execute(frame, obj, "utf-8", errors, ffinal);
10931096
}
10941097
}
10951098

@@ -1099,7 +1102,7 @@ abstract static class UTF7EncodeNode extends PythonBinaryBuiltinNode {
10991102
@Specialization
11001103
Object encode(VirtualFrame frame, Object obj, Object errors,
11011104
@Cached CodecsEncodeNode encode) {
1102-
return encode.call(frame, obj, "utf-7", errors);
1105+
return encode.execute(frame, obj, "utf-7", errors);
11031106
}
11041107
}
11051108

@@ -1109,7 +1112,7 @@ abstract static class UTF7DecodeNode extends PythonTernaryBuiltinNode {
11091112
@Specialization
11101113
Object encode(VirtualFrame frame, Object obj, Object errors, Object ffinal,
11111114
@Cached CodecsDecodeNode decode) {
1112-
return decode.call(frame, obj, "utf-7", errors, ffinal);
1115+
return decode.execute(frame, obj, "utf-7", errors, ffinal);
11131116
}
11141117
}
11151118

@@ -1119,7 +1122,7 @@ abstract static class UTF16EncodeNode extends PythonTernaryBuiltinNode {
11191122
@Specialization
11201123
Object encode(VirtualFrame frame, Object obj, Object errors, @SuppressWarnings("unused") Object byteorder,
11211124
@Cached CodecsEncodeNode encode) {
1122-
return encode.call(frame, obj, "utf-16", errors);
1125+
return encode.execute(frame, obj, "utf-16", errors);
11231126
}
11241127
}
11251128

@@ -1129,7 +1132,7 @@ abstract static class UTF16DecodeNode extends PythonTernaryBuiltinNode {
11291132
@Specialization
11301133
Object encode(VirtualFrame frame, Object obj, Object errors, Object ffinal,
11311134
@Cached CodecsDecodeNode decode) {
1132-
return decode.call(frame, obj, "utf-16", errors, ffinal);
1135+
return decode.execute(frame, obj, "utf-16", errors, ffinal);
11331136
}
11341137
}
11351138

@@ -1139,7 +1142,7 @@ abstract static class UTF16LEEncodeNode extends PythonBinaryBuiltinNode {
11391142
@Specialization
11401143
Object encode(VirtualFrame frame, Object obj, Object errors,
11411144
@Cached CodecsEncodeNode encode) {
1142-
return encode.call(frame, obj, "utf-16-le", errors);
1145+
return encode.execute(frame, obj, "utf-16-le", errors);
11431146
}
11441147
}
11451148

@@ -1149,7 +1152,7 @@ abstract static class UTF16LEDecodeNode extends PythonTernaryBuiltinNode {
11491152
@Specialization
11501153
Object encode(VirtualFrame frame, Object obj, Object errors, Object ffinal,
11511154
@Cached CodecsDecodeNode decode) {
1152-
return decode.call(frame, obj, "utf-16-le", errors, ffinal);
1155+
return decode.execute(frame, obj, "utf-16-le", errors, ffinal);
11531156
}
11541157
}
11551158

@@ -1159,7 +1162,7 @@ abstract static class UTF16BEEncodeNode extends PythonBinaryBuiltinNode {
11591162
@Specialization
11601163
Object encode(VirtualFrame frame, Object obj, Object errors,
11611164
@Cached CodecsEncodeNode encode) {
1162-
return encode.call(frame, obj, "utf-16-be", errors);
1165+
return encode.execute(frame, obj, "utf-16-be", errors);
11631166
}
11641167
}
11651168

@@ -1169,7 +1172,7 @@ abstract static class UTF16BEDecodeNode extends PythonTernaryBuiltinNode {
11691172
@Specialization
11701173
Object encode(VirtualFrame frame, Object obj, Object errors, Object ffinal,
11711174
@Cached CodecsDecodeNode decode) {
1172-
return decode.call(frame, obj, "utf-16-be", errors, ffinal);
1175+
return decode.execute(frame, obj, "utf-16-be", errors, ffinal);
11731176
}
11741177
}
11751178

@@ -1189,7 +1192,7 @@ abstract static class UTF32EncodeNode extends PythonTernaryBuiltinNode {
11891192
@Specialization
11901193
Object encode(VirtualFrame frame, Object obj, Object errors, @SuppressWarnings("unused") Object byteorder,
11911194
@Cached CodecsEncodeNode encode) {
1192-
return encode.call(frame, obj, "utf-32", errors);
1195+
return encode.execute(frame, obj, "utf-32", errors);
11931196
}
11941197
}
11951198

@@ -1199,7 +1202,7 @@ abstract static class UTF32DecodeNode extends PythonTernaryBuiltinNode {
11991202
@Specialization
12001203
Object encode(VirtualFrame frame, Object obj, Object errors, Object ffinal,
12011204
@Cached CodecsDecodeNode decode) {
1202-
return decode.call(frame, obj, "utf-32", errors, ffinal);
1205+
return decode.execute(frame, obj, "utf-32", errors, ffinal);
12031206
}
12041207
}
12051208

@@ -1209,7 +1212,7 @@ abstract static class UTF32LEEncodeNode extends PythonBinaryBuiltinNode {
12091212
@Specialization
12101213
Object encode(VirtualFrame frame, Object obj, Object errors,
12111214
@Cached CodecsEncodeNode encode) {
1212-
return encode.call(frame, obj, "utf-32-le", errors);
1215+
return encode.execute(frame, obj, "utf-32-le", errors);
12131216
}
12141217
}
12151218

@@ -1219,7 +1222,7 @@ abstract static class UTF32LEDecodeNode extends PythonTernaryBuiltinNode {
12191222
@Specialization
12201223
Object encode(VirtualFrame frame, Object obj, Object errors, Object ffinal,
12211224
@Cached CodecsDecodeNode decode) {
1222-
return decode.call(frame, obj, "utf-32-le", errors, ffinal);
1225+
return decode.execute(frame, obj, "utf-32-le", errors, ffinal);
12231226
}
12241227
}
12251228

@@ -1229,7 +1232,7 @@ abstract static class UTF32BEEncodeNode extends PythonBinaryBuiltinNode {
12291232
@Specialization
12301233
Object encode(VirtualFrame frame, Object obj, Object errors,
12311234
@Cached CodecsEncodeNode encode) {
1232-
return encode.call(frame, obj, "utf-32-be", errors);
1235+
return encode.execute(frame, obj, "utf-32-be", errors);
12331236
}
12341237
}
12351238

@@ -1239,7 +1242,7 @@ abstract static class UTF32BEDecodeNode extends PythonTernaryBuiltinNode {
12391242
@Specialization
12401243
Object encode(VirtualFrame frame, Object obj, Object errors, Object ffinal,
12411244
@Cached CodecsDecodeNode decode) {
1242-
return decode.call(frame, obj, "utf-32-be", errors, ffinal);
1245+
return decode.execute(frame, obj, "utf-32-be", errors, ffinal);
12431246
}
12441247
}
12451248

@@ -1279,7 +1282,7 @@ abstract static class RawUnicodeEscapeEncodeNode extends PythonBinaryBuiltinNode
12791282
@Specialization
12801283
Object encode(VirtualFrame frame, Object obj, Object errors,
12811284
@Cached CodecsEncodeNode encode) {
1282-
return encode.call(frame, obj, "raw_unicode_escape", errors);
1285+
return encode.execute(frame, obj, "raw_unicode_escape", errors);
12831286
}
12841287
}
12851288

@@ -1289,7 +1292,7 @@ abstract static class RawUnicodeEscapeDecodeNode extends PythonBinaryBuiltinNode
12891292
@Specialization
12901293
Object encode(VirtualFrame frame, Object obj, Object errors,
12911294
@Cached CodecsDecodeNode decode) {
1292-
return decode.call(frame, obj, "raw_unicode_escape", errors, true);
1295+
return decode.execute(frame, obj, "raw_unicode_escape", errors, true);
12931296
}
12941297
}
12951298

@@ -1299,7 +1302,7 @@ abstract static class UnicodeEscapeEncodeNode extends PythonBinaryBuiltinNode {
12991302
@Specialization
13001303
Object encode(VirtualFrame frame, Object obj, Object errors,
13011304
@Cached CodecsEncodeNode encode) {
1302-
return encode.call(frame, obj, "unicode_escape", errors);
1305+
return encode.execute(frame, obj, "unicode_escape", errors);
13031306
}
13041307
}
13051308

@@ -1309,7 +1312,7 @@ abstract static class UnicodeEscapeDecodeNode extends PythonBinaryBuiltinNode {
13091312
@Specialization
13101313
Object encode(VirtualFrame frame, Object obj, Object errors,
13111314
@Cached CodecsDecodeNode decode) {
1312-
return decode.call(frame, obj, "unicode_escape", errors, true);
1315+
return decode.execute(frame, obj, "unicode_escape", errors, true);
13131316
}
13141317
}
13151318

@@ -1319,7 +1322,7 @@ abstract static class Latin1EscapeEncodeNode extends PythonBinaryBuiltinNode {
13191322
@Specialization
13201323
Object encode(VirtualFrame frame, Object obj, Object errors,
13211324
@Cached CodecsEncodeNode encode) {
1322-
return encode.call(frame, obj, "latin_1", errors);
1325+
return encode.execute(frame, obj, "latin_1", errors);
13231326
}
13241327
}
13251328

@@ -1329,7 +1332,7 @@ abstract static class Latin1EscapeDecodeNode extends PythonBinaryBuiltinNode {
13291332
@Specialization
13301333
Object encode(VirtualFrame frame, Object obj, Object errors,
13311334
@Cached CodecsDecodeNode decode) {
1332-
return decode.call(frame, obj, "latin_1", errors, true);
1335+
return decode.execute(frame, obj, "latin_1", errors, true);
13331336
}
13341337
}
13351338

@@ -1339,7 +1342,7 @@ abstract static class AsciiEscapeEncodeNode extends PythonBinaryBuiltinNode {
13391342
@Specialization
13401343
Object encode(VirtualFrame frame, Object obj, Object errors,
13411344
@Cached CodecsEncodeNode encode) {
1342-
return encode.call(frame, obj, "ascii", errors);
1345+
return encode.execute(frame, obj, "ascii", errors);
13431346
}
13441347
}
13451348

@@ -1349,7 +1352,7 @@ abstract static class AsciiDecodeNode extends PythonBinaryBuiltinNode {
13491352
@Specialization
13501353
Object decode(VirtualFrame frame, Object obj, Object errors,
13511354
@Cached CodecsDecodeNode decode) {
1352-
return decode.call(frame, obj, "ascii", errors, true);
1355+
return decode.execute(frame, obj, "ascii", errors, true);
13531356
}
13541357
}
13551358

0 commit comments

Comments
 (0)