Skip to content

Commit c4b2725

Browse files
committed
call __get__ on the new method that we looked up
1 parent 8d97214 commit c4b2725

File tree

4 files changed

+8
-7
lines changed

4 files changed

+8
-7
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/method/ClassmethodBuiltins.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
import com.oracle.graal.python.nodes.PGuards;
5858
import com.oracle.graal.python.nodes.PNodeWithContext;
5959
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
60-
import com.oracle.graal.python.nodes.function.PythonBuiltinNode;
60+
import com.oracle.graal.python.nodes.function.builtins.PythonTernaryBuiltinNode;
6161
import com.oracle.graal.python.nodes.function.builtins.PythonVarargsBuiltinNode;
6262
import com.oracle.graal.python.nodes.object.GetClassNode;
6363
import com.oracle.graal.python.runtime.object.PythonObjectFactory;
@@ -84,7 +84,7 @@ protected List<? extends NodeFactory<? extends PythonBuiltinBaseNode>> getNodeFa
8484
@Builtin(name = __GET__, minNumOfPositionalArgs = 2, maxNumOfPositionalArgs = 3)
8585
@GenerateNodeFactory
8686
@ReportPolymorphism
87-
abstract static class GetNode extends PythonBuiltinNode {
87+
abstract static class GetNode extends PythonTernaryBuiltinNode {
8888
@Child MakeMethodNode makeMethod = MakeMethodNode.create();
8989

9090
/**

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/method/StaticmethodBuiltins.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
import com.oracle.graal.python.builtins.PythonBuiltins;
5151
import com.oracle.graal.python.nodes.ErrorMessages;
5252
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
53-
import com.oracle.graal.python.nodes.function.PythonBuiltinNode;
53+
import com.oracle.graal.python.nodes.function.builtins.PythonTernaryBuiltinNode;
5454
import com.oracle.graal.python.util.WeakASTReference;
5555
import com.oracle.truffle.api.dsl.Cached;
5656
import com.oracle.truffle.api.dsl.GenerateNodeFactory;
@@ -70,7 +70,7 @@ protected List<? extends NodeFactory<? extends PythonBuiltinBaseNode>> getNodeFa
7070
@Builtin(name = __GET__, minNumOfPositionalArgs = 2, maxNumOfPositionalArgs = 3)
7171
@GenerateNodeFactory
7272
@ReportPolymorphism
73-
abstract static class GetNode extends PythonBuiltinNode {
73+
abstract static class GetNode extends PythonTernaryBuiltinNode {
7474
/**
7575
* @see ClassmethodBuiltins.GetNode#getCached
7676
*/

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/type/TypeBuiltins.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@
9393
import com.oracle.graal.python.nodes.call.special.CallTernaryMethodNode;
9494
import com.oracle.graal.python.nodes.call.special.CallVarargsMethodNode;
9595
import com.oracle.graal.python.nodes.call.special.LookupAndCallBinaryNode;
96+
import com.oracle.graal.python.nodes.call.special.LookupAndCallTernaryNode;
9697
import com.oracle.graal.python.nodes.classes.AbstractObjectGetBasesNode;
9798
import com.oracle.graal.python.nodes.classes.AbstractObjectIsSubclassNode;
9899
import com.oracle.graal.python.nodes.classes.IsSubtypeNode;
@@ -192,6 +193,7 @@ Object doit(Object object,
192193
@GenerateNodeFactory
193194
public abstract static class CallNode extends PythonVarargsBuiltinNode {
194195
@Child private CallVarargsMethodNode dispatchNew = CallVarargsMethodNode.create();
196+
@Child private LookupAndCallTernaryNode callNewGet = LookupAndCallTernaryNode.create(__GET__);
195197
@Child private LookupAttributeInMRONode lookupNew = LookupAttributeInMRONode.create(__NEW__);
196198
@Child private CallVarargsMethodNode dispatchInit = CallVarargsMethodNode.create();
197199
@Child private LookupAttributeInMRONode lookupInit = LookupAttributeInMRONode.create(__INIT__);
@@ -330,7 +332,7 @@ private Object op(VirtualFrame frame, Object self, Object[] arguments, PKeyword[
330332
if (newMethod != PNone.NO_VALUE) {
331333
CompilerAsserts.partialEvaluationConstant(doCreateArgs);
332334
Object[] newArgs = doCreateArgs ? PositionalArgumentsNode.prependArgument(self, arguments) : arguments;
333-
Object newInstance = dispatchNew.execute(frame, newMethod, newArgs, keywords);
335+
Object newInstance = dispatchNew.execute(frame, callNewGet.execute(frame, newMethod, PNone.NONE, self), newArgs, keywords);
334336
Object newInstanceKlass = lib.getLazyPythonClass(newInstance);
335337
if (isSameType(newInstanceKlass, self)) {
336338
if (arguments.length == 2 && isClassClassProfile.profileClass(self, PythonBuiltinClassType.PythonClass)) {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/PGuards.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@
6363
import com.oracle.graal.python.builtins.objects.list.PList;
6464
import com.oracle.graal.python.builtins.objects.memoryview.PMemoryView;
6565
import com.oracle.graal.python.builtins.objects.method.PBuiltinMethod;
66-
import com.oracle.graal.python.builtins.objects.method.PDecoratedMethod;
6766
import com.oracle.graal.python.builtins.objects.method.PMethod;
6867
import com.oracle.graal.python.builtins.objects.object.PythonBuiltinObject;
6968
import com.oracle.graal.python.builtins.objects.object.PythonObject;
@@ -154,7 +153,7 @@ public static boolean isPFunction(Object value) {
154153
}
155154

156155
public static boolean isCallable(Object value) {
157-
return value instanceof PBuiltinFunction || value instanceof PFunction || value instanceof PBuiltinMethod || value instanceof PMethod || value instanceof PDecoratedMethod;
156+
return value instanceof PBuiltinFunction || value instanceof PFunction || value instanceof PBuiltinMethod || value instanceof PMethod;
158157
}
159158

160159
public static boolean isClass(Object obj, InteropLibrary lib) {

0 commit comments

Comments
 (0)