Skip to content

Commit bbefe16

Browse files
committed
[GR-23290] make test_fileio pass
PullRequest: graalpython/1596
2 parents 4fc6597 + 6b51951 commit bbefe16

26 files changed

+1555
-407
lines changed

graalpython/com.oracle.graal.python.test/src/tests/unittest_tags/test_fileio.txt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,14 @@
33
*graalpython.lib-python.3.test.test_fileio.CAutoFileTests.testErrnoOnClose
44
*graalpython.lib-python.3.test.test_fileio.CAutoFileTests.testErrnoOnClosedFileno
55
*graalpython.lib-python.3.test.test_fileio.CAutoFileTests.testErrnoOnClosedIsatty
6+
*graalpython.lib-python.3.test.test_fileio.CAutoFileTests.testErrnoOnClosedRead
67
*graalpython.lib-python.3.test.test_fileio.CAutoFileTests.testErrnoOnClosedReadable
8+
*graalpython.lib-python.3.test.test_fileio.CAutoFileTests.testErrnoOnClosedReadall
9+
*graalpython.lib-python.3.test.test_fileio.CAutoFileTests.testErrnoOnClosedReadinto
10+
*graalpython.lib-python.3.test.test_fileio.CAutoFileTests.testErrnoOnClosedSeek
711
*graalpython.lib-python.3.test.test_fileio.CAutoFileTests.testErrnoOnClosedSeekable
12+
*graalpython.lib-python.3.test.test_fileio.CAutoFileTests.testErrnoOnClosedTell
13+
*graalpython.lib-python.3.test.test_fileio.CAutoFileTests.testErrnoOnClosedTruncate
814
*graalpython.lib-python.3.test.test_fileio.CAutoFileTests.testErrnoOnClosedWritable
915
*graalpython.lib-python.3.test.test_fileio.CAutoFileTests.testErrnoOnClosedWrite
1016
*graalpython.lib-python.3.test.test_fileio.CAutoFileTests.testErrors
@@ -13,12 +19,16 @@
1319
*graalpython.lib-python.3.test.test_fileio.CAutoFileTests.testOpendir
1420
*graalpython.lib-python.3.test.test_fileio.CAutoFileTests.testReadintoByteArray
1521
*graalpython.lib-python.3.test.test_fileio.CAutoFileTests.testRecursiveRepr
22+
*graalpython.lib-python.3.test.test_fileio.CAutoFileTests.testRepr
23+
*graalpython.lib-python.3.test.test_fileio.CAutoFileTests.testReprNoCloseFD
1624
*graalpython.lib-python.3.test.test_fileio.CAutoFileTests.testSeekTell
25+
*graalpython.lib-python.3.test.test_fileio.CAutoFileTests.testWeakRefs
1726
*graalpython.lib-python.3.test.test_fileio.CAutoFileTests.testWritelinesError
1827
*graalpython.lib-python.3.test.test_fileio.CAutoFileTests.testWritelinesList
1928
*graalpython.lib-python.3.test.test_fileio.CAutoFileTests.testWritelinesUserList
2029
*graalpython.lib-python.3.test.test_fileio.CAutoFileTests.test_none_args
2130
*graalpython.lib-python.3.test.test_fileio.CAutoFileTests.test_reject
31+
*graalpython.lib-python.3.test.test_fileio.COtherFileTests.testAbles
2232
*graalpython.lib-python.3.test.test_fileio.COtherFileTests.testAppend
2333
*graalpython.lib-python.3.test.test_fileio.COtherFileTests.testBadModeArgument
2434
*graalpython.lib-python.3.test.test_fileio.COtherFileTests.testBytesOpen
@@ -27,6 +37,7 @@
2737
*graalpython.lib-python.3.test.test_fileio.COtherFileTests.testInvalidFd_overflow
2838
*graalpython.lib-python.3.test.test_fileio.COtherFileTests.testInvalidInit
2939
*graalpython.lib-python.3.test.test_fileio.COtherFileTests.testInvalidModeStrings
40+
*graalpython.lib-python.3.test.test_fileio.COtherFileTests.testModeStrings
3041
*graalpython.lib-python.3.test.test_fileio.COtherFileTests.testTruncateOnWindows
3142
*graalpython.lib-python.3.test.test_fileio.COtherFileTests.testUnclosedFDOnException
3243
*graalpython.lib-python.3.test.test_fileio.COtherFileTests.testUnicodeOpen
@@ -38,8 +49,14 @@
3849
*graalpython.lib-python.3.test.test_fileio.PyAutoFileTests.testErrnoOnClose
3950
*graalpython.lib-python.3.test.test_fileio.PyAutoFileTests.testErrnoOnClosedFileno
4051
*graalpython.lib-python.3.test.test_fileio.PyAutoFileTests.testErrnoOnClosedIsatty
52+
*graalpython.lib-python.3.test.test_fileio.PyAutoFileTests.testErrnoOnClosedRead
4153
*graalpython.lib-python.3.test.test_fileio.PyAutoFileTests.testErrnoOnClosedReadable
54+
*graalpython.lib-python.3.test.test_fileio.PyAutoFileTests.testErrnoOnClosedReadall
55+
*graalpython.lib-python.3.test.test_fileio.PyAutoFileTests.testErrnoOnClosedReadinto
56+
*graalpython.lib-python.3.test.test_fileio.PyAutoFileTests.testErrnoOnClosedSeek
4257
*graalpython.lib-python.3.test.test_fileio.PyAutoFileTests.testErrnoOnClosedSeekable
58+
*graalpython.lib-python.3.test.test_fileio.PyAutoFileTests.testErrnoOnClosedTell
59+
*graalpython.lib-python.3.test.test_fileio.PyAutoFileTests.testErrnoOnClosedTruncate
4360
*graalpython.lib-python.3.test.test_fileio.PyAutoFileTests.testErrnoOnClosedWritable
4461
*graalpython.lib-python.3.test.test_fileio.PyAutoFileTests.testErrnoOnClosedWrite
4562
*graalpython.lib-python.3.test.test_fileio.PyAutoFileTests.testErrors
@@ -51,18 +68,21 @@
5168
*graalpython.lib-python.3.test.test_fileio.PyAutoFileTests.testRepr
5269
*graalpython.lib-python.3.test.test_fileio.PyAutoFileTests.testReprNoCloseFD
5370
*graalpython.lib-python.3.test.test_fileio.PyAutoFileTests.testSeekTell
71+
*graalpython.lib-python.3.test.test_fileio.PyAutoFileTests.testWeakRefs
5472
*graalpython.lib-python.3.test.test_fileio.PyAutoFileTests.testWritelinesError
5573
*graalpython.lib-python.3.test.test_fileio.PyAutoFileTests.testWritelinesList
5674
*graalpython.lib-python.3.test.test_fileio.PyAutoFileTests.testWritelinesUserList
5775
*graalpython.lib-python.3.test.test_fileio.PyAutoFileTests.test_none_args
5876
*graalpython.lib-python.3.test.test_fileio.PyAutoFileTests.test_reject
77+
*graalpython.lib-python.3.test.test_fileio.PyOtherFileTests.testAbles
5978
*graalpython.lib-python.3.test.test_fileio.PyOtherFileTests.testAppend
6079
*graalpython.lib-python.3.test.test_fileio.PyOtherFileTests.testBadModeArgument
6180
*graalpython.lib-python.3.test.test_fileio.PyOtherFileTests.testBytesOpen
6281
*graalpython.lib-python.3.test.test_fileio.PyOtherFileTests.testConstructorHandlesNULChars
6382
*graalpython.lib-python.3.test.test_fileio.PyOtherFileTests.testInvalidFd
6483
*graalpython.lib-python.3.test.test_fileio.PyOtherFileTests.testInvalidInit
6584
*graalpython.lib-python.3.test.test_fileio.PyOtherFileTests.testInvalidModeStrings
85+
*graalpython.lib-python.3.test.test_fileio.PyOtherFileTests.testModeStrings
6686
*graalpython.lib-python.3.test.test_fileio.PyOtherFileTests.testTruncateOnWindows
6787
*graalpython.lib-python.3.test.test_fileio.PyOtherFileTests.testUnclosedFDOnException
6888
*graalpython.lib-python.3.test.test_fileio.PyOtherFileTests.testUnicodeOpen

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@
107107
import com.oracle.graal.python.builtins.modules.bz2.BZ2ModuleBuiltins;
108108
import com.oracle.graal.python.builtins.modules.io.BufferedIOBaseBuiltins;
109109
import com.oracle.graal.python.builtins.modules.io.BufferedReaderBuiltins;
110+
import com.oracle.graal.python.builtins.modules.io.FileIOBuiltins;
110111
import com.oracle.graal.python.builtins.modules.io.IOBaseBuiltins;
111112
import com.oracle.graal.python.builtins.modules.io.IOModuleBuiltins;
112113
import com.oracle.graal.python.builtins.modules.io.RawIOBaseBuiltins;
@@ -391,6 +392,7 @@ private static PythonBuiltins[] initializeBuiltins(boolean nativeAccessAllowed)
391392
new RawIOBaseBuiltins(),
392393
new TextIOBaseBuiltins(),
393394
new BufferedReaderBuiltins(),
395+
new FileIOBuiltins(),
394396

395397
new StringModuleBuiltins(),
396398
new ItertoolsModuleBuiltins(),

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ public enum PythonBuiltinClassType implements TruffleObject {
159159
PBufferedWriter("BufferedWriter", "_io"),
160160
PBufferedRWPair("BufferedRWPair", "_io"),
161161
PBufferedRandom("BufferedRandom", "_io"),
162+
PFileIO("FileIO", "_io"),
162163

163164
PStatResult("stat_result", "os", false),
164165
PTerminalSize("terminal_size", "os", false),
@@ -459,6 +460,7 @@ public final Shape getInstanceShape(PythonLanguage lang) {
459460
PBufferedWriter.base = PBufferedIOBase;
460461
PBufferedRWPair.base = PBufferedIOBase;
461462
PBufferedRandom.base = PBufferedIOBase;
463+
PFileIO.base = PRawIOBase;
462464
}
463465

464466
/* InteropLibrary messages */

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

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1828,12 +1828,6 @@ private int sumIntInternal(VirtualFrame frame, Object arg1, int start, PythonObj
18281828
}
18291829
}
18301830

1831-
@Specialization(rewriteOn = UnexpectedResultException.class)
1832-
double sumDoubleNone(VirtualFrame frame, Object arg1, @SuppressWarnings("unused") PNone start,
1833-
@Shared("lib") @CachedLibrary(limit = "getCallSiteInlineCacheMaxDepth()") PythonObjectLibrary lib) throws UnexpectedResultException {
1834-
return sumDoubleInternal(frame, arg1, 0, lib);
1835-
}
1836-
18371831
@Specialization(rewriteOn = UnexpectedResultException.class)
18381832
double sumDoubleDouble(VirtualFrame frame, Object arg1, double start,
18391833
@Shared("lib") @CachedLibrary(limit = "getCallSiteInlineCacheMaxDepth()") PythonObjectLibrary lib) throws UnexpectedResultException {
@@ -1862,7 +1856,7 @@ private double sumDoubleInternal(VirtualFrame frame, Object arg1, double start,
18621856
}
18631857
}
18641858

1865-
@Specialization(replaces = {"sumIntNone", "sumIntInt", "sumDoubleNone", "sumDoubleDouble"})
1859+
@Specialization(replaces = {"sumIntNone", "sumIntInt", "sumDoubleDouble"})
18661860
Object sum(VirtualFrame frame, Object arg1, Object start,
18671861
@Shared("lib") @CachedLibrary(limit = "getCallSiteInlineCacheMaxDepth()") PythonObjectLibrary lib,
18681862
@Cached("createBinaryProfile()") ConditionProfile hasStart,
@@ -1898,7 +1892,7 @@ private Object iterateGeneric(VirtualFrame frame, Object iterator, Object start,
18981892
}
18991893
}
19001894

1901-
@Builtin(name = "globals", minNumOfPositionalArgs = 0)
1895+
@Builtin(name = "globals")
19021896
@GenerateNodeFactory
19031897
public abstract static class GlobalsNode extends PythonBuiltinNode {
19041898
@Child private ReadCallerFrameNode readCallerFrameNode = ReadCallerFrameNode.create();
@@ -1933,7 +1927,7 @@ public static GlobalsNode create() {
19331927
}
19341928
}
19351929

1936-
@Builtin(name = "locals", minNumOfPositionalArgs = 0, needsFrame = true, alwaysNeedsCallerFrame = true)
1930+
@Builtin(name = "locals", needsFrame = true, alwaysNeedsCallerFrame = true)
19371931
@GenerateNodeFactory
19381932
abstract static class LocalsNode extends PythonBuiltinNode {
19391933

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

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@
7676
import com.oracle.graal.python.builtins.objects.object.PythonObjectLibrary;
7777
import com.oracle.graal.python.builtins.objects.str.PString;
7878
import com.oracle.graal.python.nodes.ErrorMessages;
79-
import com.oracle.graal.python.nodes.PConstructAndRaiseNode;
8079
import com.oracle.graal.python.nodes.SpecialMethodNames;
8180
import com.oracle.graal.python.nodes.attributes.ReadAttributeFromObjectNode;
8281
import com.oracle.graal.python.nodes.attributes.SetAttributeNode;
@@ -221,7 +220,6 @@ public abstract static class CreateDynamic extends PythonBuiltinNode {
221220
@Child private SetItemNode setItemNode;
222221
@Child private CheckFunctionResultNode checkResultNode;
223222
@Child private LookupAndCallUnaryNode callReprNode = LookupAndCallUnaryNode.create(SpecialMethodNames.__REPR__);
224-
@Child private PConstructAndRaiseNode constructAndRaiseNode;
225223

226224
static class ImportException extends Exception {
227225
private static final long serialVersionUID = 3517291912314595890L;
@@ -496,14 +494,6 @@ private CheckFunctionResultNode getCheckResultNode() {
496494
return checkResultNode;
497495
}
498496

499-
private PConstructAndRaiseNode getConstructAndRaiseNode() {
500-
if (constructAndRaiseNode == null) {
501-
CompilerDirectives.transferToInterpreterAndInvalidate();
502-
constructAndRaiseNode = insert(PConstructAndRaiseNode.create());
503-
}
504-
return constructAndRaiseNode;
505-
}
506-
507497
@TruffleBoundary
508498
private PException reportImportError(RuntimeException e, String name, String path) throws ImportException {
509499
StringBuilder sb = new StringBuilder();

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

Lines changed: 42 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -139,13 +139,13 @@ public class PosixModuleBuiltins extends PythonBuiltins {
139139
private static final int DSYNC = 4096;
140140
private static final int NDELAY = 2048;
141141
private static final int NONBLOCK = 2048;
142-
private static final int APPEND = 1024;
143-
private static final int TRUNC = 512;
144-
private static final int EXCL = 128;
145-
private static final int CREAT = 64;
146-
private static final int RDWR = 2;
147-
private static final int WRONLY = 1;
148-
private static final int RDONLY = 0;
142+
private static final int APPEND = PosixSupportLibrary.O_APPEND;
143+
private static final int TRUNC = PosixSupportLibrary.O_TRUNC;
144+
private static final int EXCL = PosixSupportLibrary.O_EXCL;
145+
private static final int CREAT = PosixSupportLibrary.O_CREAT;
146+
private static final int RDWR = PosixSupportLibrary.O_RDWR;
147+
private static final int WRONLY = PosixSupportLibrary.O_WRONLY;
148+
private static final int RDONLY = PosixSupportLibrary.O_RDONLY;
149149

150150
// TODO map Python's SEEK_SET, SEEK_CUR, SEEK_END values to the underlying OS values if they are
151151
// different
@@ -434,7 +434,7 @@ static long getSystemUid() {
434434
@ArgumentClinic(name = "mode", conversion = ClinicConversion.Int, defaultValue = "0777")
435435
@ArgumentClinic(name = "dir_fd", conversionClass = DirFdConversionNode.class)
436436
@GenerateNodeFactory
437-
abstract static class OpenNode extends PythonClinicBuiltinNode {
437+
public abstract static class OpenNode extends PythonClinicBuiltinNode {
438438

439439
@Override
440440
protected ArgumentClinicProvider getArgumentClinic() {
@@ -466,7 +466,7 @@ int open(VirtualFrame frame, PosixPath path, int flags, int mode, int dirFd,
466466
@Builtin(name = "close", minNumOfPositionalArgs = 1, parameterNames = {"fd"})
467467
@ArgumentClinic(name = "fd", conversion = ClinicConversion.Int)
468468
@GenerateNodeFactory
469-
abstract static class CloseNode extends PythonUnaryClinicBuiltinNode {
469+
public abstract static class CloseNode extends PythonUnaryClinicBuiltinNode {
470470

471471
@Override
472472
protected ArgumentClinicProvider getArgumentClinic() {
@@ -489,17 +489,28 @@ PNone close(VirtualFrame frame, int fd,
489489
@ArgumentClinic(name = "fd", conversion = ClinicConversion.Int)
490490
@ArgumentClinic(name = "length", conversion = ClinicConversion.Index)
491491
@GenerateNodeFactory
492-
abstract static class ReadNode extends PythonBinaryClinicBuiltinNode {
492+
public abstract static class ReadNode extends PythonBinaryClinicBuiltinNode {
493493

494494
@Override
495495
protected ArgumentClinicProvider getArgumentClinic() {
496496
return PosixModuleBuiltinsClinicProviders.ReadNodeClinicProviderGen.INSTANCE;
497497
}
498498

499499
@Specialization
500-
PBytes read(VirtualFrame frame, int fd, int length,
500+
PBytes doRead(VirtualFrame frame, int fd, int length,
501501
@CachedLibrary("getPosixSupport()") PosixSupportLibrary posixLib,
502502
@Cached BranchProfile errorProfile) {
503+
try {
504+
return read(frame, fd, length, posixLib, errorProfile);
505+
} catch (PosixException e) {
506+
errorProfile.enter();
507+
throw raiseOSErrorFromPosixException(frame, e);
508+
}
509+
}
510+
511+
public PBytes read(VirtualFrame frame, int fd, int length,
512+
PosixSupportLibrary posixLib,
513+
BranchProfile errorProfile) throws PosixException {
503514
if (length < 0) {
504515
int error = OSErrorEnum.EINVAL.getNumber();
505516
throw raiseOSError(frame, error, posixLib.strerror(getPosixSupport(), error));
@@ -518,7 +529,7 @@ PBytes read(VirtualFrame frame, int fd, int length,
518529
if (e.getErrorCode() == OSErrorEnum.EINTR.getNumber()) {
519530
getContext().triggerAsyncActions(frame);
520531
} else {
521-
throw raiseOSErrorFromPosixException(frame, e);
532+
throw e;
522533
}
523534
}
524535
}
@@ -529,17 +540,28 @@ PBytes read(VirtualFrame frame, int fd, int length,
529540
@ArgumentClinic(name = "fd", conversion = ClinicConversion.Int)
530541
@ArgumentClinic(name = "data", conversion = ClinicConversion.Buffer)
531542
@GenerateNodeFactory
532-
abstract static class WriteNode extends PythonBinaryClinicBuiltinNode {
543+
public abstract static class WriteNode extends PythonBinaryClinicBuiltinNode {
533544

534545
@Override
535546
protected ArgumentClinicProvider getArgumentClinic() {
536547
return PosixModuleBuiltinsClinicProviders.WriteNodeClinicProviderGen.INSTANCE;
537548
}
538549

539550
@Specialization
540-
long write(VirtualFrame frame, int fd, byte[] data,
551+
long doWrite(VirtualFrame frame, int fd, byte[] data,
541552
@CachedLibrary("getPosixSupport()") PosixSupportLibrary posixLib,
542553
@Cached BranchProfile errorProfile) {
554+
try {
555+
return write(frame, fd, data, posixLib, errorProfile);
556+
} catch (PosixException e) {
557+
errorProfile.enter();
558+
throw raiseOSErrorFromPosixException(frame, e);
559+
}
560+
}
561+
562+
public long write(VirtualFrame frame, int fd, byte[] data,
563+
PosixSupportLibrary posixLib,
564+
BranchProfile errorProfile) throws PosixException {
543565
while (true) {
544566
try {
545567
return posixLib.write(getPosixSupport(), fd, Buffer.wrap(data));
@@ -548,7 +570,7 @@ long write(VirtualFrame frame, int fd, byte[] data,
548570
if (e.getErrorCode() == OSErrorEnum.EINTR.getNumber()) {
549571
getContext().triggerAsyncActions(frame);
550572
} else {
551-
throw raiseOSErrorFromPosixException(frame, e);
573+
throw e;
552574
}
553575
}
554576
}
@@ -673,7 +695,7 @@ PTuple pipe(VirtualFrame frame,
673695
@ArgumentClinic(name = "pos", conversionClass = OffsetConversionNode.class)
674696
@ArgumentClinic(name = "how", conversion = ClinicConversion.Int)
675697
@GenerateNodeFactory
676-
abstract static class LseekNode extends PythonTernaryClinicBuiltinNode {
698+
public abstract static class LseekNode extends PythonTernaryClinicBuiltinNode {
677699

678700
@Override
679701
protected ArgumentClinicProvider getArgumentClinic() {
@@ -682,10 +704,12 @@ protected ArgumentClinicProvider getArgumentClinic() {
682704

683705
@Specialization
684706
long lseek(VirtualFrame frame, int fd, long pos, int how,
685-
@CachedLibrary("getPosixSupport()") PosixSupportLibrary posixLib) {
707+
@CachedLibrary("getPosixSupport()") PosixSupportLibrary posixLib,
708+
@Cached BranchProfile errorProfile) {
686709
try {
687710
return posixLib.lseek(getPosixSupport(), fd, pos, how);
688711
} catch (PosixException e) {
712+
errorProfile.enter();
689713
throw raiseOSErrorFromPosixException(frame, e);
690714
}
691715
}
@@ -695,7 +719,7 @@ long lseek(VirtualFrame frame, int fd, long pos, int how,
695719
@ArgumentClinic(name = "fd", conversion = ClinicConversion.Int)
696720
@ArgumentClinic(name = "length", conversionClass = OffsetConversionNode.class)
697721
@GenerateNodeFactory
698-
abstract static class FtruncateNode extends PythonBinaryClinicBuiltinNode {
722+
public abstract static class FtruncateNode extends PythonBinaryClinicBuiltinNode {
699723

700724
@Override
701725
protected ArgumentClinicProvider getArgumentClinic() {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/io/BufferedReaderBuiltins.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
7373
import com.oracle.graal.python.builtins.CoreFunctions;
7474
import com.oracle.graal.python.builtins.PythonBuiltins;
7575
import com.oracle.graal.python.builtins.objects.PNone;
76+
import com.oracle.graal.python.builtins.objects.bytes.BytesNodes;
7677
import com.oracle.graal.python.builtins.objects.bytes.PBytes;
7778
import com.oracle.graal.python.builtins.objects.object.PythonObjectLibrary;
7879
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
@@ -485,13 +486,13 @@ abstract static class ReadIntoNode extends PythonBinaryBuiltinNode {
485486

486487
protected static final String CLOSE_ERROR_MSG = "readline of closed file";
487488

488-
@Specialization(guards = "self.isOK()", limit = "1")
489+
@Specialization(guards = "self.isOK()")
489490
int doit(VirtualFrame frame, PBuffered self, Object buffer,
490491
@Cached("create(CLOSE_ERROR_MSG)") BufferedIONodes.CheckIsClosedNode checkIsClosedNode,
491492
@Cached BufferedReaderNodes.ReadintoNode readintoNode,
492-
@CachedLibrary("buffer") PythonObjectLibrary getLen) {
493+
@Cached("createReadIntoArg()") BytesNodes.GetByteLengthIfWritableNode getLen) {
493494
checkIsClosedNode.execute(frame, self);
494-
int bufLen = getLen.lengthWithFrame(buffer, frame);
495+
int bufLen = getLen.execute(frame, buffer);
495496
return readintoNode.execute(frame, self, buffer, bufLen, isReadinto1Mode());
496497
}
497498

0 commit comments

Comments
 (0)