Skip to content
This repository was archived by the owner on Feb 14, 2025. It is now read-only.

Commit ef0ba32

Browse files
committed
add always inline to shorter funcs
1 parent a1e3dd9 commit ef0ba32

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

gojo/bufio/bufio.mojo

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ struct Reader[R: io.Reader](Sized, io.Reader, io.ByteReader, io.ByteScanner):
2727
var last_rune_size: Int # size of last rune read for unread_rune; -1 means invalid
2828
var err: Error
2929

30+
@always_inline
3031
fn __init__(
3132
inout self,
3233
owned reader: R,
@@ -47,6 +48,7 @@ struct Reader[R: io.Reader](Sized, io.Reader, io.ByteReader, io.ByteScanner):
4748
self.last_rune_size = last_rune_size
4849
self.err = Error()
4950

51+
@always_inline
5052
fn __moveinit__(inout self, owned existing: Self):
5153
self.buf = InlineList[UInt8, io.BUFFER_SIZE]()
5254
for element in existing.buf:
@@ -60,6 +62,7 @@ struct Reader[R: io.Reader](Sized, io.Reader, io.ByteReader, io.ByteScanner):
6062
self.err = existing.err^
6163

6264
# size returns the size of the underlying buffer in bytes.
65+
@always_inline
6366
fn __len__(self) -> Int:
6467
return len(self.buf)
6568

@@ -85,6 +88,7 @@ struct Reader[R: io.Reader](Sized, io.Reader, io.ByteReader, io.ByteScanner):
8588
"""Returns the internal buffer data as a Span[UInt8]."""
8689
return Span[UInt8, True, __lifetime_of(self)](array=Reference(self.buf._array))
8790

91+
@always_inline
8892
fn reset(inout self, buf: InlineList[UInt8, io.BUFFER_SIZE], owned reader: R):
8993
"""Discards any buffered data, resets all state, and switches
9094
the buffered reader to read from r.
@@ -149,6 +153,7 @@ struct Reader[R: io.Reader](Sized, io.Reader, io.ByteReader, io.ByteScanner):
149153

150154
self.err = Error(io.ERR_NO_PROGRESS)
151155

156+
@always_inline
152157
fn read_error(inout self) -> Error:
153158
if not self.err:
154159
return Error()
@@ -284,6 +289,7 @@ struct Reader[R: io.Reader](Sized, io.Reader, io.ByteReader, io.ByteScanner):
284289
self.last_rune_size = -1
285290
return bytes_read, Error()
286291

292+
@always_inline
287293
fn read_byte(inout self) -> (UInt8, Error):
288294
"""Reads and returns a single byte from the internal buffer. If no byte is available, returns an error."""
289295
self.last_rune_size = -1
@@ -297,6 +303,7 @@ struct Reader[R: io.Reader](Sized, io.Reader, io.ByteReader, io.ByteScanner):
297303
self.last_byte = int(c)
298304
return c, Error()
299305

306+
@always_inline
300307
fn unread_byte(inout self) -> Error:
301308
"""Unreads the last byte. Only the most recently read byte can be unread.
302309
@@ -352,6 +359,7 @@ struct Reader[R: io.Reader](Sized, io.Reader, io.ByteReader, io.ByteScanner):
352359
# self.last_rune_size = -1
353360
# return nil
354361

362+
@always_inline
355363
fn buffered(self) -> Int:
356364
"""Returns the number of bytes that can be read from the current buffer.
357365
@@ -674,6 +682,7 @@ struct Writer[W: io.Writer, size: Int = io.BUFFER_SIZE](Sized, io.Writer, io.Byt
674682
var writer: W
675683
var err: Error
676684

685+
@always_inline
677686
fn __init__(
678687
inout self,
679688
owned writer: W,
@@ -687,6 +696,7 @@ struct Writer[W: io.Writer, size: Int = io.BUFFER_SIZE](Sized, io.Writer, io.Byt
687696
self.writer = writer^
688697
self.err = Error()
689698

699+
@always_inline
690700
fn __moveinit__(inout self, owned existing: Self):
691701
self.buf = InlineList[UInt8, size]()
692702
for element in existing.buf:
@@ -695,6 +705,7 @@ struct Writer[W: io.Writer, size: Int = io.BUFFER_SIZE](Sized, io.Writer, io.Byt
695705
self.writer = existing.writer^
696706
self.err = existing.err^
697707

708+
@always_inline
698709
fn __len__(self) -> Int:
699710
"""Returns the size of the underlying buffer in bytes."""
700711
return len(self.buf)
@@ -704,6 +715,7 @@ struct Writer[W: io.Writer, size: Int = io.BUFFER_SIZE](Sized, io.Writer, io.Byt
704715
"""Returns the internal buffer data as a Span[UInt8]."""
705716
return Span[UInt8, True, __lifetime_of(self)](array=Reference(self.buf._array))
706717

718+
@always_inline
707719
fn reset(inout self, owned writer: W):
708720
"""Discards any unflushed buffered data, clears any error, and
709721
resets b to write its output to w.
@@ -762,10 +774,12 @@ struct Writer[W: io.Writer, size: Int = io.BUFFER_SIZE](Sized, io.Writer, io.Byt
762774
self.bytes_written = 0
763775
return err
764776

777+
@always_inline
765778
fn available(self) -> Int:
766779
"""Returns how many bytes are unused in the buffer."""
767780
return self.buf.capacity - len(self.buf)
768781

782+
@always_inline
769783
fn buffered(self) -> Int:
770784
"""Returns the number of bytes that have been written into the current buffer.
771785
@@ -774,7 +788,6 @@ struct Writer[W: io.Writer, size: Int = io.BUFFER_SIZE](Sized, io.Writer, io.Byt
774788
"""
775789
return self.bytes_written
776790

777-
# TODO: Something broken about multiple writes
778791
fn write(inout self, src: List[UInt8]) -> (Int, Error):
779792
"""Writes the contents of src into the buffer.
780793
It returns the number of bytes written.
@@ -829,6 +842,7 @@ struct Writer[W: io.Writer, size: Int = io.BUFFER_SIZE](Sized, io.Writer, io.Byt
829842
total_bytes_written += n
830843
return total_bytes_written, err
831844

845+
@always_inline
832846
fn write_byte(inout self, src: UInt8) -> (Int, Error):
833847
"""Writes a single byte to the internal buffer.
834848
@@ -875,6 +889,7 @@ struct Writer[W: io.Writer, size: Int = io.BUFFER_SIZE](Sized, io.Writer, io.Byt
875889
# self.bytes_written += size
876890
# return size, nil
877891

892+
@always_inline
878893
fn write_string(inout self, src: String) -> (Int, Error):
879894
"""Writes a string to the internal buffer.
880895
It returns the number of bytes written.

gojo/bufio/scan.mojo

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,13 +93,15 @@ struct Scanner[R: io.Reader]():
9393
"""Returns the internal buffer data as a Span[UInt8]."""
9494
return Span[UInt8, self.is_mutable, self.lifetime](unsafe_ptr=self[].data, len=self[].size)
9595

96+
@always_inline
9697
fn current_token_as_bytes(self) -> List[UInt8]:
9798
"""Returns the most recent token generated by a call to [Scanner.Scan].
9899
The underlying array may point to data that will be overwritten
99100
by a subsequent call to Scan. It does no allocation.
100101
"""
101102
return self.token
102103

104+
@always_inline
103105
fn current_token(self) -> String:
104106
"""Returns the most recent token generated by a call to [Scanner.Scan]
105107
as a newly allocated string holding its bytes."""
@@ -223,6 +225,7 @@ struct Scanner[R: io.Reader]():
223225
self.set_err(Error(io.ERR_NO_PROGRESS))
224226
break
225227

228+
@always_inline
226229
fn set_err(inout self, err: Error):
227230
"""Set the internal error field to the provided error.
228231
@@ -236,6 +239,7 @@ struct Scanner[R: io.Reader]():
236239
else:
237240
self.err = err
238241

242+
@always_inline
239243
fn advance(inout self, n: Int) -> Bool:
240244
"""Consumes n bytes of the buffer. It reports whether the advance was legal.
241245

0 commit comments

Comments
 (0)