Skip to content

Commit 0304c84

Browse files
committed
Completely remove 'PythonCallable'.
1 parent 89ec6d9 commit 0304c84

32 files changed

+259
-400
lines changed

graalpython/com.oracle.graal.python.test/src/com/oracle/graal/python/test/runtime/PythonModuleTests.java

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,12 @@
3535
import org.junit.Test;
3636

3737
import com.oracle.graal.python.PythonLanguage;
38-
import com.oracle.graal.python.builtins.objects.function.PArguments;
39-
import com.oracle.graal.python.builtins.objects.function.PKeyword;
40-
import com.oracle.graal.python.builtins.objects.function.PythonCallable;
4138
import com.oracle.graal.python.builtins.objects.method.PBuiltinMethod;
4239
import com.oracle.graal.python.builtins.objects.module.PythonModule;
4340
import com.oracle.graal.python.builtins.objects.type.PythonBuiltinClass;
4441
import com.oracle.graal.python.nodes.BuiltinNames;
4542
import com.oracle.graal.python.nodes.SpecialAttributeNames;
46-
import com.oracle.graal.python.nodes.call.InvokeNode;
43+
import com.oracle.graal.python.nodes.call.CallNode;
4744
import com.oracle.graal.python.runtime.PythonContext;
4845
import com.oracle.graal.python.test.PythonTests;
4946

@@ -68,17 +65,17 @@ public void pythonModuleTest() {
6865
@Test
6966
public void builtinsMinTest() {
7067
final PythonModule builtins = context.getBuiltins();
71-
PBuiltinMethod min = (PBuiltinMethod) builtins.getAttribute(BuiltinNames.MIN);
72-
Object returnValue = InvokeNode.create(min).execute(null, createWithUserArguments(builtins, 4, 2, 1), PKeyword.EMPTY_KEYWORDS);
68+
Object min = builtins.getAttribute(BuiltinNames.MIN);
69+
Object returnValue = CallNode.create().execute(null, min, 4, 2, 1);
7370
assertEquals(1, returnValue);
7471
}
7572

7673
@Test
7774
public void builtinsIntTest() {
7875
final PythonModule builtins = context.getBuiltins();
7976
PythonBuiltinClass intClass = (PythonBuiltinClass) builtins.getAttribute(BuiltinNames.INT);
80-
PythonCallable intNew = (PythonCallable) intClass.getAttribute(SpecialAttributeNames.__NEW__);
81-
Object returnValue = InvokeNode.create(intNew).execute(null, createWithUserArguments(intClass, "42"), PKeyword.EMPTY_KEYWORDS);
77+
Object intNew = intClass.getAttribute(SpecialAttributeNames.__NEW__);
78+
Object returnValue = CallNode.create().execute(null, intNew, "42");
8279
assertEquals(42, returnValue);
8380
}
8481

@@ -87,16 +84,7 @@ public void mainModuleTest() {
8784
PythonModule main = context.getMainModule();
8885
PythonModule builtins = (PythonModule) main.getAttribute(__BUILTINS__);
8986
PBuiltinMethod abs = (PBuiltinMethod) builtins.getAttribute(BuiltinNames.ABS);
90-
Object returned = InvokeNode.create(abs).execute(null, createWithUserArguments(builtins, -42), PKeyword.EMPTY_KEYWORDS);
87+
Object returned = CallNode.create().execute(null, abs, -42);
9188
assertEquals(42, returned);
9289
}
93-
94-
private static Object[] createWithUserArguments(Object... args) {
95-
Object[] arguments = PArguments.create(args.length);
96-
for (int i = 0; i < args.length; i++) {
97-
PArguments.setArgument(arguments, i, args[i]);
98-
}
99-
return arguments;
100-
}
101-
10290
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/PythonLanguage.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@
4444
import com.oracle.graal.python.builtins.objects.function.PBuiltinFunction;
4545
import com.oracle.graal.python.builtins.objects.function.PFunction;
4646
import com.oracle.graal.python.builtins.objects.function.PKeyword;
47-
import com.oracle.graal.python.builtins.objects.function.PythonCallable;
4847
import com.oracle.graal.python.builtins.objects.method.PBuiltinMethod;
4948
import com.oracle.graal.python.builtins.objects.method.PMethod;
5049
import com.oracle.graal.python.builtins.objects.module.PythonModule;
@@ -385,8 +384,11 @@ protected Iterable<Scope> findTopScopes(PythonContext context) {
385384
@Override
386385
@TruffleBoundary
387386
protected SourceSection findSourceLocation(PythonContext context, Object value) {
388-
if (value instanceof PFunction || value instanceof PMethod) {
389-
PythonCallable callable = (PythonCallable) value;
387+
if (value instanceof PFunction) {
388+
PFunction callable = (PFunction) value;
389+
return callable.getCallTarget().getRootNode().getSourceSection();
390+
} else if (value instanceof PMethod && ((PMethod) value).getFunction() instanceof PFunction) {
391+
PFunction callable = (PFunction) ((PMethod) value).getFunction();
390392
return callable.getCallTarget().getRootNode().getSourceSection();
391393
} else if (value instanceof PCode) {
392394
return ((PCode) value).getRootNode().getSourceSection();
@@ -408,7 +410,7 @@ protected String toString(PythonContext context, Object value) {
408410
// true during initialization
409411
return value.toString();
410412
}
411-
PBuiltinFunction reprMethod = ((PBuiltinMethod) builtins.getAttribute(BuiltinNames.REPR)).getFunction();
413+
PBuiltinFunction reprMethod = (PBuiltinFunction) ((PBuiltinMethod) builtins.getAttribute(BuiltinNames.REPR)).getFunction();
412414
Object[] userArgs = PArguments.create(2);
413415
PArguments.setArgument(userArgs, 0, PNone.NONE);
414416
PArguments.setArgument(userArgs, 1, value);

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/PythonBuiltins.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
import com.oracle.graal.python.builtins.objects.PNone;
4040
import com.oracle.graal.python.builtins.objects.function.Arity;
4141
import com.oracle.graal.python.builtins.objects.function.PBuiltinFunction;
42-
import com.oracle.graal.python.builtins.objects.function.PythonCallable;
4342
import com.oracle.graal.python.builtins.objects.type.PythonBuiltinClass;
4443
import com.oracle.graal.python.nodes.function.BuiltinFunctionRootNode;
4544
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
@@ -88,8 +87,8 @@ public void initialize(PythonCore core) {
8887
BoundBuiltinCallable<?> callable = function;
8988
if (builtin.isGetter() || builtin.isSetter()) {
9089
assert !builtin.isClassmethod() && !builtin.isStaticmethod();
91-
PythonCallable get = builtin.isGetter() ? function : null;
92-
PythonCallable set = builtin.isSetter() ? function : null;
90+
PBuiltinFunction get = builtin.isGetter() ? function : null;
91+
PBuiltinFunction set = builtin.isSetter() ? function : null;
9392
callable = core.factory().createGetSetDescriptor(get, set, builtin.name(), null);
9493
} else if (builtin.isClassmethod()) {
9594
assert !builtin.isStaticmethod();

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/BuiltinConstructors.java

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,6 @@
9292
import com.oracle.graal.python.builtins.objects.function.PBuiltinFunction;
9393
import com.oracle.graal.python.builtins.objects.function.PFunction;
9494
import com.oracle.graal.python.builtins.objects.function.PKeyword;
95-
import com.oracle.graal.python.builtins.objects.function.PythonCallable;
9695
import com.oracle.graal.python.builtins.objects.getsetdescriptor.HiddenKeyDescriptor;
9796
import com.oracle.graal.python.builtins.objects.ints.PInt;
9897
import com.oracle.graal.python.builtins.objects.iterator.PZip;
@@ -2176,33 +2175,26 @@ private void denyInstantiationAfterInitialization() {
21762175
}
21772176
}
21782177

2179-
@Specialization
2178+
@Specialization(guards = {"!isNoValue(get)", "!isNoValue(set)"})
21802179
@TruffleBoundary
2181-
Object call(PythonClass getSetClass, PythonCallable get, PythonCallable set, String name, PythonClass owner) {
2180+
Object call(PythonClass getSetClass, Object get, Object set, String name, PythonClass owner) {
21822181
denyInstantiationAfterInitialization();
21832182
return factory().createGetSetDescriptor(get, set, name, owner);
21842183
}
21852184

2186-
@Specialization
2185+
@Specialization(guards = {"!isNoValue(get)", "isNoValue(set)"})
21872186
@TruffleBoundary
2188-
Object call(PythonClass getSetClass, PythonCallable get, PNone set, String name, PythonClass owner) {
2187+
Object call(PythonClass getSetClass, Object get, PNone set, String name, PythonClass owner) {
21892188
denyInstantiationAfterInitialization();
21902189
return factory().createGetSetDescriptor(get, null, name, owner);
21912190
}
21922191

2193-
@Specialization
2192+
@Specialization(guards = {"isNoValue(get)", "isNoValue(set)"})
21942193
@TruffleBoundary
2195-
Object call(PythonClass getSetClass, PNone set, PNone get, String name, PythonClass owner) {
2194+
Object call(PythonClass getSetClass, PNone get, PNone set, String name, PythonClass owner) {
21962195
denyInstantiationAfterInitialization();
21972196
return factory().createGetSetDescriptor(null, null, name, owner);
21982197
}
2199-
2200-
@Fallback
2201-
@TruffleBoundary
2202-
Object call(Object klsas, Object set, Object get, Object name, Object owner) {
2203-
denyInstantiationAfterInitialization();
2204-
throw new RuntimeException("error in creating getset_descriptor during core initialization");
2205-
}
22062198
}
22072199

22082200
// slice(stop)

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/BuiltinFunctions.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,6 @@
102102
import com.oracle.graal.python.builtins.objects.function.PArguments;
103103
import com.oracle.graal.python.builtins.objects.function.PFunction;
104104
import com.oracle.graal.python.builtins.objects.function.PKeyword;
105-
import com.oracle.graal.python.builtins.objects.function.PythonCallable;
106105
import com.oracle.graal.python.builtins.objects.ints.PInt;
107106
import com.oracle.graal.python.builtins.objects.list.ListBuiltins.ListAppendNode;
108107
import com.oracle.graal.python.builtins.objects.list.PList;
@@ -349,14 +348,13 @@ protected static OctNode create() {
349348
@GenerateNodeFactory
350349
public abstract static class CallableNode extends PythonBuiltinNode {
351350

352-
@SuppressWarnings("unused")
353-
@Specialization
354-
public boolean callable(PythonCallable callable) {
351+
@Specialization(guards = "isCallable(callable)")
352+
boolean doCallable(@SuppressWarnings("unused") Object callable) {
355353
return true;
356354
}
357355

358356
@Specialization
359-
public boolean callable(Object object,
357+
boolean doGeneric(Object object,
360358
@Cached("create(__CALL__)") LookupInheritedAttributeNode getAttributeNode) {
361359
/**
362360
* Added temporarily to skip translation/execution errors in unit testing
@@ -371,7 +369,7 @@ public boolean callable(Object object,
371369
return true;
372370
}
373371

374-
return object instanceof PythonCallable;
372+
return PGuards.isCallable(object);
375373
}
376374
}
377375

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/InteropModuleBuiltins.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@
5353
import com.oracle.graal.python.builtins.CoreFunctions;
5454
import com.oracle.graal.python.builtins.PythonBuiltins;
5555
import com.oracle.graal.python.builtins.objects.PNone;
56-
import com.oracle.graal.python.builtins.objects.function.PythonCallable;
56+
import com.oracle.graal.python.builtins.objects.function.PBuiltinFunction;
57+
import com.oracle.graal.python.builtins.objects.function.PFunction;
5758
import com.oracle.graal.python.nodes.SpecialAttributeNames;
5859
import com.oracle.graal.python.nodes.function.PythonBuiltinNode;
5960
import com.oracle.graal.python.runtime.PythonContext;
@@ -221,12 +222,18 @@ public Object exportSymbol(Object value, String name) {
221222
return value;
222223
}
223224

224-
@SuppressWarnings("unused")
225225
@Specialization
226226
@TruffleBoundary
227-
public Object exportSymbol(PythonCallable value, PNone name) {
228-
getContext().getEnv().exportSymbol(value.getName(), value);
229-
return value;
227+
public Object exportSymbol(PFunction fun, @SuppressWarnings("unused") PNone name) {
228+
getContext().getEnv().exportSymbol(fun.getName(), fun);
229+
return fun;
230+
}
231+
232+
@Specialization
233+
@TruffleBoundary
234+
public Object exportSymbol(PBuiltinFunction fun, @SuppressWarnings("unused") PNone name) {
235+
getContext().getEnv().exportSymbol(fun.getName(), fun);
236+
return fun;
230237
}
231238
}
232239

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/SignalModuleBuiltins.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,7 @@
4949
import com.oracle.graal.python.builtins.objects.PNone;
5050
import com.oracle.graal.python.builtins.objects.function.PBuiltinFunction;
5151
import com.oracle.graal.python.builtins.objects.function.PFunction;
52-
import com.oracle.graal.python.builtins.objects.function.PythonCallable;
5352
import com.oracle.graal.python.builtins.objects.ints.PInt;
54-
import com.oracle.graal.python.builtins.objects.method.PBuiltinMethod;
5553
import com.oracle.graal.python.nodes.argument.CreateArgumentsNode;
5654
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
5755
import com.oracle.graal.python.nodes.function.builtins.PythonBinaryBuiltinNode;
@@ -159,7 +157,7 @@ Object signal(int signum, int id) {
159157
return retval;
160158
}
161159

162-
private Object installSignalHandler(int signum, PythonCallable handler, RootCallTarget callTarget, Object[] arguments) {
160+
private Object installSignalHandler(int signum, Object handler, RootCallTarget callTarget, Object[] arguments) {
163161
Object retval;
164162
try {
165163
retval = Signals.setSignalHandler(signum, () -> {
@@ -183,12 +181,6 @@ private Object installSignalHandler(int signum, PythonCallable handler, RootCall
183181
// TODO: the second argument should be the interrupted, currently executing frame
184182
// we'll get that when we switch to executing these handlers (just like finalizers)
185183
// on the main thread
186-
@Specialization
187-
@TruffleBoundary
188-
Object signal(int signum, PBuiltinMethod handler) {
189-
return installSignalHandler(signum, handler, handler.getCallTarget(), createArgs.executeWithSelf(handler.getSelf(), new Object[]{signum, PNone.NONE}));
190-
}
191-
192184
@Specialization
193185
@TruffleBoundary
194186
Object signal(int signum, PBuiltinFunction handler) {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/TruffleCextBuiltins.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,6 @@
107107
import com.oracle.graal.python.builtins.objects.function.PBuiltinFunction;
108108
import com.oracle.graal.python.builtins.objects.function.PFunction;
109109
import com.oracle.graal.python.builtins.objects.function.PKeyword;
110-
import com.oracle.graal.python.builtins.objects.function.PythonCallable;
111110
import com.oracle.graal.python.builtins.objects.ints.PInt;
112111
import com.oracle.graal.python.builtins.objects.iterator.PSequenceIterator;
113112
import com.oracle.graal.python.builtins.objects.list.PList;
@@ -1452,18 +1451,18 @@ private static void addToSet(PythonClass base, PythonClass value) {
14521451
@Builtin(name = "PyTruffle_GetSetDescriptor", keywordArguments = {"fget", "fset", "name", "owner"})
14531452
@GenerateNodeFactory
14541453
public abstract static class GetSetDescriptorNode extends PythonBuiltinNode {
1455-
@Specialization
1456-
Object call(PythonCallable get, PythonCallable set, String name, PythonClass owner) {
1454+
@Specialization(guards = {"!isNoValue(get)", "!isNoValue(set)"})
1455+
Object call(Object get, Object set, String name, PythonClass owner) {
14571456
return factory().createGetSetDescriptor(get, set, name, owner);
14581457
}
14591458

1460-
@Specialization
1461-
Object call(PythonCallable get, @SuppressWarnings("unused") PNone set, String name, PythonClass owner) {
1459+
@Specialization(guards = {"!isNoValue(get)", "isNoValue(set)"})
1460+
Object call(Object get, @SuppressWarnings("unused") PNone set, String name, PythonClass owner) {
14621461
return factory().createGetSetDescriptor(get, null, name, owner);
14631462
}
14641463

1465-
@Specialization
1466-
Object call(@SuppressWarnings("unused") PNone get, PythonCallable set, String name, PythonClass owner) {
1464+
@Specialization(guards = {"isNoValue(get)", "!isNoValue(set)"})
1465+
Object call(@SuppressWarnings("unused") PNone get, Object set, String name, PythonClass owner) {
14671466
return factory().createGetSetDescriptor(null, set, name, owner);
14681467
}
14691468
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/CExtNodes.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@
7070
import com.oracle.graal.python.builtins.objects.floats.PFloat;
7171
import com.oracle.graal.python.builtins.objects.function.PFunction;
7272
import com.oracle.graal.python.builtins.objects.function.PKeyword;
73-
import com.oracle.graal.python.builtins.objects.function.PythonCallable;
7473
import com.oracle.graal.python.builtins.objects.ints.PInt;
7574
import com.oracle.graal.python.builtins.objects.str.PString;
7675
import com.oracle.graal.python.builtins.objects.type.PythonBuiltinClass;
@@ -1412,7 +1411,7 @@ public static class MayRaiseNode extends PythonBuiltinNode {
14121411
@Child private PythonObjectFactory factory;
14131412
private final Object errorResult;
14141413

1415-
public MayRaiseNode(PythonCallable callable, Object errorResult) {
1414+
public MayRaiseNode(PFunction callable, Object errorResult) {
14161415
this.readVarargsNode = ReadVarArgsNode.create(0, true);
14171416
this.createArgsNode = CreateArgumentsNode.create();
14181417
this.invokeNode = InvokeNode.create(callable);

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/function/PBuiltinFunction.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
import com.oracle.truffle.api.dsl.NodeFactory;
4242
import com.oracle.truffle.api.nodes.RootNode;
4343

44-
public final class PBuiltinFunction extends PythonBuiltinObject implements PythonCallable, BoundBuiltinCallable<PBuiltinFunction> {
44+
public final class PBuiltinFunction extends PythonBuiltinObject implements BoundBuiltinCallable<PBuiltinFunction> {
4545

4646
private final String name;
4747
private final LazyPythonClass enclosingType;
@@ -81,17 +81,14 @@ public NodeFactory<? extends PythonBuiltinBaseNode> getBuiltinNodeFactory() {
8181
}
8282
}
8383

84-
@Override
8584
public Arity getArity() {
8685
return arity;
8786
}
8887

89-
@Override
9088
public RootCallTarget getCallTarget() {
9189
return callTarget;
9290
}
9391

94-
@Override
9592
public String getName() {
9693
return name;
9794
}

0 commit comments

Comments
 (0)