|
34 | 34 | import com.oracle.graal.python.builtins.CoreFunctions;
|
35 | 35 | import com.oracle.graal.python.builtins.PythonBuiltinClassType;
|
36 | 36 | import com.oracle.graal.python.builtins.PythonBuiltins;
|
37 |
| -import com.oracle.graal.python.builtins.objects.type.LazyPythonClass; |
38 | 37 | import com.oracle.graal.python.builtins.objects.type.PythonClass;
|
39 | 38 | import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
|
40 | 39 | import com.oracle.graal.python.nodes.function.builtins.PythonUnaryBuiltinNode;
|
41 | 40 | import com.oracle.graal.python.nodes.truffle.PythonArithmeticTypes;
|
42 | 41 | import com.oracle.graal.python.runtime.exception.PythonErrorType;
|
43 | 42 | import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
|
| 43 | +import com.oracle.truffle.api.dsl.Cached; |
44 | 44 | import com.oracle.truffle.api.dsl.GenerateNodeFactory;
|
45 | 45 | import com.oracle.truffle.api.dsl.NodeFactory;
|
46 | 46 | import com.oracle.truffle.api.dsl.Specialization;
|
47 | 47 | import com.oracle.truffle.api.dsl.TypeSystemReference;
|
| 48 | +import com.oracle.truffle.api.profiles.ConditionProfile; |
48 | 49 |
|
49 | 50 | @CoreFunctions(extendClasses = PythonBuiltinClassType.PBuiltinFunction)
|
50 | 51 | public class BuiltinFunctionBuiltins extends PythonBuiltins {
|
@@ -83,13 +84,9 @@ Object objclassMissing(@SuppressWarnings("unused") PBuiltinFunction self) {
|
83 | 84 |
|
84 | 85 | @Specialization(guards = "self.getEnclosingType() != null")
|
85 | 86 | @TruffleBoundary
|
86 |
| - PythonClass objclass(PBuiltinFunction self) { |
87 |
| - LazyPythonClass enclosingType = self.getEnclosingType(); |
88 |
| - if (enclosingType instanceof PythonBuiltinClassType) { |
89 |
| - return getCore().lookupType((PythonBuiltinClassType) enclosingType); |
90 |
| - } else { |
91 |
| - return (PythonClass) enclosingType; |
92 |
| - } |
| 87 | + PythonClass objclass(PBuiltinFunction self, |
| 88 | + @Cached("createBinaryProfile()") ConditionProfile profile) { |
| 89 | + return getPythonClass(self.getEnclosingType(), profile); |
93 | 90 | }
|
94 | 91 | }
|
95 | 92 | }
|
0 commit comments