Skip to content

Commit befe0bb

Browse files
committed
dump truffle ast builtin: in case of assertRaises
1 parent 9595ae9 commit befe0bb

File tree

3 files changed

+38
-2
lines changed

3 files changed

+38
-2
lines changed

graalpython/com.oracle.graal.python.test/src/graalpytest.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,13 @@
5252
verbose = False
5353

5454

55+
def dump_truffle_ast(func):
56+
try:
57+
print(__dump_truffle_ast__(func))
58+
except:
59+
pass
60+
61+
5562
class SkipTest(BaseException):
5663
pass
5764

@@ -152,7 +159,6 @@ def assertSequenceEqual(self, expected, actual, msg=None):
152159
assert expected_value == next(actual_iter), msg
153160

154161
class assertRaises():
155-
156162
def __init__(self, exc_type, function=None, *args, **kwargs):
157163
self.function = function
158164
if self.function is None:
@@ -163,6 +169,7 @@ def __init__(self, exc_type, function=None, *args, **kwargs):
163169
except exc_type:
164170
pass
165171
else:
172+
dump_truffle_ast(self.__init__)
166173
assert False, "expected '%r' to raise '%r'" % (self.function, exc_type)
167174

168175
def __enter__(self):

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

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@
5454
import static com.oracle.graal.python.nodes.BuiltinNames.SETATTR;
5555
import static com.oracle.graal.python.nodes.BuiltinNames.SUM;
5656
import static com.oracle.graal.python.nodes.BuiltinNames.__BREAKPOINT__;
57+
import static com.oracle.graal.python.nodes.BuiltinNames.__BUILTIN__;
58+
import static com.oracle.graal.python.nodes.BuiltinNames.__DUMP_TRUFFLE_AST__;
5759
import static com.oracle.graal.python.nodes.HiddenAttributes.ID_KEY;
5860
import static com.oracle.graal.python.nodes.SpecialAttributeNames.__NAME__;
5961
import static com.oracle.graal.python.nodes.SpecialMethodNames.__INSTANCECHECK__;
@@ -91,6 +93,7 @@
9193
import com.oracle.graal.python.builtins.objects.function.PythonCallable;
9294
import com.oracle.graal.python.builtins.objects.ints.PInt;
9395
import com.oracle.graal.python.builtins.objects.list.PList;
96+
import com.oracle.graal.python.builtins.objects.method.PMethod;
9497
import com.oracle.graal.python.builtins.objects.module.PythonModule;
9598
import com.oracle.graal.python.builtins.objects.object.PythonObject;
9699
import com.oracle.graal.python.builtins.objects.set.PFrozenSet;
@@ -155,6 +158,7 @@
155158
import com.oracle.truffle.api.frame.VirtualFrame;
156159
import com.oracle.truffle.api.nodes.ExplodeLoop;
157160
import com.oracle.truffle.api.nodes.Node;
161+
import com.oracle.truffle.api.nodes.NodeUtil;
158162
import com.oracle.truffle.api.nodes.NodeVisitor;
159163
import com.oracle.truffle.api.nodes.RootNode;
160164
import com.oracle.truffle.api.nodes.UnexpectedResultException;
@@ -1312,7 +1316,7 @@ private Object iterateGeneric(Object iterator, Object start, ConditionProfile er
13121316
}
13131317
}
13141318

1315-
@Builtin(name = "__builtin__", fixedNumOfPositionalArgs = 1)
1319+
@Builtin(name = __BUILTIN__, fixedNumOfPositionalArgs = 1)
13161320
@GenerateNodeFactory
13171321
public abstract static class BuiltinNode extends PythonUnaryBuiltinNode {
13181322
@Child GetItemNode getNameNode = GetItemNode.create();
@@ -1376,4 +1380,26 @@ public boolean visit(Node node) {
13761380
return factory().createBuiltinMethod(builtinModule, builtinFunc);
13771381
}
13781382
}
1383+
1384+
@Builtin(name = __DUMP_TRUFFLE_AST__, fixedNumOfPositionalArgs = 1)
1385+
@GenerateNodeFactory
1386+
public abstract static class DumpTruffleAstNode extends PythonUnaryBuiltinNode {
1387+
@Specialization
1388+
@TruffleBoundary
1389+
public String doIt(PFunction func) {
1390+
return NodeUtil.printTreeToString(func.getCallTarget().getRootNode());
1391+
}
1392+
1393+
@Specialization
1394+
@TruffleBoundary
1395+
public String doIt(PMethod method) {
1396+
return NodeUtil.printTreeToString(method.getCallTarget().getRootNode());
1397+
}
1398+
1399+
@Fallback
1400+
@TruffleBoundary
1401+
public Object doit(Object object) {
1402+
return "truffle ast dump not supported for " + object.toString();
1403+
}
1404+
}
13791405
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/BuiltinNames.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,4 +132,7 @@ public abstract class BuiltinNames {
132132
public static final String HASH = "hash";
133133
public static final String MEMORYVIEW = "memoryview";
134134
public static final String SET = "set";
135+
// truffle specific builtins
136+
public static final String __BUILTIN__ = "__builtin__";
137+
public static final String __DUMP_TRUFFLE_AST__ = "__dump_truffle_ast__";
135138
}

0 commit comments

Comments
 (0)