os

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

commit 2067af3f3ad42ab1a0991c2bd4fb003067bb1381
parent d99a2581b3ced3946c830c64a5369d12de707ecd
Author: erai <erai@omiltem.net>
Date:   Sun,  9 Feb 2025 00:51:29 +0000

increase buffer to 64k

Diffstat:
Mas.om | 1+
Mbufio.om | 5+++--
Mcc0.c | 167+++++++++++++++++++++++++++++++++++++++++++++----------------------------------
Mcc1.om | 5+++++
Mcloc.sh | 12+-----------
5 files changed, 105 insertions(+), 85 deletions(-)

diff --git a/as.om b/as.om @@ -296,6 +296,7 @@ func open_output(c: *assembler, filename: *byte) { } c.out = fopen(fd, c.a); + c.out.noflush = 1; } // Create a new label diff --git a/bufio.om b/bufio.om @@ -6,6 +6,7 @@ struct file { w: int; cap: int; eof: int; + noflush: int; } func fopen(fd: int, a: *alloc): *file { @@ -17,7 +18,7 @@ func fopen(fd: int, a: *alloc): *file { f.a = a; f.r = 0; f.w = 0; - f.cap = 4096; + f.cap = 4096 * 16; f.eof = 0; f.buf = alloc(a, f.cap); @@ -104,7 +105,7 @@ func fputc(f: *file, ch: int): void { f.buf[f.w] = ch as byte; f.w = f.w + 1; - if (ch == '\n') { + if (ch == '\n' && !f.noflush) { fflush(f); } } diff --git a/cc0.c b/cc0.c @@ -2820,6 +2820,9 @@ u zcompile(u vc, u vp) { u v153 = 0; u v154 = 0; u v155 = 0; + u v156 = 0; + u v157 = 0; + u v158 = 0; b0: vn = vp; goto b1; b1: if (!(vn)) { goto b7; } @@ -2947,74 +2950,77 @@ b118: v121 = (u)zmark_func_used; b109: v126 = (u)zcheck_usage; v127 = vc; v128 = ((u (*)())(v126))(v127); -b125: v129 = (u)zfirst_decl; - v130 = vc; +b125: v129 = (u)zfflush; + v130 = *(u *)((vc) + (80UL)); v131 = ((u (*)())(v129))(v130); -b126: vd = v131; - goto b127; -b127: if (!(vd)) { goto b133; } -b132: v132 = 0UL; - goto b134; -b134: if (!(v132)) { goto b129; } -b128: v142 = (u)zfirst_decl; - v143 = vc; - v144 = ((u (*)())(v142))(v143); +b126: v132 = (u)zfirst_decl; + v133 = vc; + v134 = ((u (*)())(v132))(v133); +b127: vd = v134; + goto b128; +b128: if (!(vd)) { goto b134; } +b133: v135 = 0UL; + goto b135; +b135: if (!(v135)) { goto b130; } +b129: v145 = (u)zfirst_decl; + v146 = vc; + v147 = ((u (*)())(v145))(v146); +b149: vd = v147; + goto b150; +b150: if (!(vd)) { goto b156; } +b155: v148 = 0UL; + goto b157; +b157: if (!(v148)) { goto b152; } +b151: return 0UL; +b152: if (!(*(u *)((vd) + (96UL)))) { goto b162; } +b161: if (!(*(u *)((vd) + (72UL)))) { goto b166; } +b165: if (!(*(u *)((vd) + (104UL)))) { goto b166; } +b167: v150 = 1UL; + goto b168; +b168: if (!(v150)) { goto b162; } +b163: v149 = 1UL; + goto b164; +b164: if (!(v149)) { goto b158; } +b159: v151 = (u)zoutput_ir; + v152 = vc; + v153 = vd; + v154 = ((u (*)())(v151))(v152, v153); +b158: v155 = (u)znext_decl; + v156 = vc; + v157 = vd; + v158 = ((u (*)())(v155))(v156, v157); +b170: vd = v158; + goto b150; +b162: v149 = 0UL; + goto b164; +b166: v150 = 0UL; + goto b168; +b156: v148 = 1UL; + goto b157; +b130: if (!(*(u *)((vd) + (96UL)))) { goto b140; } +b139: if (!(*(u *)((vd) + (72UL)))) { goto b144; } +b143: if (!(*(u *)((vd) + (104UL)))) { goto b144; } +b145: v137 = 1UL; + goto b146; +b146: if (!(v137)) { goto b140; } +b141: v136 = 1UL; + goto b142; +b142: if (!(v136)) { goto b136; } +b137: v138 = (u)zir_optimize; + v139 = *(u *)((vd) + (104UL)); + v140 = ((u (*)())(v138))(v139); +b136: v141 = (u)znext_decl; + v142 = vc; + v143 = vd; + v144 = ((u (*)())(v141))(v142, v143); b148: vd = v144; - goto b149; -b149: if (!(vd)) { goto b155; } -b154: v145 = 0UL; - goto b156; -b156: if (!(v145)) { goto b151; } -b150: return 0UL; -b151: if (!(*(u *)((vd) + (96UL)))) { goto b161; } -b160: if (!(*(u *)((vd) + (72UL)))) { goto b165; } -b164: if (!(*(u *)((vd) + (104UL)))) { goto b165; } -b166: v147 = 1UL; - goto b167; -b167: if (!(v147)) { goto b161; } -b162: v146 = 1UL; - goto b163; -b163: if (!(v146)) { goto b157; } -b158: v148 = (u)zoutput_ir; - v149 = vc; - v150 = vd; - v151 = ((u (*)())(v148))(v149, v150); -b157: v152 = (u)znext_decl; - v153 = vc; - v154 = vd; - v155 = ((u (*)())(v152))(v153, v154); -b169: vd = v155; - goto b149; -b161: v146 = 0UL; - goto b163; -b165: v147 = 0UL; - goto b167; -b155: v145 = 1UL; - goto b156; -b129: if (!(*(u *)((vd) + (96UL)))) { goto b139; } -b138: if (!(*(u *)((vd) + (72UL)))) { goto b143; } -b142: if (!(*(u *)((vd) + (104UL)))) { goto b143; } -b144: v134 = 1UL; - goto b145; -b145: if (!(v134)) { goto b139; } -b140: v133 = 1UL; - goto b141; -b141: if (!(v133)) { goto b135; } -b136: v135 = (u)zir_optimize; - v136 = *(u *)((vd) + (104UL)); - v137 = ((u (*)())(v135))(v136); -b135: v138 = (u)znext_decl; - v139 = vc; - v140 = vd; - v141 = ((u (*)())(v138))(v139, v140); -b147: vd = v141; - goto b127; -b139: v133 = 0UL; - goto b141; -b143: v134 = 0UL; - goto b145; -b133: v132 = 1UL; - goto b134; + goto b128; +b140: v136 = 0UL; + goto b142; +b144: v137 = 0UL; + goto b146; +b134: v135 = 1UL; + goto b135; b121: v120 = 0UL; goto b123; b113: v113 = 0UL; @@ -15212,14 +15218,14 @@ u zfopen(u vfd, u va) { u v10 = 0; b0: v3 = (u)zalloc; v4 = va; - v5 = 56UL; + v5 = 64UL; v6 = ((u (*)())(v3))(v4, v5); b1: vf = v6; *(u *)((vf) + (8UL)) = vfd; *(u *)(vf) = va; *(u *)((vf) + (24UL)) = 0UL; *(u *)((vf) + (32UL)) = 0UL; - *(u *)((vf) + (40UL)) = 4096UL; + *(u *)((vf) + (40UL)) = 65536UL; *(u *)((vf) + (48UL)) = 0UL; v7 = (u)zalloc; v8 = va; @@ -15245,6 +15251,8 @@ u zfputc(u vf, u vch) { u v15 = 0; u v16 = 0; u v17 = 0; + u v18 = 0; + u v19 = 0; b0: if (!(vf)) { goto b5; } b4: v3 = 0UL; goto b6; @@ -15266,11 +15274,22 @@ b13: v12 = (u)zfflush; v14 = ((u (*)())(v12))(v13); b12: *(b *)((*(u *)((vf) + (16UL))) + (*(u *)((vf) + (32UL)))) = vch; *(u *)((vf) + (32UL)) = (*(u *)((vf) + (32UL))) + (1UL); - if ((vch) != (10UL)) { goto b16; } -b17: v15 = (u)zfflush; - v16 = vf; - v17 = ((u (*)())(v15))(v16); + if ((vch) != (10UL)) { goto b20; } +b19: if (!(*(u *)((vf) + (56UL)))) { goto b24; } +b23: v16 = 0UL; + goto b25; +b25: if (!(v16)) { goto b20; } +b21: v15 = 1UL; + goto b22; +b22: if (!(v15)) { goto b16; } +b17: v17 = (u)zfflush; + v18 = vf; + v19 = ((u (*)())(v17))(v18); b16: return 0UL; +b20: v15 = 0UL; + goto b22; +b24: v16 = 1UL; + goto b25; b5: v3 = 1UL; goto b6; } @@ -22090,6 +22109,7 @@ b2: v11 = (u)zfopen; v13 = *(u *)(vc); v14 = ((u (*)())(v11))(v12, v13); b6: *(u *)((vc) + (80UL)) = v14; + *(u *)((*(u *)((vc) + (80UL))) + (56UL)) = 1UL; return 0UL; } u zopen_coutput(u vc, u vfilename) { @@ -22128,6 +22148,7 @@ b6: v14 = (u)zfopen; v16 = *(u *)(vc); v17 = ((u (*)())(v14))(v15, v16); b10: *(u *)((vc) + (72UL)) = v17; + *(u *)((*(u *)((vc) + (72UL))) + (56UL)) = 1UL; return 0UL; } u zopen_lines_out(u vc, u vfilename) { @@ -22159,6 +22180,7 @@ b2: v11 = (u)zfopen; v13 = *(u *)(vc); v14 = ((u (*)())(v11))(v12, v13); b6: *(u *)((*(u *)((vc) + (48UL))) + (80UL)) = v14; + *(u *)((*(u *)((*(u *)((vc) + (48UL))) + (80UL))) + (56UL)) = 1UL; return 0UL; } u zopen_output(u vc, u vfilename) { @@ -22203,6 +22225,7 @@ b7: v17 = (u)zfopen; v19 = *(u *)(vc); v20 = ((u (*)())(v17))(v18, v19); b11: *(u *)((vc) + (8UL)) = v20; + *(u *)((*(u *)((vc) + (8UL))) + (56UL)) = 1UL; return 0UL; } u zoutput_ir(u vc, u vd) { diff --git a/cc1.om b/cc1.om @@ -96,6 +96,7 @@ func open_coutput(c: *compiler, filename: *byte) { } c.cout = fopen(fd, c.a); + c.cout.noflush = 1; } func compile(c: *compiler, p: *node) { @@ -208,6 +209,8 @@ func compile(c: *compiler, p: *node) { check_usage(c); + fflush(c.call_out); + // Do optimization passes d = first_decl(c); loop { @@ -2102,6 +2105,7 @@ func open_call_out(c: *compiler, filename: *byte) { } c.call_out = fopen(fd, c.a); + c.call_out.noflush = 1; } func open_lines_out(c: *compiler, filename: *byte) { @@ -2113,6 +2117,7 @@ func open_lines_out(c: *compiler, filename: *byte) { } c.s.lines_out = fopen(fd, c.a); + c.s.lines_out.noflush = 1; } struct name_node { diff --git a/cloc.sh b/cloc.sh @@ -1,17 +1,7 @@ #!/bin/sh data="$( - for name in *.om *.peg; do - case "${name}" in - "parse3.om") - continue - ;; - "parsepeg.om") - continue - ;; - *) - ;; - esac + for name in *.om; do count=$(sed '/^[ \t]*\(\/\/.*\)\?$/d' "${name}" | wc -l) printf '%06s %s\n' "${count}" "${name}" done