os

An operating system
git clone https://erai.gay/code/os/
Log | Files | Refs | README | LICENSE

commit 9bab1cf982e1112a7d12ba6e272ca17a7319923e
parent deeffcab331bb7e1e2fd0d18c92fe3662fc39e69
Author: erai <erai@omiltem.net>
Date:   Wed,  9 Apr 2025 21:01:06 -0400

faster lexer benchmark

Diffstat:
Mcc1.om | 2+-
Mlexer.om | 12++++++------
2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/cc1.om b/cc1.om @@ -2216,7 +2216,7 @@ func main(argc: int, argv: **byte, envp: **byte) { if (i >= argc) { die("invalid -l at end of argument list"); } - dolex(c.a, argv[i]); + dolex(c.a, argv[i], nil); i = i + 1; continue; } diff --git a/lexer.om b/lexer.om @@ -1363,7 +1363,7 @@ func gettok(l: *lex): int { } if l.fill - l.start >= (l.cap >> 1) { - l.cap = l.cap * 2 + 256; + l.cap = l.cap * 2 + 16 * 1024; tmp = alloc(l.a, l.cap); memcpy(tmp, &l.buf[l.start], l.fill - l.start); free(l.a, l.buf); @@ -1425,7 +1425,7 @@ func gettok(l: *lex): int { } } -func dolex(a: *alloc, name: *byte) { +func dolex(a: *alloc, name: *byte, out: *file) { var l: *lex; var fd: int; var tok: int; @@ -1440,10 +1440,10 @@ func dolex(a: *alloc, name: *byte) { if tok == -1 { break; } - fputs(nil, l.tag_to_str(tok)); - fputs(nil, "\t'"); - fputb(nil, &l.buf[l.start], l.end - l.start); - fputs(nil, "'\n"); + fputs(out, l.tag_to_str(tok)); + fputs(out, "\t'"); + fputb(out, &l.buf[l.start], l.end - l.start); + fputs(out, "'\n"); } if !l.eof { die("problem");