|
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