| read(ThreadContext, IRubyObject[]) |   | 48% |   | 54% | 10 | 16 | 18 | 43 | 0 | 1 |
| each_codepoint(ThreadContext, Block) |  | 0% |  | 0% | 3 | 3 | 13 | 13 | 1 | 1 |
| ungetbyteCommon(int) |  | 0% |  | 0% | 3 | 3 | 9 | 9 | 1 | 1 |
| getline(ThreadContext, IRubyObject[]) |   | 87% |   | 70% | 11 | 25 | 10 | 63 | 0 | 1 |
| set_string(IRubyObject) |  | 0% |  | 0% | 2 | 2 | 7 | 7 | 1 | 1 |
| puts(ThreadContext, IRubyObject, IRubyObject[]) |   | 65% |   | 50% | 8 | 10 | 9 | 22 | 0 | 1 |
| each(ThreadContext, IRubyObject[], Block) |   | 49% |   | 42% | 4 | 7 | 2 | 8 | 0 | 1 |
| inspectPuts(ThreadContext, IRubyObject, RubyArray) |  | 0% | | n/a | 1 | 1 | 4 | 4 | 1 | 1 |
| lines(ThreadContext, IRubyObject[], Block) |  | 0% |  | 0% | 2 | 2 | 2 | 2 | 1 | 1 |
| makeString(Ruby, ByteList, boolean) |  | 0% |  | 0% | 3 | 3 | 4 | 4 | 1 | 1 |
| codepoints(ThreadContext, Block) |  | 0% |  | 0% | 2 | 2 | 4 | 4 | 1 | 1 |
| each_line(ThreadContext, IRubyObject[], Block) |  | 0% |  | 0% | 2 | 2 | 2 | 2 | 1 | 1 |
| readline(ThreadContext, IRubyObject[]) |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| sysread(ThreadContext, IRubyObject[]) |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| readlines(ThreadContext, IRubyObject[]) |   | 75% |   | 70% | 2 | 6 | 2 | 9 | 0 | 1 |
| open(ThreadContext, IRubyObject, IRubyObject[], Block) |   | 70% |   | 50% | 1 | 2 | 0 | 8 | 0 | 1 |
| printf(ThreadContext, IRubyObject[]) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| strioInit(ThreadContext, IRubyObject[]) |   | 92% |   | 83% | 3 | 11 | 1 | 29 | 0 | 1 |
| chars(ThreadContext, Block) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| seek(ThreadContext, IRubyObject[]) |   | 90% |   | 83% | 2 | 8 | 2 | 17 | 0 | 1 |
| ungetbyte(ThreadContext, IRubyObject) |   | 71% |   | 50% | 2 | 3 | 1 | 7 | 0 | 1 |
| sysread(IRubyObject[]) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| syswrite_nonblock(ThreadContext, IRubyObject[]) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| each_byte(ThreadContext, Block) |   | 87% |   | 75% | 1 | 3 | 0 | 7 | 0 | 1 |
| setEncoding(Encoding) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| makeString(Ruby, ByteList) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| strioSubstr(Ruby, int, int) |   | 88% |   | 67% | 2 | 4 | 0 | 9 | 0 | 1 |
| set_encoding(ThreadContext, IRubyObject) |   | 83% |   | 75% | 1 | 3 | 1 | 7 | 0 | 1 |
| checkFinalized() |   | 50% |   | 50% | 1 | 2 | 1 | 3 | 0 | 1 |
| getEncoding() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| set_encoding(ThreadContext, IRubyObject, IRubyObject) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| set_encoding(ThreadContext, IRubyObject, IRubyObject, IRubyObject) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| ungetbyteCommon(RubyString) |   | 93% |   | 67% | 2 | 4 | 1 | 13 | 0 | 1 |
| read_nonblock(ThreadContext, IRubyObject[]) |   | 71% |   | 50% | 1 | 2 | 1 | 4 | 0 | 1 |
| string(ThreadContext) |   | 73% |   | 50% | 1 | 2 | 0 | 2 | 0 | 1 |
| strioNil(ThreadContext) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| initialize_copy(ThreadContext, IRubyObject) |  | 95% |   | 50% | 1 | 2 | 0 | 8 | 0 | 1 |
| write(ThreadContext, IRubyObject) |  | 100% |  | 100% | 0 | 7 | 0 | 22 | 0 | 1 |
| bm_search(byte[], int, int, byte[], int, int, int[]) |  | 100% |  | 100% | 0 | 5 | 0 | 10 | 0 | 1 |
| strioExtend(int, int) |  | 100% |  | 100% | 0 | 3 | 0 | 12 | 0 | 1 |
| truncate(IRubyObject) |  | 100% |  | 100% | 0 | 3 | 0 | 10 | 0 | 1 |
| getc(ThreadContext) |  | 100% |  | 100% | 0 | 2 | 0 | 6 | 0 | 1 |
| putc(ThreadContext, IRubyObject) |  | 100% |  | 100% | 0 | 2 | 0 | 9 | 0 | 1 |
| getbyte(ThreadContext) |  | 100% |  | 100% | 0 | 2 | 0 | 4 | 0 | 1 |
| createStringIOClass(Ruby) |  | 100% |   | 50% | 1 | 2 | 0 | 7 | 0 | 1 |
| each_char(ThreadContext, Block) |  | 100% |  | 100% | 0 | 3 | 0 | 4 | 0 | 1 |
| reopen(ThreadContext, IRubyObject[]) |  | 100% |   | 75% | 1 | 3 | 0 | 5 | 0 | 1 |
| bm_init_skip(int[], byte[], int, int) |  | 100% |  | 100% | 0 | 3 | 0 | 5 | 0 | 1 |
| eof(ThreadContext) |  | 100% |  | 100% | 0 | 2 | 0 | 4 | 0 | 1 |
| set_pos(IRubyObject) |  | 100% |  | 100% | 0 | 2 | 0 | 5 | 0 | 1 |
| readable() |  | 100% |   | 75% | 1 | 3 | 0 | 1 | 0 | 1 |
| writable() |  | 100% |   | 75% | 1 | 3 | 0 | 1 | 0 | 1 |
| closed() |  | 100% |   | 75% | 1 | 3 | 0 | 1 | 0 | 1 |
| initialize(ThreadContext, IRubyObject[]) |  | 100% |   | 50% | 1 | 2 | 0 | 4 | 0 | 1 |
| readchar(ThreadContext) |  | 100% |  | 100% | 0 | 2 | 0 | 3 | 0 | 1 |
| readbyte(ThreadContext) |  | 100% |  | 100% | 0 | 2 | 0 | 3 | 0 | 1 |
| rewind(ThreadContext) |  | 100% | | n/a | 0 | 1 | 0 | 4 | 0 | 1 |
| close(ThreadContext) |  | 100% | | n/a | 0 | 1 | 0 | 4 | 0 | 1 |
| gets(ThreadContext, IRubyObject[]) |  | 100% | | n/a | 0 | 1 | 0 | 4 | 0 | 1 |
| checkModifiable() |  | 100% |  | 100% | 0 | 2 | 0 | 3 | 0 | 1 |
| closed_read_p() |  | 100% |  | 100% | 0 | 2 | 0 | 2 | 0 | 1 |
| closed_write_p() |  | 100% |  | 100% | 0 | 2 | 0 | 2 | 0 | 1 |
| isEndOfString() |  | 100% |  | 100% | 0 | 2 | 0 | 1 | 0 | 1 |
| length() |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
| close_read(ThreadContext) |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
| close_write(ThreadContext) |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
| checkReadable() |  | 100% |  | 100% | 0 | 2 | 0 | 4 | 0 | 1 |
| checkWritable() |  | 100% |  | 100% | 0 | 2 | 0 | 4 | 0 | 1 |
| pos(ThreadContext) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| external_encoding(ThreadContext) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| checkInitialized() |  | 100% |  | 100% | 0 | 2 | 0 | 3 | 0 | 1 |
| checkOpen() |  | 100% |  | 100% | 0 | 2 | 0 | 3 | 0 | 1 |
| append(ThreadContext, IRubyObject) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| closed_p() |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| set_lineno(ThreadContext, IRubyObject) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| static {...} |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| lineno(ThreadContext) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| puts(ThreadContext, IRubyObject[]) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| ungetc(ThreadContext, IRubyObject) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| sync(ThreadContext) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| StringIO(Ruby, RubyClass) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| strio_unimpl(ThreadContext, IRubyObject[]) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| print(ThreadContext, IRubyObject[]) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| syswrite(ThreadContext, IRubyObject) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| checkFrozen() |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
| strioZero(ThreadContext) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| strioFirst(IRubyObject) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| strioFalse(ThreadContext) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| internal_encoding(ThreadContext) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| strio_self() | | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |