commit 2067af3f3ad42ab1a0991c2bd4fb003067bb1381
parent d99a2581b3ced3946c830c64a5369d12de707ecd
Author: erai <erai@omiltem.net>
Date: Sun, 9 Feb 2025 00:51:29 +0000
increase buffer to 64k
Diffstat:
M | as.om | | | 1 | + |
M | bufio.om | | | 5 | +++-- |
M | cc0.c | | | 167 | +++++++++++++++++++++++++++++++++++++++++++++---------------------------------- |
M | cc1.om | | | 5 | +++++ |
M | cloc.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