Skip to content

Commit bf014e6

Browse files
committed
split statement node and expression nodes
1 parent 5dde5d9 commit bf014e6

File tree

167 files changed

+1745
-1600
lines changed

Some content is hidden

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

167 files changed

+1745
-1600
lines changed

graalpython/com.oracle.graal.python.test/src/com/oracle/graal/python/test/grammar/TestParserTranslator.java

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -66,16 +66,17 @@
6666
import com.oracle.graal.python.nodes.attributes.GetAttributeNode;
6767
import com.oracle.graal.python.nodes.attributes.SetAttributeNode;
6868
import com.oracle.graal.python.nodes.call.PythonCallNode;
69-
import com.oracle.graal.python.nodes.call.special.LookupAndCallBinaryNode;
70-
import com.oracle.graal.python.nodes.call.special.LookupAndCallTernaryNode;
71-
import com.oracle.graal.python.nodes.call.special.LookupAndCallUnaryNode;
7269
import com.oracle.graal.python.nodes.control.BlockNode;
7370
import com.oracle.graal.python.nodes.expression.AndNode;
71+
import com.oracle.graal.python.nodes.expression.BinaryArithmetic;
7472
import com.oracle.graal.python.nodes.expression.BinaryComparisonNode;
7573
import com.oracle.graal.python.nodes.expression.CastToBooleanNode;
7674
import com.oracle.graal.python.nodes.expression.CastToBooleanNode.NotNode;
75+
import com.oracle.graal.python.nodes.expression.ExpressionNode;
7776
import com.oracle.graal.python.nodes.expression.IsNode;
7877
import com.oracle.graal.python.nodes.expression.OrNode;
78+
import com.oracle.graal.python.nodes.expression.TernaryArithmetic;
79+
import com.oracle.graal.python.nodes.expression.UnaryArithmetic;
7980
import com.oracle.graal.python.nodes.frame.DeleteGlobalNode;
8081
import com.oracle.graal.python.nodes.frame.DestructuringAssignmentNode;
8182
import com.oracle.graal.python.nodes.frame.ReadGlobalOrBuiltinNode;
@@ -134,6 +135,9 @@ <T> T getChild(Node result, int num, Class<? extends T> klass) {
134135
if (++i <= num) {
135136
continue;
136137
}
138+
if (n instanceof ExpressionNode.ExpressionStatementNode) {
139+
n = n.getChildren().iterator().next();
140+
}
137141
assertTrue("Expected an instance of " + klass + ", got " + n.getClass(), klass.isInstance(n));
138142
return klass.cast(n);
139143
}
@@ -326,11 +330,11 @@ public void parseAssignments() {
326330
public void parseImport() {
327331
WriteGlobalNode importSet = parseAs("import foo", WriteGlobalNode.class);
328332
assertEquals("foo", importSet.getAttributeId());
329-
assert importSet.getRhs() instanceof ImportNode;
333+
assert importSet.getRhs() instanceof ImportNode.ImportExpression;
330334

331335
importSet = parseAs("import foo as bar", WriteGlobalNode.class);
332336
assertEquals("bar", importSet.getAttributeId());
333-
assert importSet.getRhs() instanceof ImportNode;
337+
assert importSet.getRhs() instanceof ImportNode.ImportExpression;
334338

335339
parseAs("from os import *", ImportStarNode.class);
336340
}
@@ -353,7 +357,7 @@ public void parseComparisons() {
353357

354358
AndNode parseAs = parseAs("x < y() <= z", AndNode.class);
355359
PNode leftNode = parseAs.getLeftNode();
356-
assert leftNode instanceof BlockNode;
360+
assert leftNode instanceof ExpressionNode.ExpressionWithSideEffects;
357361
WriteNode tmpWrite = getChild(leftNode, 0, WriteNode.class);
358362
assert tmpWrite.getRhs() instanceof PythonCallNode;
359363
PythonCallNode rhs = (PythonCallNode) tmpWrite.getRhs();
@@ -363,9 +367,9 @@ public void parseComparisons() {
363367

364368
@Test
365369
public void parseUnaryOps() {
366-
parseAs("-1", LookupAndCallUnaryNode.class);
367-
parseAs("+1", LookupAndCallUnaryNode.class);
368-
parseAs("~1", LookupAndCallUnaryNode.class);
370+
parseAs("-1", UnaryArithmetic.UnaryArithmeticExpression.class);
371+
parseAs("+1", UnaryArithmetic.UnaryArithmeticExpression.class);
372+
parseAs("~1", UnaryArithmetic.UnaryArithmeticExpression.class);
369373
parseAs("not 1", NotNode.class);
370374
}
371375

@@ -379,20 +383,20 @@ public void parseBooleanOps() {
379383

380384
@Test
381385
public void parseBinaryOp() {
382-
parseAs("1 | 1", LookupAndCallBinaryNode.class);
383-
parseAs("1 ^ 1", LookupAndCallBinaryNode.class);
384-
parseAs("1 & 1", LookupAndCallBinaryNode.class);
385-
parseAs("1 << 2", LookupAndCallBinaryNode.class);
386-
parseAs("1 >> 2", LookupAndCallBinaryNode.class);
387-
parseAs("1 >> 2 << 2", LookupAndCallBinaryNode.class);
388-
parseAs("1 | 1 & 2", LookupAndCallBinaryNode.class);
389-
parseAs("1 + 2", LookupAndCallBinaryNode.class);
390-
parseAs("1 - 2", LookupAndCallBinaryNode.class);
391-
parseAs("1 * 2", LookupAndCallBinaryNode.class);
392-
parseAs("1 / 2", LookupAndCallBinaryNode.class);
393-
parseAs("1 % 2", LookupAndCallBinaryNode.class);
394-
parseAs("1 // 2", LookupAndCallBinaryNode.class);
395-
parseAs("1 ** 2", LookupAndCallTernaryNode.class);
386+
parseAs("1 | 1", BinaryArithmetic.BinaryArithmeticExpression.class);
387+
parseAs("1 ^ 1", BinaryArithmetic.BinaryArithmeticExpression.class);
388+
parseAs("1 & 1", BinaryArithmetic.BinaryArithmeticExpression.class);
389+
parseAs("1 << 2", BinaryArithmetic.BinaryArithmeticExpression.class);
390+
parseAs("1 >> 2", BinaryArithmetic.BinaryArithmeticExpression.class);
391+
parseAs("1 >> 2 << 2", BinaryArithmetic.BinaryArithmeticExpression.class);
392+
parseAs("1 | 1 & 2", BinaryArithmetic.BinaryArithmeticExpression.class);
393+
parseAs("1 + 2", BinaryArithmetic.BinaryArithmeticExpression.class);
394+
parseAs("1 - 2", BinaryArithmetic.BinaryArithmeticExpression.class);
395+
parseAs("1 * 2", BinaryArithmetic.BinaryArithmeticExpression.class);
396+
parseAs("1 / 2", BinaryArithmetic.BinaryArithmeticExpression.class);
397+
parseAs("1 % 2", BinaryArithmetic.BinaryArithmeticExpression.class);
398+
parseAs("1 // 2", BinaryArithmetic.BinaryArithmeticExpression.class);
399+
parseAs("1 ** 2", TernaryArithmetic.TernaryArithmeticExpression.class);
396400
}
397401

398402
@Test

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@
7979
import com.oracle.graal.python.builtins.objects.ints.PInt;
8080
import com.oracle.graal.python.builtins.objects.str.PString;
8181
import com.oracle.graal.python.builtins.objects.tuple.PTuple;
82-
import com.oracle.graal.python.nodes.PBaseNode;
82+
import com.oracle.graal.python.nodes.PNodeWithContext;
8383
import com.oracle.graal.python.nodes.call.special.LookupAndCallUnaryNode;
8484
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
8585
import com.oracle.graal.python.nodes.function.PythonBuiltinNode;
@@ -1043,7 +1043,7 @@ int system(String cmd) {
10431043
}
10441044
}
10451045

1046-
abstract static class ConvertPathlikeObjectNode extends PBaseNode {
1046+
abstract static class ConvertPathlikeObjectNode extends PNodeWithContext {
10471047
@Child private LookupAndCallUnaryNode callFspathNode;
10481048
@CompilationFinal private ValueProfile resultTypeProfile;
10491049

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -246,8 +246,8 @@ PNone init(Object self, Object cls, Object obj) {
246246
if (!(cls instanceof PythonClass)) {
247247
throw raise(PythonErrorType.RuntimeError, "super(): __class__ is not a type (%p)", cls);
248248
}
249-
setTypeAttribute.execute(self, cls);
250-
setObjAttribute.execute(self, obj);
249+
setTypeAttribute.executeVoid(self, cls);
250+
setObjAttribute.executeVoid(self, obj);
251251
return PNone.NONE;
252252
}
253253

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@
102102
import com.oracle.graal.python.builtins.objects.tuple.PTuple;
103103
import com.oracle.graal.python.builtins.objects.type.PythonBuiltinClass;
104104
import com.oracle.graal.python.builtins.objects.type.PythonClass;
105-
import com.oracle.graal.python.nodes.PBaseNode;
105+
import com.oracle.graal.python.nodes.PNodeWithContext;
106106
import com.oracle.graal.python.nodes.PGuards;
107107
import com.oracle.graal.python.nodes.SpecialAttributeNames;
108108
import com.oracle.graal.python.nodes.SpecialMethodNames;
@@ -1081,7 +1081,7 @@ private CExtNodes.ToSulongNode getToSulongNode() {
10811081
}
10821082
}
10831083

1084-
abstract static class GetByteArrayNode extends PBaseNode {
1084+
abstract static class GetByteArrayNode extends PNodeWithContext {
10851085

10861086
@Child private Node readNode;
10871087

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/bytes/BytesBuiltins.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes;
5757
import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes.NormalizeIndexNode;
5858
import com.oracle.graal.python.builtins.objects.iterator.PSequenceIterator;
59-
import com.oracle.graal.python.nodes.PBaseNode;
59+
import com.oracle.graal.python.nodes.PNodeWithContext;
6060
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
6161
import com.oracle.graal.python.nodes.function.PythonBuiltinNode;
6262
import com.oracle.graal.python.nodes.function.builtins.PythonBinaryBuiltinNode;
@@ -75,7 +75,7 @@
7575
@CoreFunctions(extendClasses = PythonBuiltinClassType.PBytes)
7676
public class BytesBuiltins extends PythonBuiltins {
7777

78-
public static CodingErrorAction toCodingErrorAction(String errors, PBaseNode n) {
78+
public static CodingErrorAction toCodingErrorAction(String errors, PNodeWithContext n) {
7979
switch (errors) {
8080
case "strict":
8181
return CodingErrorAction.REPORT;

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/bytes/BytesNodes.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes.NormalizeIndexNode;
5252
import com.oracle.graal.python.builtins.objects.list.PList;
5353
import com.oracle.graal.python.builtins.objects.memoryview.PMemoryView;
54-
import com.oracle.graal.python.nodes.PBaseNode;
54+
import com.oracle.graal.python.nodes.PNodeWithContext;
5555
import com.oracle.graal.python.nodes.PGuards;
5656
import com.oracle.graal.python.nodes.SpecialMethodNames;
5757
import com.oracle.graal.python.nodes.call.special.LookupAndCallUnaryNode;
@@ -70,7 +70,7 @@
7070

7171
public abstract class BytesNodes {
7272

73-
public abstract static class BytesJoinNode extends PBaseNode {
73+
public abstract static class BytesJoinNode extends PNodeWithContext {
7474

7575
public abstract byte[] execute(byte[] sep, Object iterable);
7676

@@ -124,7 +124,7 @@ public static BytesJoinNode create() {
124124
}
125125

126126
@ImportStatic({PGuards.class, SpecialMethodNames.class})
127-
public abstract static class ToBytesNode extends PBaseNode {
127+
public abstract static class ToBytesNode extends PNodeWithContext {
128128
@Child private SequenceStorageNodes.ToByteArrayNode toByteArrayNode;
129129

130130
protected final boolean allowRecursive;
@@ -184,7 +184,7 @@ public static ToBytesNode create(boolean allowRecursive) {
184184
}
185185
}
186186

187-
public abstract static class FindNode extends PBaseNode {
187+
public abstract static class FindNode extends PNodeWithContext {
188188

189189
@Child private NormalizeIndexNode normalizeIndexNode;
190190
@Child private SequenceStorageNodes.GetItemNode getLeftItemNode;
@@ -276,7 +276,7 @@ public static FindNode create() {
276276
}
277277
}
278278

279-
public abstract static class FromListNode extends PBaseNode {
279+
public abstract static class FromListNode extends PNodeWithContext {
280280

281281
@Child private SequenceStorageNodes.GetItemNode getItemNode;
282282
@Child private SequenceStorageNodes.CastToByteNode castToByteNode;
@@ -318,7 +318,7 @@ private SequenceStorageNodes.LenNode getLenNode() {
318318
}
319319
}
320320

321-
public static class CmpNode extends PBaseNode {
321+
public static class CmpNode extends PNodeWithContext {
322322
@Child private SequenceStorageNodes.GetItemNode getLeftItemNode;
323323
@Child private SequenceStorageNodes.GetItemNode getRightItemNode;
324324
@Child private SequenceStorageNodes.LenNode leftLenNode;

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@
7272
import com.oracle.graal.python.builtins.objects.str.PString;
7373
import com.oracle.graal.python.builtins.objects.type.PythonBuiltinClass;
7474
import com.oracle.graal.python.builtins.objects.type.PythonClass;
75-
import com.oracle.graal.python.nodes.PBaseNode;
75+
import com.oracle.graal.python.nodes.PNodeWithContext;
7676
import com.oracle.graal.python.nodes.PGuards;
7777
import com.oracle.graal.python.nodes.SpecialMethodNames;
7878
import com.oracle.graal.python.nodes.attributes.ReadAttributeFromObjectNode;
@@ -212,7 +212,7 @@ public static <T> FromNativeSubclassNode<T> create(PythonBuiltinClassType expect
212212
}
213213

214214
@ImportStatic(PGuards.class)
215-
abstract static class CExtBaseNode extends PBaseNode {
215+
abstract static class CExtBaseNode extends PNodeWithContext {
216216
@Child private Node readSymbolNode;
217217

218218
protected static boolean isNativeWrapper(Object obj) {
@@ -784,7 +784,7 @@ private TruffleObject getNativeFunction() {
784784

785785
}
786786

787-
public abstract static class AllToJavaNode extends PBaseNode {
787+
public abstract static class AllToJavaNode extends PNodeWithContext {
788788
@Child private CExtNodes.AsPythonObjectNode toJavaNode = CExtNodes.AsPythonObjectNode.create();
789789

790790
abstract Object[] execute(Object[] args);
@@ -815,7 +815,7 @@ public static AllToJavaNode create() {
815815
}
816816
}
817817

818-
public abstract static class AllToSulongNode extends PBaseNode {
818+
public abstract static class AllToSulongNode extends PNodeWithContext {
819819
public abstract void executeInto(Object[] args, int argsOffset, Object[] dest, int destOffset);
820820

821821
protected boolean isArgsOffsetPlus(int len, int off, int plus) {
@@ -879,7 +879,7 @@ public static AllToSulongNode create() {
879879
}
880880
}
881881

882-
protected abstract static class UpcallNode extends PBaseNode {
882+
protected abstract static class UpcallNode extends PNodeWithContext {
883883
@Child AllToJavaNode allToJava = null;
884884

885885
protected AllToJavaNode getAllToJavaNode() {
@@ -962,7 +962,7 @@ protected final Object getAttr(Object object, String name) {
962962
}
963963
}
964964

965-
public abstract static class AsDouble extends PBaseNode {
965+
public abstract static class AsDouble extends PNodeWithContext {
966966
@Child private LookupAndCallUnaryNode callFloatFunc;
967967

968968
public abstract double execute(boolean arg);
@@ -1053,7 +1053,7 @@ public static AsDouble create() {
10531053
}
10541054
}
10551055

1056-
public abstract static class AsLong extends PBaseNode {
1056+
public abstract static class AsLong extends PNodeWithContext {
10571057
@Child private CastToIndexNode intNode;
10581058

10591059
public abstract long execute(boolean arg);

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
*/
4141
package com.oracle.graal.python.builtins.objects.cext;
4242

43-
import com.oracle.graal.python.nodes.PBaseNode;
43+
import com.oracle.graal.python.nodes.PNodeWithContext;
4444
import com.oracle.truffle.api.CompilerDirectives;
4545
import com.oracle.truffle.api.interop.ArityException;
4646
import com.oracle.truffle.api.interop.ForeignAccess;
@@ -50,7 +50,7 @@
5050
import com.oracle.truffle.api.interop.UnsupportedTypeException;
5151
import com.oracle.truffle.api.nodes.Node;
5252

53-
public class PCallNativeNode extends PBaseNode {
53+
public class PCallNativeNode extends PNodeWithContext {
5454
@Child private Node executeNode;
5555

5656
private Node getExecuteNode() {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
import com.oracle.graal.python.builtins.objects.tuple.PTuple;
6262
import com.oracle.graal.python.builtins.objects.tuple.TupleBuiltins;
6363
import com.oracle.graal.python.builtins.objects.tuple.TupleBuiltinsFactory;
64-
import com.oracle.graal.python.nodes.PBaseNode;
64+
import com.oracle.graal.python.nodes.PNodeWithContext;
6565
import com.oracle.graal.python.nodes.SpecialMethodNames;
6666
import com.oracle.graal.python.nodes.call.special.LookupAndCallBinaryNode;
6767
import com.oracle.graal.python.nodes.call.special.LookupAndCallTernaryNode;
@@ -461,7 +461,7 @@ public static GetTypeIDNode create() {
461461
}
462462
}
463463

464-
static abstract class ToNativeStorageNode extends PBaseNode {
464+
static abstract class ToNativeStorageNode extends PNodeWithContext {
465465
@Child private StorageToNativeNode storageToNativeNode;
466466

467467
public abstract NativeSequenceStorage execute(SequenceStorage object);

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@
8686
import com.oracle.graal.python.builtins.objects.str.PString;
8787
import com.oracle.graal.python.builtins.objects.type.PythonBuiltinClass;
8888
import com.oracle.graal.python.builtins.objects.type.PythonClass;
89-
import com.oracle.graal.python.nodes.PBaseNode;
89+
import com.oracle.graal.python.nodes.PNodeWithContext;
9090
import com.oracle.graal.python.nodes.PGuards;
9191
import com.oracle.graal.python.nodes.SpecialAttributeNames;
9292
import com.oracle.graal.python.nodes.SpecialMethodNames;
@@ -198,7 +198,7 @@ public Object access(PythonNativeWrapper object, String key) {
198198

199199
@ImportStatic({NativeMemberNames.class, SpecialMethodNames.class, SpecialAttributeNames.class})
200200
@TypeSystemReference(PythonArithmeticTypes.class)
201-
abstract static class ReadNativeMemberNode extends PBaseNode {
201+
abstract static class ReadNativeMemberNode extends PNodeWithContext {
202202
@Child GetClassNode getClassNode;
203203
@Child private ToSulongNode toSulongNode;
204204
@Child private HashingStorageNodes.GetItemNode getItemNode;
@@ -623,7 +623,7 @@ public Object access(PythonNativeWrapper object, String key, Object value) {
623623
}
624624

625625
@ImportStatic({NativeMemberNames.class, PGuards.class})
626-
abstract static class WriteNativeMemberNode extends PBaseNode {
626+
abstract static class WriteNativeMemberNode extends PNodeWithContext {
627627
@Child private HashingStorageNodes.SetItemNode setItemNode;
628628

629629
abstract Object execute(Object receiver, String key, Object value);
@@ -893,7 +893,7 @@ long access(PythonNativeWrapper obj) {
893893
}
894894
}
895895

896-
abstract static class PIsPointerNode extends PBaseNode {
896+
abstract static class PIsPointerNode extends PNodeWithContext {
897897

898898
public abstract boolean execute(PythonNativeWrapper obj);
899899

@@ -916,7 +916,7 @@ private static PIsPointerNode create() {
916916
}
917917
}
918918

919-
abstract static class PAsPointerNode extends PBaseNode {
919+
abstract static class PAsPointerNode extends PNodeWithContext {
920920
@Child private Node asPointerNode;
921921

922922
public abstract long execute(PythonNativeWrapper o);

0 commit comments

Comments
 (0)