|
40 | 40 | */
|
41 | 41 | package com.oracle.graal.python.builtins.modules.cext;
|
42 | 42 |
|
| 43 | +import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct; |
43 | 44 | import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Ignored;
|
44 | 45 | import static com.oracle.graal.python.builtins.objects.cext.capi.PyDateTimeCAPIWrapper.T_FOLD;
|
45 | 46 | import static com.oracle.graal.python.builtins.objects.cext.capi.PyDateTimeCAPIWrapper.T_FROMTIMESTAMP;
|
46 | 47 | import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
|
47 | 48 | import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
|
| 49 | +import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectBorrowed; |
48 | 50 | import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
|
49 | 51 | import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyTypeObject;
|
50 | 52 |
|
|
57 | 59 | import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBuiltin;
|
58 | 60 | import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiQuaternaryBuiltinNode;
|
59 | 61 | import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiTernaryBuiltinNode;
|
| 62 | +import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiUnaryBuiltinNode; |
60 | 63 | import com.oracle.graal.python.builtins.objects.cext.capi.PyDateTimeCAPIWrapper;
|
| 64 | +import com.oracle.graal.python.builtins.objects.cext.capi.PyDateTimeMRNode; |
61 | 65 | import com.oracle.graal.python.builtins.objects.function.PKeyword;
|
| 66 | +import com.oracle.graal.python.lib.PyObjectGetAttr; |
62 | 67 | import com.oracle.graal.python.lib.PyObjectLookupAttr;
|
63 | 68 | import com.oracle.graal.python.nodes.argument.keywords.ExpandKeywordStarargsNode;
|
64 | 69 | import com.oracle.graal.python.nodes.argument.positional.ExecutePositionalStarargsNode;
|
@@ -162,4 +167,13 @@ static Object values(int hour, int minute, int second, int usecond, Object tzinf
|
162 | 167 | return call.execute(null, type, new Object[]{hour, minute, second, usecond, tzinfo}, new PKeyword[]{new PKeyword(T_FOLD, fold)});
|
163 | 168 | }
|
164 | 169 | }
|
| 170 | + |
| 171 | + @CApiBuiltin(ret = PyObjectBorrowed, args = {PyObject}, call = Direct) |
| 172 | + abstract static class PyTruffle_PyDateTime_GET_TZINFO extends CApiUnaryBuiltinNode { |
| 173 | + @Specialization |
| 174 | + static Object get(Object obj, |
| 175 | + @Cached PyObjectGetAttr getAttr) { |
| 176 | + return getAttr.execute(null, obj, PyDateTimeMRNode.T_TZINFO); |
| 177 | + } |
| 178 | + } |
165 | 179 | }
|
0 commit comments