|
29 | 29 | import static com.oracle.graal.python.nodes.SpecialAttributeNames.__ANNOTATIONS__;
|
30 | 30 | import static com.oracle.graal.python.nodes.SpecialAttributeNames.__CLOSURE__;
|
31 | 31 | import static com.oracle.graal.python.nodes.SpecialAttributeNames.__CODE__;
|
32 |
| -import static com.oracle.graal.python.nodes.SpecialAttributeNames.__DEFAULTS__; |
33 | 32 | import static com.oracle.graal.python.nodes.SpecialAttributeNames.__DICT__;
|
34 | 33 | import static com.oracle.graal.python.nodes.SpecialAttributeNames.__GLOBALS__;
|
35 | 34 | import static com.oracle.graal.python.nodes.SpecialAttributeNames.__MODULE__;
|
|
39 | 38 | import static com.oracle.graal.python.runtime.exception.PythonErrorType.AttributeError;
|
40 | 39 | import static com.oracle.graal.python.runtime.exception.PythonErrorType.NotImplementedError;
|
41 | 40 |
|
42 |
| -import java.util.ArrayList; |
43 | 41 | import java.util.List;
|
44 | 42 |
|
45 | 43 | import com.oracle.graal.python.builtins.Builtin;
|
|
54 | 52 | import com.oracle.graal.python.builtins.objects.method.PMethod;
|
55 | 53 | import com.oracle.graal.python.builtins.objects.module.PythonModule;
|
56 | 54 | import com.oracle.graal.python.builtins.objects.object.PythonObject;
|
57 |
| -import com.oracle.graal.python.builtins.objects.tuple.PTuple; |
58 | 55 | import com.oracle.graal.python.nodes.argument.CreateArgumentsNode;
|
59 |
| -import com.oracle.graal.python.nodes.argument.ReadKeywordNode; |
60 | 56 | import com.oracle.graal.python.nodes.attributes.ReadAttributeFromObjectNode;
|
61 | 57 | import com.oracle.graal.python.nodes.attributes.WriteAttributeToObjectNode;
|
62 | 58 | import com.oracle.graal.python.nodes.call.CallDispatchNode;
|
|
67 | 63 | import com.oracle.graal.python.nodes.function.builtins.PythonUnaryBuiltinNode;
|
68 | 64 | import com.oracle.graal.python.nodes.subscript.GetItemNode;
|
69 | 65 | import com.oracle.truffle.api.CompilerDirectives;
|
70 |
| -import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary; |
71 | 66 | import com.oracle.truffle.api.dsl.Cached;
|
72 | 67 | import com.oracle.truffle.api.dsl.Fallback;
|
73 | 68 | import com.oracle.truffle.api.dsl.GenerateNodeFactory;
|
74 | 69 | import com.oracle.truffle.api.dsl.NodeFactory;
|
75 | 70 | import com.oracle.truffle.api.dsl.Specialization;
|
76 | 71 | import com.oracle.truffle.api.frame.VirtualFrame;
|
77 |
| -import com.oracle.truffle.api.nodes.NodeUtil; |
78 | 72 | import com.oracle.truffle.api.profiles.ConditionProfile;
|
79 | 73 |
|
80 | 74 | @CoreFunctions(extendClasses = {PythonBuiltinClassType.PFunction, PythonBuiltinClassType.PBuiltinFunction})
|
@@ -264,63 +258,6 @@ Object builtinCode(PBuiltinFunction self, Object none) {
|
264 | 258 | }
|
265 | 259 | }
|
266 | 260 |
|
267 |
| - @Builtin(name = __DEFAULTS__, minNumOfPositionalArgs = 1, maxNumOfPositionalArgs = 2, isGetter = true, isSetter = true) |
268 |
| - @GenerateNodeFactory |
269 |
| - public abstract static class GetDefaultsNode extends PythonBinaryBuiltinNode { |
270 |
| - protected final ConditionProfile nullDefaultsProfile = ConditionProfile.createBinaryProfile(); |
271 |
| - |
272 |
| - @TruffleBoundary |
273 |
| - private static Object[] extractDefaults(PFunction function) { |
274 |
| - List<Object> defaultValues = new ArrayList<>(); |
275 |
| - List<ReadKeywordNode> readKeywordNodes = NodeUtil.findAllNodeInstances(function.getFunctionRootNode(), ReadKeywordNode.class); |
276 |
| - for (ReadKeywordNode readKeywordNode : readKeywordNodes) { |
277 |
| - Object defaultValue = readKeywordNode.getDefaultValue(); |
278 |
| - if (defaultValue != null) { |
279 |
| - defaultValues.add(defaultValue); |
280 |
| - } |
281 |
| - } |
282 |
| - return defaultValues.toArray(); |
283 |
| - } |
284 |
| - |
285 |
| - private Object getDefaults(PFunction function) { |
286 |
| - Object[] defaults = function.getDefaults(); |
287 |
| - if (nullDefaultsProfile.profile(defaults == null)) { |
288 |
| - defaults = extractDefaults(function); |
289 |
| - } |
290 |
| - |
291 |
| - assert defaults != null; |
292 |
| - return (defaults.length == 0) ? PNone.NONE : factory().createTuple(defaults); |
293 |
| - } |
294 |
| - |
295 |
| - @Specialization |
296 |
| - Object defaults(PFunction self, @SuppressWarnings("unused") PNone defaults) { |
297 |
| - return getDefaults(self); |
298 |
| - } |
299 |
| - |
300 |
| - @Specialization |
301 |
| - Object defaults(PFunction self, PTuple defaults) { |
302 |
| - self.setDefaults(defaults.getArray()); |
303 |
| - return PNone.NONE; |
304 |
| - } |
305 |
| - |
306 |
| - @Specialization |
307 |
| - Object defaults(PMethod self, @SuppressWarnings("unused") PNone defaults) { |
308 |
| - return getDefaults(self.getFunction()); |
309 |
| - } |
310 |
| - |
311 |
| - @Specialization |
312 |
| - Object defaults(PMethod self, PTuple defaults) { |
313 |
| - self.getFunction().setDefaults(defaults.getArray()); |
314 |
| - return PNone.NONE; |
315 |
| - } |
316 |
| - |
317 |
| - @SuppressWarnings("unused") |
318 |
| - @Specialization |
319 |
| - Object defaults(PBuiltinFunction self, Object defaults) { |
320 |
| - throw raise(AttributeError, "'builtin_function_or_method' object has no attribute '__defaults__'"); |
321 |
| - } |
322 |
| - } |
323 |
| - |
324 | 261 | @Builtin(name = __DICT__, fixedNumOfPositionalArgs = 1, isGetter = true)
|
325 | 262 | @GenerateNodeFactory
|
326 | 263 | static abstract class DictNode extends PythonUnaryBuiltinNode {
|
|
0 commit comments