6969
7070import com .oracle .graal .python .PythonLanguage ;
7171import com .oracle .graal .python .annotations .ArgumentClinic ;
72+ import com .oracle .graal .python .annotations .ClinicConverterFactory ;
7273import com .oracle .graal .python .builtins .Builtin ;
7374import com .oracle .graal .python .builtins .CoreFunctions ;
7475import com .oracle .graal .python .builtins .PythonBuiltinClassType ;
@@ -1210,11 +1211,16 @@ private byte check(byte b) {
12101211 }
12111212 return b ;
12121213 }
1214+
1215+ @ ClinicConverterFactory
1216+ public static SepExpectByteNode create (@ ClinicConverterFactory .DefaultValue Object defaultValue ) {
1217+ return BytesBuiltinsFactory .SepExpectByteNodeGen .create (defaultValue );
1218+ }
12131219 }
12141220
12151221 @ Builtin (name = "hex" , minNumOfPositionalArgs = 1 , parameterNames = {"$self" , "sep" , "bytes_per_sep_group" })
1216- @ ArgumentClinic (name = "sep" , customConversion = "createSepExpectByteNode " )
1217- @ ArgumentClinic (name = "bytes_per_sep_group" , customConversion = "createExpectIntNode" , shortCircuitPrimitive = ArgumentClinic . PrimitiveType . Int )
1222+ @ ArgumentClinic (name = "sep" , conversionClass = SepExpectByteNode . class , defaultValue = "PNone.NO_VALUE " )
1223+ @ ArgumentClinic (name = "bytes_per_sep_group" , conversionClass = ExpectIntNode . class , defaultValue = "1" )
12181224 @ GenerateNodeFactory
12191225 abstract static class HexNode extends PythonTernaryClinicBuiltinNode {
12201226
@@ -1223,14 +1229,6 @@ protected ArgumentClinicProvider getArgumentClinic() {
12231229 return BytesBuiltinsClinicProviders .HexNodeClinicProviderGen .INSTANCE ;
12241230 }
12251231
1226- public static SepExpectByteNode createSepExpectByteNode () {
1227- return BytesBuiltinsFactory .SepExpectByteNodeGen .create (PNone .NO_VALUE );
1228- }
1229-
1230- public static ExpectIntNode createExpectIntNode () {
1231- return BytesBuiltinsFactory .ExpectIntNodeGen .create (1 );
1232- }
1233-
12341232 @ Specialization
12351233 String none (PBytesLike self , @ SuppressWarnings ("unused" ) PNone sep , @ SuppressWarnings ("unused" ) int bytesPerSepGroup ,
12361234 @ Cached .Shared ("p" ) @ Cached ConditionProfile earlyExit ,
@@ -1603,7 +1601,7 @@ protected byte[] make(byte[] self, int len, int width, byte fill) {
16031601 }
16041602
16051603 @ Builtin (name = "replace" , minNumOfPositionalArgs = 3 , parameterNames = {"$self" , "old" , "replacement" , "count" })
1606- @ ArgumentClinic (name = "count" , customConversion = "createExpectIntNode" , shortCircuitPrimitive = ArgumentClinic . PrimitiveType . Int )
1604+ @ ArgumentClinic (name = "count" , conversionClass = ExpectIntNode . class , defaultValue = "Integer.MAX_VALUE" )
16071605 @ GenerateNodeFactory
16081606 abstract static class ReplaceNode extends PythonQuaternaryClinicBuiltinNode {
16091607
@@ -1612,10 +1610,6 @@ protected ArgumentClinicProvider getArgumentClinic() {
16121610 return BytesBuiltinsClinicProviders .ReplaceNodeClinicProviderGen .INSTANCE ;
16131611 }
16141612
1615- public static ExpectIntNode createExpectIntNode () {
1616- return BytesBuiltinsFactory .ExpectIntNodeGen .create (Integer .MAX_VALUE );
1617- }
1618-
16191613 @ Specialization
16201614 PBytesLike replace (VirtualFrame frame , PBytesLike self , PBytesLike substr , PBytesLike replacement , int count ,
16211615 @ Cached SequenceStorageNodes .GetInternalByteArrayNode toInternalBytes ,
@@ -1799,6 +1793,11 @@ int doOthers(VirtualFrame frame, Object value,
17991793 protected ExpectIntNode createRec () {
18001794 return BytesBuiltinsFactory .ExpectIntNodeGen .create (defaultValue );
18011795 }
1796+
1797+ @ ClinicConverterFactory (shortCircuitPrimitive = ArgumentClinic .PrimitiveType .Int )
1798+ public static ExpectIntNode create (@ ClinicConverterFactory .DefaultValue int defaultValue ) {
1799+ return BytesBuiltinsFactory .ExpectIntNodeGen .create (defaultValue );
1800+ }
18021801 }
18031802
18041803 public abstract static class ExpectByteLikeNode extends ArgumentCastNode .ArgumentCastNodeWithRaise {
@@ -1832,6 +1831,11 @@ static byte[] doMemView(VirtualFrame frame, PMemoryView bytesLike,
18321831 byte [] error (@ SuppressWarnings ("unused" ) VirtualFrame frame , Object value ) {
18331832 throw raise (TypeError , ErrorMessages .BYTESLIKE_OBJ_REQUIRED , value );
18341833 }
1834+
1835+ @ ClinicConverterFactory
1836+ public static ExpectByteLikeNode create (@ ClinicConverterFactory .DefaultValue byte [] defaultValue ) {
1837+ return BytesBuiltinsFactory .ExpectByteLikeNodeGen .create (defaultValue );
1838+ }
18351839 }
18361840
18371841 abstract static class AbstractSplitNode extends PythonTernaryClinicBuiltinNode {
@@ -1938,8 +1942,8 @@ protected static Object asIndex(VirtualFrame frame, Object maxsplit, PythonObjec
19381942 }
19391943
19401944 @ Builtin (name = "split" , minNumOfPositionalArgs = 1 , parameterNames = {"$self" , "sep" , "maxsplit" })
1941- @ ArgumentClinic (name = "sep" , customConversion = "createExpectByteLikeNode " )
1942- @ ArgumentClinic (name = "maxsplit" , customConversion = "createExpectIntNode" , shortCircuitPrimitive = ArgumentClinic . PrimitiveType . Int )
1945+ @ ArgumentClinic (name = "sep" , conversionClass = ExpectByteLikeNode . class , defaultValue = "BytesBuiltins.AbstractSplitNode.WHITESPACE " )
1946+ @ ArgumentClinic (name = "maxsplit" , conversionClass = ExpectIntNode . class , defaultValue = "Integer.MAX_VALUE" )
19431947 @ GenerateNodeFactory
19441948 @ TypeSystemReference (PythonArithmeticTypes .class )
19451949 abstract static class SplitNode extends AbstractSplitNode {
@@ -1955,14 +1959,6 @@ protected ArgumentClinicProvider getArgumentClinic() {
19551959 return BytesBuiltinsClinicProviders .SplitNodeClinicProviderGen .INSTANCE ;
19561960 }
19571961
1958- public static ExpectByteLikeNode createExpectByteLikeNode () {
1959- return BytesBuiltinsFactory .ExpectByteLikeNodeGen .create (WHITESPACE );
1960- }
1961-
1962- public static ExpectIntNode createExpectIntNode () {
1963- return BytesBuiltinsFactory .ExpectIntNodeGen .create (Integer .MAX_VALUE );
1964- }
1965-
19661962 @ Override
19671963 protected List <byte []> splitWhitespace (byte [] bytes , int len , int maxsplit ) {
19681964 int i , j , maxcount = maxsplit ;
@@ -2042,8 +2038,8 @@ protected List<byte[]> splitDelimiter(byte[] bytes, int len, byte[] sep, int max
20422038 }
20432039
20442040 @ Builtin (name = "rsplit" , minNumOfPositionalArgs = 1 , parameterNames = {"self" , "sep" , "maxsplit" })
2045- @ ArgumentClinic (name = "sep" , customConversion = "createExpectByteLikeNode " )
2046- @ ArgumentClinic (name = "maxsplit" , customConversion = "createExpectIntNode" , shortCircuitPrimitive = ArgumentClinic . PrimitiveType . Int )
2041+ @ ArgumentClinic (name = "sep" , conversionClass = ExpectByteLikeNode . class , defaultValue = "BytesBuiltins.AbstractSplitNode.WHITESPACE " )
2042+ @ ArgumentClinic (name = "maxsplit" , conversionClass = ExpectIntNode . class , defaultValue = "Integer.MAX_VALUE" )
20472043 @ GenerateNodeFactory
20482044 @ TypeSystemReference (PythonArithmeticTypes .class )
20492045 abstract static class RSplitNode extends AbstractSplitNode {
@@ -2059,14 +2055,6 @@ protected ArgumentClinicProvider getArgumentClinic() {
20592055 return BytesBuiltinsClinicProviders .RSplitNodeClinicProviderGen .INSTANCE ;
20602056 }
20612057
2062- public static ExpectByteLikeNode createExpectByteLikeNode () {
2063- return BytesBuiltinsFactory .ExpectByteLikeNodeGen .create (WHITESPACE );
2064- }
2065-
2066- public static ExpectIntNode createExpectIntNode () {
2067- return BytesBuiltinsFactory .ExpectIntNodeGen .create (Integer .MAX_VALUE );
2068- }
2069-
20702058 @ CompilerDirectives .TruffleBoundary
20712059 private static void reverseList (ArrayList <byte []> list ) {
20722060 Collections .reverse (list );
0 commit comments