|
50 | 50 | import com.oracle.graal.python.builtins.objects.PNone;
|
51 | 51 | import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes.GetNativeNullNode;
|
52 | 52 | import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes.TransformExceptionToNativeNode;
|
| 53 | +import com.oracle.graal.python.builtins.objects.module.PythonModule; |
53 | 54 | import com.oracle.graal.python.builtins.objects.thread.LockBuiltins.AcquireLockNode;
|
54 | 55 | import com.oracle.graal.python.builtins.objects.thread.LockBuiltins.ReleaseLockNode;
|
55 | 56 | import com.oracle.graal.python.builtins.objects.thread.PLock;
|
| 57 | +import static com.oracle.graal.python.nodes.BuiltinNames.BUILTINS; |
56 | 58 | import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
|
57 | 59 | import com.oracle.graal.python.nodes.function.PythonBuiltinNode;
|
| 60 | +import com.oracle.graal.python.nodes.object.GetDictIfExistsNode; |
58 | 61 | import com.oracle.graal.python.runtime.exception.PException;
|
59 | 62 | import com.oracle.truffle.api.dsl.Cached;
|
60 | 63 | import com.oracle.truffle.api.dsl.GenerateNodeFactory;
|
@@ -131,4 +134,21 @@ public Object release(VirtualFrame frame, PLock lock,
|
131 | 134 | }
|
132 | 135 | }
|
133 | 136 | }
|
| 137 | + |
| 138 | + @Builtin(name = "PyEval_GetBuiltins") |
| 139 | + @GenerateNodeFactory |
| 140 | + public abstract static class PyEvalGetBuiltinsNode extends PythonBuiltinNode { |
| 141 | + @Specialization |
| 142 | + public Object release(@Cached GetDictIfExistsNode getDictNode, |
| 143 | + @Cached TransformExceptionToNativeNode transformExceptionToNativeNode, |
| 144 | + @Cached GetNativeNullNode getNativeNullNode) { |
| 145 | + try { |
| 146 | + PythonModule cext = getContext().getCore().lookupBuiltinModule(BUILTINS); |
| 147 | + return getDictNode.execute(cext); |
| 148 | + } catch (PException e) { |
| 149 | + transformExceptionToNativeNode.execute(e); |
| 150 | + return getNativeNullNode.execute(); |
| 151 | + } |
| 152 | + } |
| 153 | + } |
134 | 154 | }
|
0 commit comments