Skip to content

Commit e70e2cc

Browse files
committed
Implement tp_init
1 parent 1f8656d commit e70e2cc

90 files changed

Lines changed: 867 additions & 478 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

graalpython/com.oracle.graal.python.annotations/src/com/oracle/graal/python/annotations/Slot.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,16 @@
7878
@interface SlotSignature {
7979
int minNumOfPositionalArgs() default 0;
8080

81+
int maxNumOfPositionalArgs() default -1;
82+
8183
boolean takesVarArgs() default false;
8284

8385
boolean takesVarKeywordArgs() default false;
8486

8587
String[] parameterNames() default {};
8688

89+
String[] keywordOnlyNames() default {};
90+
8791
boolean needsFrame() default false;
8892

8993
boolean alwaysNeedsCallerFrame() default false;
@@ -206,7 +210,8 @@ enum SlotKind {
206210
/** str(obj) */
207211
tp_str("__str__"),
208212
/** repr(obj) */
209-
tp_repr("__repr__");
213+
tp_repr("__repr__"),
214+
tp_init("__init__");
210215

211216
SlotKind(@SuppressWarnings("unused") String specialMethods) {
212217
}

graalpython/com.oracle.graal.python.processor/src/com/oracle/graal/python/processor/ArgumentClinicProcessor.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@
8383
public class ArgumentClinicProcessor extends AbstractProcessor {
8484
private static final boolean LOGGING = false;
8585
private static final String BuiltinAnnotationClass = "com.oracle.graal.python.builtins.Builtin";
86+
private static final String SlotSignatureAnnotationClass = "com.oracle.graal.python.annotations.Slot.SlotSignature";
8687
private static final String BuiltinsAnnotationClass = "com.oracle.graal.python.builtins.Builtins";
8788
private static final String BUILTINS_BASE_CLASSES_PACKAGE = "com.oracle.graal.python.nodes.function.builtins";
8889

@@ -325,7 +326,7 @@ private void checkClinicBuiltinBaseClass(Element[] clinicBuiltinBases, TypeEleme
325326
}
326327
}
327328

328-
private static AnnotationMirror findAnnotationMirror(TypeElement type, String annotationQualifiedName) {
329+
private AnnotationMirror findAnnotationMirror(TypeElement type, String annotationQualifiedName) {
329330
for (AnnotationMirror annot : type.getAnnotationMirrors()) {
330331
String name = ((TypeElement) annot.getAnnotationType().asElement()).getQualifiedName().toString();
331332
if (name.equals(annotationQualifiedName)) {
@@ -353,13 +354,18 @@ private static AnnotationValue getAnnotationValue(AnnotationMirror annotationMir
353354
}
354355

355356
@SuppressWarnings("unchecked")
356-
private static BuiltinAnnotation getBuiltinAnnotation(TypeElement type) throws ProcessingError {
357+
private BuiltinAnnotation getBuiltinAnnotation(TypeElement type) throws ProcessingError {
357358
String builtinName = null;
358359
Stream<?> parameterNames = null;
359360
Stream<?> keywordOnlyNames = null;
360361
int minNumOfPositionalArgs = -1;
361362
boolean takesVarArgs = false;
362363
AnnotationMirror annot = findAnnotationMirror(type, BuiltinAnnotationClass);
364+
if (annot == null) {
365+
annot = findAnnotationMirror(type, SlotSignatureAnnotationClass);
366+
// XXX
367+
builtinName = "slot";
368+
}
363369
if (annot == null) {
364370
annot = findAnnotationMirror(type, BuiltinsAnnotationClass);
365371
if (annot != null) {

graalpython/com.oracle.graal.python.processor/src/com/oracle/graal/python/processor/SlotsMapping.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ static String getSlotBaseClass(Slot s) {
7979
case tp_setattro -> "TpSlotSetAttr.TpSlotSetAttrBuiltin";
8080
case tp_iternext -> "TpSlotIterNext.TpSlotIterNextBuiltin";
8181
case tp_hash -> "TpSlotHashFun.TpSlotHashBuiltin";
82+
case tp_init -> "TpSlotInit.TpSlotInitBuiltin";
8283
};
8384
}
8485

@@ -111,6 +112,7 @@ static String getSlotNodeBaseClass(Slot s) {
111112
case tp_descr_set -> "com.oracle.graal.python.builtins.objects.type.slots.TpSlotDescrSet.DescrSetBuiltinNode";
112113
case tp_setattro -> "com.oracle.graal.python.builtins.objects.type.slots.TpSlotSetAttr.SetAttrBuiltinNode";
113114
case tp_hash -> "com.oracle.graal.python.builtins.objects.type.slots.TpSlotHashFun.HashBuiltinNode";
115+
case tp_init -> "com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode";
114116
};
115117
}
116118

graalpython/com.oracle.graal.python.test/src/com/oracle/graal/python/test/builtin/modules/ConversionNodeTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
import com.oracle.truffle.api.frame.VirtualFrame;
6363

6464
public class ConversionNodeTests {
65-
static final Signature SIGNATURE = new Signature(-1, false, -1, false, tsArray("arg"), null);
65+
static final Signature SIGNATURE = new Signature(-1, false, -1, tsArray("arg"), null);
6666

6767
protected static Object call(Object arg, ArgumentCastNode castNode) {
6868
final PythonContext pythonContext = PythonContext.get(castNode);

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,6 @@
6363

6464
boolean takesVarArgs() default false;
6565

66-
boolean varArgsMarker() default false;
67-
6866
boolean takesVarKeywordArgs() default false;
6967

7068
String[] parameterNames() default {};

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@
9595
import com.oracle.graal.python.builtins.modules.PosixModuleBuiltins;
9696
import com.oracle.graal.python.builtins.modules.PosixShMemModuleBuiltins;
9797
import com.oracle.graal.python.builtins.modules.PosixSubprocessModuleBuiltins;
98+
import com.oracle.graal.python.builtins.modules.ProfilerBuiltins;
9899
import com.oracle.graal.python.builtins.modules.PwdModuleBuiltins;
99100
import com.oracle.graal.python.builtins.modules.QueueModuleBuiltins;
100101
import com.oracle.graal.python.builtins.modules.RandomModuleBuiltins;
@@ -790,7 +791,7 @@ private static PythonBuiltins[] initializeBuiltins(TruffleLanguage.Env env) {
790791
new TokenizerIterBuiltins()));
791792
if (hasProfilerTool) {
792793
builtins.add(new LsprofModuleBuiltins());
793-
builtins.add(LsprofModuleBuiltins.newProfilerBuiltins());
794+
builtins.add(new ProfilerBuiltins());
794795
}
795796
if (!PythonImageBuildOptions.WITHOUT_COMPRESSION_LIBRARIES && (env.isNativeAccessAllowed() || env.isPreInitialization())) {
796797
builtins.add(new BZ2CompressorBuiltins());

0 commit comments

Comments
 (0)