|
1 | 1 | /*
|
2 |
| - * Copyright (c) 2018, 2021, Oracle and/or its affiliates. All rights reserved. |
| 2 | + * Copyright (c) 2018, 2022, Oracle and/or its affiliates. All rights reserved. |
3 | 3 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
4 | 4 | *
|
5 | 5 | * The Universal Permissive License (UPL), Version 1.0
|
|
50 | 50 | import com.oracle.graal.python.builtins.CoreFunctions;
|
51 | 51 | import com.oracle.graal.python.builtins.PythonBuiltins;
|
52 | 52 | import com.oracle.graal.python.builtins.objects.PNone;
|
| 53 | +import com.oracle.graal.python.builtins.objects.module.PythonModule; |
53 | 54 | import com.oracle.graal.python.lib.PyObjectLookupAttr;
|
54 | 55 | import com.oracle.graal.python.nodes.call.CallNode;
|
55 | 56 | import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
|
| 57 | +import com.oracle.graal.python.nodes.function.PythonBuiltinNode; |
56 | 58 | import com.oracle.graal.python.nodes.function.builtins.PythonClinicBuiltinNode;
|
| 59 | +import com.oracle.graal.python.nodes.function.builtins.PythonTernaryBuiltinNode; |
| 60 | +import com.oracle.graal.python.nodes.function.builtins.PythonUnaryBuiltinNode; |
57 | 61 | import com.oracle.graal.python.nodes.function.builtins.clinic.ArgumentClinicProvider;
|
58 | 62 | import com.oracle.graal.python.nodes.statement.AbstractImportNode;
|
59 | 63 | import com.oracle.graal.python.runtime.ExecutionContext.IndirectCallContext;
|
|
70 | 74 |
|
71 | 75 | @CoreFunctions(defineModule = "faulthandler")
|
72 | 76 | public class FaulthandlerModuleBuiltins extends PythonBuiltins {
|
| 77 | + |
| 78 | + private boolean enabled = true; |
| 79 | + |
73 | 80 | @Override
|
74 | 81 | protected List<? extends NodeFactory<? extends PythonBuiltinBaseNode>> getNodeFactories() {
|
75 | 82 | return FaulthandlerModuleBuiltinsFactory.getFactories();
|
@@ -165,4 +172,42 @@ protected ArgumentClinicProvider getArgumentClinic() {
|
165 | 172 | return FaulthandlerModuleBuiltinsClinicProviders.DumpTracebackNodeClinicProviderGen.INSTANCE;
|
166 | 173 | }
|
167 | 174 | }
|
| 175 | + |
| 176 | + @Builtin(name = "enable", minNumOfPositionalArgs = 1, declaresExplicitSelf = true, parameterNames = {"$self", "file", "all_threads"}) |
| 177 | + @GenerateNodeFactory |
| 178 | + abstract static class EnableNode extends PythonTernaryBuiltinNode { |
| 179 | + @Specialization |
| 180 | + static PNone doit(PythonModule self, Object file, Object allThreads) { |
| 181 | + ((FaulthandlerModuleBuiltins) self.getBuiltins()).enabled = true; |
| 182 | + return PNone.NONE; |
| 183 | + } |
| 184 | + } |
| 185 | + |
| 186 | + @Builtin(name = "disable", minNumOfPositionalArgs = 1, declaresExplicitSelf = true) |
| 187 | + @GenerateNodeFactory |
| 188 | + abstract static class DisableNode extends PythonUnaryBuiltinNode { |
| 189 | + @Specialization |
| 190 | + static PNone doit(PythonModule self) { |
| 191 | + ((FaulthandlerModuleBuiltins) self.getBuiltins()).enabled = false; |
| 192 | + return PNone.NONE; |
| 193 | + } |
| 194 | + } |
| 195 | + |
| 196 | + @Builtin(name = "is_enabled", minNumOfPositionalArgs = 1, declaresExplicitSelf = true) |
| 197 | + @GenerateNodeFactory |
| 198 | + abstract static class IsEnabledNode extends PythonUnaryBuiltinNode { |
| 199 | + @Specialization |
| 200 | + static boolean doit(PythonModule self) { |
| 201 | + return ((FaulthandlerModuleBuiltins) self.getBuiltins()).enabled; |
| 202 | + } |
| 203 | + } |
| 204 | + |
| 205 | + @Builtin(name = "cancel_dump_traceback_later") |
| 206 | + @GenerateNodeFactory |
| 207 | + abstract static class CancelDumpTracebackLaterNode extends PythonBuiltinNode { |
| 208 | + @Specialization |
| 209 | + PNone doit() { |
| 210 | + return PNone.NONE; |
| 211 | + } |
| 212 | + } |
168 | 213 | }
|
0 commit comments