Skip to content

Commit 9322572

Browse files
committed
use argument clinic instead of typesystemreference to cast strings in zipimporter
1 parent 655f7f5 commit 9322572

File tree

1 file changed

+60
-28
lines changed

1 file changed

+60
-28
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/zipimporter/ZipImporterBuiltins.java

Lines changed: 60 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -55,21 +55,26 @@
5555
import com.oracle.graal.python.builtins.objects.function.PArguments;
5656
import com.oracle.graal.python.builtins.objects.list.PList;
5757
import com.oracle.graal.python.builtins.objects.module.PythonModule;
58-
import com.oracle.graal.python.builtins.objects.object.PythonObject;
5958
import com.oracle.graal.python.builtins.objects.object.PythonObjectLibrary;
6059
import com.oracle.graal.python.builtins.objects.tuple.PTuple;
6160
import com.oracle.graal.python.builtins.objects.zipimporter.PZipImporter.ModuleCodeData;
6261
import com.oracle.graal.python.builtins.objects.zipimporter.PZipImporter.ModuleInfo;
6362
import com.oracle.graal.python.builtins.objects.zipimporter.ZipImporterBuiltinsClinicProviders.FindLoaderNodeClinicProviderGen;
63+
import com.oracle.graal.python.builtins.objects.zipimporter.ZipImporterBuiltinsClinicProviders.FindModuleNodeClinicProviderGen;
64+
import com.oracle.graal.python.builtins.objects.zipimporter.ZipImporterBuiltinsClinicProviders.GetCodeNodeClinicProviderGen;
65+
import com.oracle.graal.python.builtins.objects.zipimporter.ZipImporterBuiltinsClinicProviders.GetDataNodeClinicProviderGen;
66+
import com.oracle.graal.python.builtins.objects.zipimporter.ZipImporterBuiltinsClinicProviders.GetFileNameNodeClinicProviderGen;
67+
import com.oracle.graal.python.builtins.objects.zipimporter.ZipImporterBuiltinsClinicProviders.GetSourceNodeClinicProviderGen;
68+
import com.oracle.graal.python.builtins.objects.zipimporter.ZipImporterBuiltinsClinicProviders.IsPackageNodeClinicProviderGen;
69+
import com.oracle.graal.python.builtins.objects.zipimporter.ZipImporterBuiltinsClinicProviders.LoadModuleNodeClinicProviderGen;
6470
import com.oracle.graal.python.nodes.ErrorMessages;
6571
import com.oracle.graal.python.nodes.SpecialAttributeNames;
6672
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
6773
import com.oracle.graal.python.nodes.function.builtins.PythonBinaryBuiltinNode;
68-
import com.oracle.graal.python.nodes.function.builtins.PythonTernaryBuiltinNode;
74+
import com.oracle.graal.python.nodes.function.builtins.PythonBinaryClinicBuiltinNode;
6975
import com.oracle.graal.python.nodes.function.builtins.PythonTernaryClinicBuiltinNode;
7076
import com.oracle.graal.python.nodes.function.builtins.PythonUnaryBuiltinNode;
7177
import com.oracle.graal.python.nodes.function.builtins.clinic.ArgumentClinicProvider;
72-
import com.oracle.graal.python.nodes.truffle.PythonArithmeticTypes;
7378
import com.oracle.graal.python.runtime.exception.PythonErrorType;
7479
import com.oracle.graal.python.runtime.sequence.storage.SequenceStorage;
7580
import com.oracle.graal.python.util.PythonUtils;
@@ -81,7 +86,6 @@
8186
import com.oracle.truffle.api.dsl.GenerateNodeFactory;
8287
import com.oracle.truffle.api.dsl.NodeFactory;
8388
import com.oracle.truffle.api.dsl.Specialization;
84-
import com.oracle.truffle.api.dsl.TypeSystemReference;
8589
import com.oracle.truffle.api.frame.VirtualFrame;
8690
import com.oracle.truffle.api.library.CachedLibrary;
8791
import com.oracle.truffle.api.profiles.ConditionProfile;
@@ -200,7 +204,6 @@ protected List<? extends NodeFactory<? extends PythonBuiltinBaseNode>> getNodeFa
200204
}
201205

202206
@Builtin(name = __INIT__, minNumOfPositionalArgs = 1, maxNumOfPositionalArgs = 2)
203-
@TypeSystemReference(PythonArithmeticTypes.class)
204207
@GenerateNodeFactory
205208
public abstract static class InitNode extends PythonBinaryBuiltinNode {
206209

@@ -355,7 +358,7 @@ public PNone init(PZipImporter self, PBytes path,
355358
}
356359

357360
@Specialization(limit = "1")
358-
public PNone init(PZipImporter self, PythonObject path,
361+
public PNone init(PZipImporter self, Object path,
359362
@CachedLibrary("path") PythonObjectLibrary lib) {
360363
initZipImporter(self, lib.asPath(path));
361364
return PNone.NONE;
@@ -399,10 +402,16 @@ public abstract static class ReprNode extends StrNode {
399402

400403
}
401404

402-
@Builtin(name = "find_module", minNumOfPositionalArgs = 2, maxNumOfPositionalArgs = 3)
403-
@TypeSystemReference(PythonArithmeticTypes.class)
405+
@Builtin(name = "find_module", minNumOfPositionalArgs = 2, parameterNames = {"self", "fullname", "path"})
406+
@ArgumentClinic(name = "fullname", conversion = ArgumentClinic.ClinicConversion.String)
407+
@ArgumentClinic(name = "path", defaultValue = "PNone.NONE")
404408
@GenerateNodeFactory
405-
public abstract static class FindModuleNode extends PythonTernaryBuiltinNode {
409+
public abstract static class FindModuleNode extends PythonTernaryClinicBuiltinNode {
410+
@Override
411+
protected ArgumentClinicProvider getArgumentClinic() {
412+
return FindModuleNodeClinicProviderGen.INSTANCE;
413+
}
414+
406415
/**
407416
*
408417
* @param self
@@ -424,7 +433,6 @@ public Object doit(PZipImporter self, String fullname, @SuppressWarnings("unused
424433

425434
@Builtin(name = "find_loader", minNumOfPositionalArgs = 2, parameterNames = {"self", "fullname", "path"})
426435
@ArgumentClinic(name = "fullname", conversion = ArgumentClinic.ClinicConversion.String)
427-
@TypeSystemReference(PythonArithmeticTypes.class)
428436
@GenerateNodeFactory
429437
public abstract static class FindLoaderNode extends PythonTernaryClinicBuiltinNode {
430438
@Override
@@ -463,10 +471,14 @@ private PList makeList(Object first) {
463471
}
464472
}
465473

466-
@Builtin(name = "get_code", minNumOfPositionalArgs = 2)
467-
@TypeSystemReference(PythonArithmeticTypes.class)
474+
@Builtin(name = "get_code", minNumOfPositionalArgs = 2, parameterNames = {"self", "fullname"})
475+
@ArgumentClinic(name = "fullname", conversion = ArgumentClinic.ClinicConversion.String)
468476
@GenerateNodeFactory
469-
public abstract static class GetCodeNode extends PythonBinaryBuiltinNode {
477+
public abstract static class GetCodeNode extends PythonBinaryClinicBuiltinNode {
478+
@Override
479+
protected ArgumentClinicProvider getArgumentClinic() {
480+
return GetCodeNodeClinicProviderGen.INSTANCE;
481+
}
470482

471483
@Child private CompileNode compileNode;
472484

@@ -499,10 +511,14 @@ public static GetCodeNode create() {
499511
}
500512
}
501513

502-
@Builtin(name = "get_data", minNumOfPositionalArgs = 2)
503-
@TypeSystemReference(PythonArithmeticTypes.class)
514+
@Builtin(name = "get_data", minNumOfPositionalArgs = 2, parameterNames = {"self", "pathname"})
515+
@ArgumentClinic(name = "pathname", conversion = ArgumentClinic.ClinicConversion.String)
504516
@GenerateNodeFactory
505-
public abstract static class GetDataNode extends PythonBinaryBuiltinNode {
517+
public abstract static class GetDataNode extends PythonBinaryClinicBuiltinNode {
518+
@Override
519+
protected ArgumentClinicProvider getArgumentClinic() {
520+
return GetDataNodeClinicProviderGen.INSTANCE;
521+
}
506522

507523
@Specialization
508524
@TruffleBoundary
@@ -565,10 +581,14 @@ public PBytes doit(PZipImporter self, String pathname) {
565581
}
566582
}
567583

568-
@Builtin(name = "get_filename", minNumOfPositionalArgs = 2)
569-
@TypeSystemReference(PythonArithmeticTypes.class)
584+
@Builtin(name = "get_filename", minNumOfPositionalArgs = 2, parameterNames = {"self", "fullname"})
585+
@ArgumentClinic(name = "fullname", conversion = ArgumentClinic.ClinicConversion.String)
570586
@GenerateNodeFactory
571-
public abstract static class GetFileNameNode extends PythonBinaryBuiltinNode {
587+
public abstract static class GetFileNameNode extends PythonBinaryClinicBuiltinNode {
588+
@Override
589+
protected ArgumentClinicProvider getArgumentClinic() {
590+
return GetFileNameNodeClinicProviderGen.INSTANCE;
591+
}
572592

573593
@Specialization
574594
public Object doit(VirtualFrame frame, PZipImporter self, String fullname,
@@ -591,10 +611,14 @@ public Object doit(VirtualFrame frame, PZipImporter self, String fullname,
591611

592612
}
593613

594-
@Builtin(name = "get_source", minNumOfPositionalArgs = 2)
595-
@TypeSystemReference(PythonArithmeticTypes.class)
614+
@Builtin(name = "get_source", minNumOfPositionalArgs = 2, parameterNames = {"self", "fullname"})
615+
@ArgumentClinic(name = "fullname", conversion = ArgumentClinic.ClinicConversion.String)
596616
@GenerateNodeFactory
597-
public abstract static class GetSourceNode extends PythonBinaryBuiltinNode {
617+
public abstract static class GetSourceNode extends PythonBinaryClinicBuiltinNode {
618+
@Override
619+
protected ArgumentClinicProvider getArgumentClinic() {
620+
return GetSourceNodeClinicProviderGen.INSTANCE;
621+
}
598622

599623
@Specialization
600624
public String doit(VirtualFrame frame, PZipImporter self, String fullname,
@@ -617,10 +641,14 @@ public String doit(VirtualFrame frame, PZipImporter self, String fullname,
617641

618642
}
619643

620-
@Builtin(name = "is_package", minNumOfPositionalArgs = 2)
621-
@TypeSystemReference(PythonArithmeticTypes.class)
644+
@Builtin(name = "is_package", minNumOfPositionalArgs = 2, parameterNames = {"self", "fullname"})
645+
@ArgumentClinic(name = "fullname", conversion = ArgumentClinic.ClinicConversion.String)
622646
@GenerateNodeFactory
623-
public abstract static class IsPackageNode extends PythonBinaryBuiltinNode {
647+
public abstract static class IsPackageNode extends PythonBinaryClinicBuiltinNode {
648+
@Override
649+
protected ArgumentClinicProvider getArgumentClinic() {
650+
return IsPackageNodeClinicProviderGen.INSTANCE;
651+
}
624652

625653
@Specialization
626654
public boolean doit(PZipImporter self, String fullname,
@@ -638,10 +666,14 @@ public boolean doit(PZipImporter self, String fullname,
638666

639667
}
640668

641-
@Builtin(name = "load_module", minNumOfPositionalArgs = 2)
642-
@TypeSystemReference(PythonArithmeticTypes.class)
669+
@Builtin(name = "load_module", minNumOfPositionalArgs = 2, parameterNames = {"self", "fullname"})
670+
@ArgumentClinic(name = "fullname", conversion = ArgumentClinic.ClinicConversion.String)
643671
@GenerateNodeFactory
644-
public abstract static class LoadModuleNode extends PythonBinaryBuiltinNode {
672+
public abstract static class LoadModuleNode extends PythonBinaryClinicBuiltinNode {
673+
@Override
674+
protected ArgumentClinicProvider getArgumentClinic() {
675+
return LoadModuleNodeClinicProviderGen.INSTANCE;
676+
}
645677

646678
@Specialization
647679
public Object doit(VirtualFrame frame, PZipImporter self, String fullname,

0 commit comments

Comments
 (0)