| popen(ThreadContext, IRubyObject, IRubyObject[], Block) |   | 6% |   | 8% | 14 | 15 | 44 | 47 | 0 | 1 |
| eachCodePointCommon(ThreadContext, Block, String) |   | 36% |   | 34% | 14 | 17 | 18 | 43 | 0 | 1 |
| updateIOOptionsFromOptions(ThreadContext, RubyHash, IOOptions) |  | 0% |  | 0% | 15 | 15 | 26 | 26 | 1 | 1 |
| reopen(ThreadContext, IRubyObject[]) |   | 59% |   | 50% | 16 | 23 | 15 | 56 | 0 | 1 |
| copy_stream(ThreadContext, IRubyObject, IRubyObject[]) |   | 70% |   | 71% | 11 | 27 | 15 | 74 | 0 | 1 |
| popen3_19(ThreadContext, IRubyObject, IRubyObject[], Block) |  | 0% |  | 0% | 4 | 4 | 16 | 16 | 1 | 1 |
| write19(ThreadContext, IRubyObject, IRubyObject, IRubyObject, IRubyObject, RubyHash) |  | 0% |  | 0% | 7 | 7 | 17 | 17 | 1 | 1 |
| reopenIO(ThreadContext, RubyIO) |   | 63% |   | 47% | 25 | 32 | 13 | 54 | 0 | 1 |
| setupPopen(ModeFlags, ShellLauncher.POpenProcess) |  | 0% |  | 0% | 6 | 6 | 20 | 20 | 1 | 1 |
| popenSpecial(ThreadContext, IRubyObject[]) |  | 0% |  | 0% | 4 | 4 | 20 | 20 | 1 | 1 |
| transfer(ThreadContext, ReadableByteChannel, FileChannel, long, long) |  | 0% |  | 0% | 7 | 7 | 16 | 16 | 1 | 1 |
| popen4(ThreadContext, IRubyObject, IRubyObject[], Block) |  | 0% |  | 0% | 2 | 2 | 11 | 11 | 1 | 1 |
| rbIoClose(Ruby) |   | 53% |   | 30% | 14 | 16 | 9 | 27 | 0 | 1 |
| RubyIO(Ruby, STDIO) |  | 0% |  | 0% | 4 | 4 | 11 | 11 | 1 | 1 |
| pipe19(ThreadContext, IRubyObject, IRubyObject[], Block) |   | 77% |   | 43% | 10 | 16 | 9 | 48 | 0 | 1 |
| ioWriteNonblock(ThreadContext, Ruby, IRubyObject, boolean) |   | 53% |   | 28% | 8 | 10 | 6 | 21 | 0 | 1 |
| checkValidOptions(IRubyObject, Set) |  | 0% |  | 0% | 9 | 9 | 8 | 8 | 1 | 1 |
| close_read(ThreadContext) |   | 66% |   | 41% | 9 | 12 | 8 | 31 | 0 | 1 |
| close_write(ThreadContext) |   | 57% |   | 40% | 8 | 11 | 8 | 24 | 0 | 1 |
| adviceArgCheck(ThreadContext, IRubyObject) |   | 33% |   | 13% | 14 | 15 | 2 | 6 | 0 | 1 |
| advise(ThreadContext, IRubyObject[]) |   | 32% |   | 8% | 7 | 8 | 8 | 13 | 0 | 1 |
| checkUnsupportedOptions(IRubyObject, Set, String) |  | 0% |  | 0% | 6 | 6 | 8 | 8 | 1 | 1 |
| transfer(FileChannel, WritableByteChannel, long, long) |  | 0% |  | 0% | 4 | 4 | 13 | 13 | 1 | 1 |
| getPartial(ThreadContext, IRubyObject[], boolean, boolean) |   | 82% |   | 69% | 13 | 26 | 7 | 49 | 0 | 1 |
| puts3(ThreadContext, IRubyObject, IRubyObject, IRubyObject, IRubyObject) |  | 0% |  | 0% | 3 | 3 | 7 | 7 | 1 | 1 |
| ctl(Ruby, IRubyObject, IRubyObject) |   | 68% |   | 50% | 10 | 14 | 7 | 23 | 0 | 1 |
| ioStaticWrite(ThreadContext, IRubyObject, IRubyObject[], boolean) |   | 77% |   | 71% | 6 | 14 | 6 | 31 | 0 | 1 |
| obliterateProcess(Process) |  | 0% |  | 0% | 2 | 2 | 14 | 14 | 1 | 1 |
| RubyIO(Ruby, OutputStream, boolean) |  | 0% |  | 0% | 2 | 2 | 8 | 8 | 1 | 1 |
| ungetc(ThreadContext, IRubyObject) |   | 80% |   | 50% | 8 | 10 | 3 | 28 | 0 | 1 |
| RubyIO(Ruby, RubyClass, Channel) |  | 0% |  | 0% | 2 | 2 | 6 | 6 | 1 | 1 |
| parseIOOptions(IRubyObject) |  | 0% |  | 0% | 2 | 2 | 6 | 6 | 1 | 1 |
| puts2(ThreadContext, IRubyObject, IRubyObject, IRubyObject) |  | 0% |  | 0% | 3 | 3 | 6 | 6 | 1 | 1 |
| RubyIO(Ruby, InputStream) |  | 0% |  | 0% | 2 | 2 | 7 | 7 | 1 | 1 |
| prepareGetsSeparator(ThreadContext, IRubyObject[]) |   | 22% |   | 25% | 3 | 4 | 3 | 5 | 0 | 1 |
| prepareGetsLimit(ThreadContext, IRubyObject[]) |   | 22% |   | 25% | 3 | 4 | 3 | 5 | 0 | 1 |
| putc(ThreadContext, IRubyObject, IRubyObject) |  | 0% |  | 0% | 2 | 2 | 6 | 6 | 1 | 1 |
| initializeCommon(ThreadContext, ChannelFD, IRubyObject, IRubyObject) |   | 84% |   | 62% | 11 | 18 | 8 | 35 | 0 | 1 |
| initialize_copy(IRubyObject) |   | 78% |   | 39% | 9 | 10 | 4 | 31 | 0 | 1 |
| initializeCommon(ThreadContext, int, IRubyObject, IRubyObject) |   | 46% |   | 38% | 4 | 5 | 5 | 11 | 0 | 1 |
| cleanupPOpen(RubyIO.POpenTuple) |  | 0% |  | 0% | 4 | 4 | 7 | 7 | 1 | 1 |
| getlineInner(ThreadContext, IRubyObject, int, RubyIO.ByteListCache) |   | 94% |   | 82% | 12 | 37 | 1 | 87 | 0 | 1 |
| rewind(ThreadContext) |   | 59% |   | 33% | 6 | 7 | 3 | 13 | 0 | 1 |
| prepStdioEcflags(OpenFile, int) |   | 42% |   | 25% | 4 | 5 | 3 | 8 | 0 | 1 |
| binread(ThreadContext, IRubyObject, IRubyObject[]) |   | 67% |   | 50% | 3 | 4 | 4 | 15 | 0 | 1 |
| read(IRubyObject[]) |   | 31% |   | 25% | 3 | 4 | 3 | 6 | 0 | 1 |
| ioctl(ThreadContext, IRubyObject[]) |  | 0% |  | 0% | 2 | 2 | 5 | 5 | 1 | 1 |
| RubyIO(Ruby, ShellLauncher.POpenProcess, IOOptions) |  | 0% | | n/a | 1 | 1 | 5 | 5 | 1 | 1 |
| RubyIO(Ruby, RubyClass, ShellLauncher.POpenProcess, RubyHash, IOOptions) |  | 0% | | n/a | 1 | 1 | 5 | 5 | 1 | 1 |
| stat(ThreadContext) |   | 62% |   | 30% | 5 | 6 | 1 | 8 | 0 | 1 |
| newInstance(ThreadContext, IRubyObject, IRubyObject[], Block) |   | 38% |   | 50% | 1 | 2 | 2 | 5 | 0 | 1 |
| fsync(ThreadContext) |  | 0% |  | 0% | 2 | 2 | 6 | 6 | 1 | 1 |
| read19(ThreadContext, IRubyObject, IRubyObject[], Block) |   | 86% |   | 81% | 3 | 9 | 2 | 27 | 0 | 1 |
| ungetbyte(ThreadContext, IRubyObject) |   | 69% |   | 30% | 5 | 6 | 1 | 12 | 0 | 1 |
| seek(ThreadContext, IRubyObject[]) |  | 0% |  | 0% | 2 | 2 | 4 | 4 | 1 | 1 |
| sysseek(ThreadContext, IRubyObject[]) |   | 82% |   | 48% | 9 | 12 | 1 | 20 | 0 | 1 |
| syswrite(ThreadContext, IRubyObject) |   | 76% |   | 50% | 4 | 6 | 1 | 15 | 0 | 1 |
| pos(ThreadContext) |   | 64% |   | 38% | 3 | 5 | 0 | 7 | 0 | 1 |
| pos_set(ThreadContext, IRubyObject) |   | 62% |   | 25% | 4 | 5 | 0 | 7 | 0 | 1 |
| newIOOptions(Ruby, String) |  | 0% | | n/a | 1 | 1 | 3 | 3 | 1 | 1 |
| newModeFlags(Ruby, String) |  | 0% | | n/a | 1 | 1 | 3 | 3 | 1 | 1 |
| newIOOptions(Ruby, IOOptions, int) |  | 0% | | n/a | 1 | 1 | 3 | 3 | 1 | 1 |
| checkExecEnv(ThreadContext, RubyHash) |   | 79% |   | 60% | 4 | 6 | 2 | 16 | 0 | 1 |
| doReadNonblock(ThreadContext, IRubyObject[], boolean) |   | 66% |   | 50% | 4 | 6 | 2 | 11 | 0 | 1 |
| newIOOptions(Ruby, int) |  | 0% | | n/a | 1 | 1 | 4 | 4 | 1 | 1 |
| inspect() |   | 80% |   | 38% | 4 | 5 | 4 | 14 | 0 | 1 |
| flushRaw(ThreadContext, boolean) |   | 70% |   | 70% | 2 | 6 | 1 | 10 | 0 | 1 |
| rb_io_fptr_finalize(Ruby, OpenFile) |   | 62% |   | 50% | 4 | 5 | 3 | 11 | 0 | 1 |
| readline(ThreadContext, IRubyObject) |  | 0% |  | 0% | 2 | 2 | 4 | 4 | 1 | 1 |
| readline(ThreadContext, IRubyObject[]) |  | 0% |  | 0% | 2 | 2 | 1 | 1 | 1 | 1 |
| setEncoding(ThreadContext, IRubyObject, IRubyObject, IRubyObject) |   | 94% |   | 83% | 2 | 10 | 2 | 40 | 0 | 1 |
| transfer(ThreadContext, ReadableByteChannel, WritableByteChannel, long, long) |   | 87% |   | 83% | 3 | 10 | 1 | 23 | 0 | 1 |
| sysopen(Ruby, String, int, int) |   | 76% |   | 60% | 4 | 6 | 4 | 15 | 0 | 1 |
| setBinmode() |   | 70% |   | 40% | 5 | 6 | 2 | 12 | 0 | 1 |
| restartSystemCall(Exception) |  | 0% |  | 0% | 3 | 3 | 1 | 1 | 1 | 1 |
| print(ThreadContext, IRubyObject, IRubyObject[]) |   | 82% |   | 83% | 2 | 7 | 3 | 15 | 0 | 1 |
| tty_p(ThreadContext) |   | 75% |   | 67% | 2 | 4 | 1 | 9 | 0 | 1 |
| failIfDirectory(Ruby, RubyString) |   | 33% |   | 25% | 2 | 3 | 3 | 5 | 0 | 1 |
| sysread(ThreadContext, IRubyObject[]) |   | 91% |   | 67% | 6 | 10 | 1 | 24 | 0 | 1 |
| getBlocking() |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| pipe19(ThreadContext, IRubyObject, IRubyObject) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| isClosed() |   | 64% |   | 38% | 3 | 5 | 3 | 8 | 0 | 1 |
| initialize(ThreadContext, IRubyObject, IRubyObject, IRubyObject, Block) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| getline(Ruby, ByteList) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getline(Ruby, ByteList, long) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getline(ThreadContext, ByteList) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getline(ThreadContext, ByteList, long) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| putsArray(ThreadContext, IRubyObject, IRubyObject[]) |   | 76% |   | 50% | 2 | 4 | 0 | 6 | 0 | 1 |
| puts1(ThreadContext, IRubyObject, IRubyObject) |   | 68% |   | 25% | 2 | 3 | 0 | 5 | 0 | 1 |
| writeSeparator(ThreadContext, IRubyObject) |   | 67% |   | 25% | 2 | 3 | 0 | 5 | 0 | 1 |
| write(ThreadContext, ByteList) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| gets(ThreadContext, IRubyObject[]) |   | 75% |   | 75% | 1 | 4 | 2 | 6 | 0 | 1 |
| ensureYieldClosePipes(ThreadContext, IRubyObject, RubyIO, RubyIO, Block) |   | 60% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| sysopen(IRubyObject, IRubyObject[], Block) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| checkExecOptions(IRubyObject) |  | 0% | | n/a | 1 | 1 | 3 | 3 | 1 | 1 |
| checkSpawnOptions(IRubyObject) |  | 0% | | n/a | 1 | 1 | 3 | 3 | 1 | 1 |
| getIOModesIntFromString(Ruby, String) |  | 0% | | n/a | 1 | 1 | 3 | 3 | 1 | 1 |
| eof_p(ThreadContext) |   | 90% |   | 62% | 5 | 9 | 0 | 11 | 0 | 1 |
| getByte(ThreadContext) |   | 89% |   | 50% | 3 | 5 | 0 | 10 | 0 | 1 |
| each_charInternal(ThreadContext, Block) |   | 88% |   | 62% | 2 | 5 | 0 | 11 | 0 | 1 |
| ioClose(Ruby, IRubyObject) |   | 82% |   | 83% | 1 | 4 | 2 | 10 | 0 | 1 |
| inspectPuts(ThreadContext, IRubyObject, RubyArray) |   | 70% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
| pipePairClose(Ruby, RubyIO, RubyIO) |   | 59% | | n/a | 0 | 1 | 0 | 4 | 0 | 1 |
| RubyIO(Ruby, Channel) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| op_binmode(ThreadContext) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lineno(ThreadContext) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| puts(ThreadContext, IRubyObject, IRubyObject, IRubyObject) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| interruptBlockingThreads() |  | 0% |  | 0% | 2 | 2 | 2 | 2 | 1 | 1 |
| getline(ThreadContext, IRubyObject, RubyIO.ByteListCache) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| write(ThreadContext, IRubyObject, boolean) |   | 93% |   | 70% | 3 | 6 | 1 | 17 | 0 | 1 |
| each_byteInternal(ThreadContext, Block) |   | 93% |   | 70% | 3 | 6 | 0 | 16 | 0 | 1 |
| processReadlinesMethodArguments(IRubyObject[]) |   | 92% |   | 75% | 3 | 9 | 0 | 9 | 0 | 1 |
| readlinesCommon19(ThreadContext, RubyIO, IRubyObject[]) |   | 67% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| RubyIO(Ruby, OutputStream) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| newIO(Ruby, Channel) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getInputEncoding() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| puts(ThreadContext, IRubyObject, IRubyObject) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getc() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| readchar() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| read(ThreadContext, IRubyObject, IRubyObject[]) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| readlines(ThreadContext, IRubyObject, IRubyObject[], Block) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| pipe19(ThreadContext, IRubyObject) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| setEnc2(Encoding) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| setEnc(Encoding) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| setEcflags(int) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| setEcopts(IRubyObject) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| popen3(ThreadContext, IRubyObject, IRubyObject[], Block) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| select_static(ThreadContext, Ruby, IRubyObject[]) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| select(ThreadContext, IRubyObject, IRubyObject[]) |   | 92% |   | 56% | 4 | 7 | 0 | 13 | 0 | 1 |
| sync(ThreadContext) |   | 84% |  | 100% | 0 | 2 | 0 | 6 | 0 | 1 |
| getEnc() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getEnc2() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| close_on_exec_set(ThreadContext, IRubyObject) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| checkPopenOptions(IRubyObject) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| newModeFlags(Ruby, long) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| newIOOptions(Ruby, ModeFlags) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| newIOOptions(Ruby, long) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getEcflags() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getEcopts() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| setBOM(boolean) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| lines19(ThreadContext, Block) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| each_char19(ThreadContext, Block) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| chars19(ThreadContext, Block) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| readlines19(ThreadContext, IRubyObject[]) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| writeStatic(ThreadContext, IRubyObject, IRubyObject[], Block) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| doWriteNonblock(ThreadContext, IRubyObject[], boolean) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| ioOpen(ThreadContext, IRubyObject, IRubyObject, IRubyObject, IRubyObject) |   | 96% |   | 70% | 3 | 6 | 1 | 11 | 0 | 1 |
| sysopen19(ThreadContext, IRubyObject, IRubyObject[], Block) |   | 95% |   | 80% | 2 | 7 | 1 | 19 | 0 | 1 |
| putsSingle(ThreadContext, Ruby, IRubyObject, IRubyObject, RubyString) |   | 92% |   | 90% | 1 | 6 | 1 | 12 | 0 | 1 |
| newModeFlags(Ruby, int) |   | 60% | | n/a | 0 | 1 | 2 | 3 | 0 | 1 |
| puts(ThreadContext) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| puts0(ThreadContext, IRubyObject) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| toString() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| pipe(ThreadContext, IRubyObject) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getBOM() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getIOModes(Ruby, String) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| binmode() |  | 79% |   | 50% | 1 | 2 | 1 | 5 | 0 | 1 |
| static {...} |  | 99% |   | 50% | 2 | 3 | 0 | 10 | 0 | 1 |
| foreachInternal19(ThreadContext, IRubyObject, IRubyObject[], Block) |  | 97% |   | 75% | 1 | 3 | 0 | 11 | 0 | 1 |
| readlines19(ThreadContext, IRubyObject, IRubyObject[], Block) |  | 93% |   | 50% | 1 | 2 | 0 | 6 | 0 | 1 |
| getNativeClassIndex() | | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getNilByteList(Ruby) | | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| read(ThreadContext, IRubyObject, IRubyObject) |  | 100% |   | 72% | 5 | 10 | 0 | 24 | 0 | 1 |
| prepareGetsSeparator(ThreadContext, IRubyObject, IRubyObject) |  | 100% |   | 96% | 1 | 14 | 0 | 22 | 0 | 1 |
| openKeyArgs(ThreadContext, IRubyObject, IRubyObject[], IRubyObject) |  | 100% |  | 100% | 0 | 3 | 0 | 14 | 0 | 1 |
| createIOClass(Ruby) |  | 100% | | n/a | 0 | 1 | 0 | 12 | 0 | 1 |
| write_nonblock(ThreadContext, IRubyObject[]) |  | 100% |   | 83% | 1 | 4 | 0 | 10 | 0 | 1 |
| doSeek(ThreadContext, IRubyObject, int) |  | 100% |   | 62% | 3 | 5 | 0 | 7 | 0 | 1 |
| each_lineInternal(ThreadContext, IRubyObject[], Block, String) |  | 100% |  | 100% | 0 | 3 | 0 | 8 | 0 | 1 |
| prepareGetsLimit(ThreadContext, IRubyObject, IRubyObject) |  | 100% |   | 93% | 1 | 8 | 0 | 9 | 0 | 1 |
| external_encoding(ThreadContext) |  | 100% |  | 100% | 0 | 4 | 0 | 5 | 0 | 1 |
| cloexecOpen(Ruby, RubyIO.Sysopen) |  | 100% |  | 100% | 0 | 2 | 0 | 7 | 0 | 1 |
| getc19(ThreadContext) |  | 100% |   | 50% | 2 | 3 | 0 | 8 | 0 | 1 |
| readlinesCommon(ThreadContext, IRubyObject[]) |  | 100% |  | 100% | 0 | 2 | 0 | 7 | 0 | 1 |
| MakeOpenFile() |  | 100% |  | 100% | 0 | 2 | 0 | 8 | 0 | 1 |
| putc(ThreadContext, IRubyObject) |  | 100% |  | 100% | 0 | 2 | 0 | 6 | 0 | 1 |
| initialize(ThreadContext, IRubyObject, IRubyObject, Block) |  | 100% |  | 100% | 0 | 2 | 0 | 8 | 0 | 1 |
| gets(ThreadContext, IRubyObject) |  | 100% |  | 100% | 0 | 2 | 0 | 5 | 0 | 1 |
| gets(ThreadContext, IRubyObject, IRubyObject) |  | 100% |  | 100% | 0 | 2 | 0 | 5 | 0 | 1 |
| set_encoding(ThreadContext, IRubyObject, IRubyObject) |  | 100% |  | 100% | 0 | 2 | 0 | 5 | 0 | 1 |
| ensureYieldClose(ThreadContext, IRubyObject, Block) |  | 100% |  | 100% | 0 | 2 | 0 | 5 | 0 | 1 |
| interpretSeekWhence(IRubyObject) |  | 100% |   | 88% | 1 | 5 | 0 | 8 | 0 | 1 |
| prepStdio(Ruby, InputStream, Channel, int, RubyClass, String) |  | 100% | | n/a | 0 | 1 | 0 | 5 | 0 | 1 |
| prepStdio(Ruby, OutputStream, Channel, int, RubyClass, String) |  | 100% | | n/a | 0 | 1 | 0 | 5 | 0 | 1 |
| prepIO(Ruby, Channel, int, RubyClass, String) |  | 100% |   | 50% | 1 | 2 | 0 | 7 | 0 | 1 |
| gets(ThreadContext) |  | 100% |  | 100% | 0 | 2 | 0 | 4 | 0 | 1 |
| pid(ThreadContext) |  | 100% |  | 100% | 0 | 2 | 0 | 5 | 0 | 1 |
| getbyte(ThreadContext) |  | 100% |  | 100% | 0 | 2 | 0 | 3 | 0 | 1 |
| readpartial(ThreadContext, IRubyObject[]) |  | 100% |  | 100% | 0 | 2 | 0 | 4 | 0 | 1 |
| foreach(ThreadContext, IRubyObject, IRubyObject[], Block) |  | 100% |  | 100% | 0 | 2 | 0 | 2 | 0 | 1 |
| internal_encoding(ThreadContext) |  | 100% |  | 100% | 0 | 2 | 0 | 2 | 0 | 1 |
| each_byte(ThreadContext, Block) |  | 100% |  | 100% | 0 | 2 | 0 | 1 | 0 | 1 |
| readline(ThreadContext) |  | 100% |  | 100% | 0 | 2 | 0 | 4 | 0 | 1 |
| readchar(ThreadContext) |  | 100% |  | 100% | 0 | 2 | 0 | 4 | 0 | 1 |
| readbyte(ThreadContext) |  | 100% |  | 100% | 0 | 2 | 0 | 4 | 0 | 1 |
| open(ThreadContext, IRubyObject, IRubyObject[], Block) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| GetWriteIO() |  | 100% |  | 100% | 0 | 2 | 0 | 5 | 0 | 1 |
| lineno_set(ThreadContext, IRubyObject) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| sync_set(IRubyObject) |  | 100% | | n/a | 0 | 1 | 0 | 4 | 0 | 1 |
| puts(ThreadContext, IRubyObject, IRubyObject[]) |  | 100% |  | 100% | 0 | 2 | 0 | 3 | 0 | 1 |
| lines(ThreadContext, Block) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| tryConvert(ThreadContext, IRubyObject, IRubyObject) |  | 100% |  | 100% | 0 | 2 | 0 | 1 | 0 | 1 |
| set_encoding(ThreadContext, IRubyObject) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| printf(ThreadContext, IRubyObject[]) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| codepoints(ThreadContext, Block) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| addBlockingThread(RubyThread) |  | 100% |   | 50% | 1 | 2 | 0 | 3 | 0 | 1 |
| checkReopenCloexecDup2(Ruby, OpenFile, ChannelFD, ChannelFD) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| close() |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
| bytes(ThreadContext, Block) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| chars(ThreadContext, Block) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| for_fd(ThreadContext, IRubyObject, IRubyObject[], Block) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| initialize(ThreadContext, IRubyObject, Block) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| set_encoding(ThreadContext, IRubyObject, IRubyObject, IRubyObject) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| checkInitialized() |  | 100% |  | 100% | 0 | 2 | 0 | 3 | 0 | 1 |
| seek(ThreadContext, IRubyObject, IRubyObject) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| write(ThreadContext, IRubyObject, ByteList) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| setAscii8bitBinmode() |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
| getline(ThreadContext, IRubyObject, long, RubyIO.ByteListCache) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| op_append(ThreadContext, IRubyObject) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| seek(ThreadContext, IRubyObject) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| read(ThreadContext) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| seekBeforeAccess(ThreadContext, RubyIO, IRubyObject, int) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| removeBlockingThread(RubyThread) |  | 100% |   | 50% | 1 | 2 | 0 | 2 | 0 | 1 |
| getline(ThreadContext, IRubyObject) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| getline(ThreadContext, IRubyObject, long) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| setAutoclose(boolean) |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
| autoclose_set(ThreadContext, IRubyObject) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| fileno(ThreadContext) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| fcntl(ThreadContext, IRubyObject) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| fcntl(ThreadContext, IRubyObject, IRubyObject) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| read(ThreadContext, IRubyObject) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| each(ThreadContext, IRubyObject[], Block) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| each_line(ThreadContext, IRubyObject[], Block) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| getOpenFileChecked() |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| getReadEncoding() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| sysopenInternal(Ruby, RubyIO.Sysopen) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| isAutoclose() |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| autoclose(ThreadContext) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| write(ThreadContext, IRubyObject) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| closed_p(ThreadContext) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| write(ThreadContext, IRubyObject, IRubyObject) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| read_nonblock(ThreadContext, IRubyObject[]) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| each_codepoint(ThreadContext, Block) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| binwrite(ThreadContext, IRubyObject, IRubyObject[]) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| write(ThreadContext, IRubyObject, IRubyObject[]) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| RubyIO(Ruby, RubyClass) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| getOutStream() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| getInStream() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| print(ThreadContext, IRubyObject[]) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| close_on_exec_p(ThreadContext) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| flush(ThreadContext) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| puts(ThreadContext, IRubyObject) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| puts(ThreadContext, IRubyObject[]) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| each_char(ThreadContext, Block) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| readlines(ThreadContext, IRubyObject[]) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| convertToIO(ThreadContext, IRubyObject) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| recheckTTY(Ruby, OpenFile, RubyIO) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| getChannel() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| sysopenFunc(Ruby, RubyIO.Sysopen) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| getOpenFile() | | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| to_io() | | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |