ref: 664198084c6c98d754c53bb1cf81469148f4fb6a
parent: a213b714740e452c7d04884a9e8f3a95239c6f8d
author: Lennart Augustsson <lennart.augustsson@epicgames.com>
date: Fri Aug 25 08:18:53 EDT 2023
Formatting
--- a/src/runtime/eval.c
+++ b/src/runtime/eval.c
@@ -284,7 +284,7 @@
/* Needed during reduction */
NODEPTR intTable[HIGH_INT - LOW_INT];
-NODEPTR combFalse, comTrue, combI, combCons;
+NODEPTR combFalse, comTrue, combUnit, combCons;
NODEPTR combCC, combIOBIND;
/* One node of each kind for primitives, these are never GCd. */
@@ -366,7 +366,7 @@
switch (primops[j].tag) {case T_K: combFalse = n; break;
case T_A: comTrue = n; break;
- case T_I: combI = n; break;
+ case T_I: combUnit = n; break;
case T_O: combCons = n; break;
case T_CC: combCC = n; break;
case T_IO_BIND: combIOBIND = n; break;
@@ -384,7 +384,7 @@
switch (t) {case T_K: combFalse = n; break;
case T_A: comTrue = n; break;
- case T_I: combI = n; break;
+ case T_I: combUnit = n; break;
case T_O: combCons = n; break;
case T_CC: combCC = n; break;
case T_IO_BIND: combIOBIND = n; break;
@@ -1116,10 +1116,10 @@
n = evali(n);
if (GETTAG(n) == T_K) /* Nil */
break;
- else if (GETTAG(n) ==T_AP && GETTAG(x = indir(FUN(n))) ==T_AP && GETTAG(indir(FUN(x))) == T_O) { /* Cons */+ else if (GETTAG(n) == T_AP && GETTAG(x = indir(FUN(n))) == T_AP && GETTAG(indir(FUN(x))) == T_O) { /* Cons */c = evalint(ARG(x));
if (c < 0 || c > 127)
- ERR("invalid char");+ ERR("invalid char"); /* Only allow ASCII */*p++ = (char)c;
n = ARG(n);
} else {@@ -1165,6 +1165,7 @@
#define CHKARG3 do { CHECK(3); POP(3); n = TOP(0); z = ARG(n); y = ARG(TOP(-1)); x = ARG(TOP(-2)); } while(0) #define CHKARG4 do { CHECK(4); POP(4); n = TOP(0); w = ARG(n); z = ARG(TOP(-1)); y = ARG(TOP(-2)); x = ARG(TOP(-3)); } while(0)+/* Alloc a possible GC action, e, between setting x and popping */
#define CHKARGEV1(e) do { CHECK(1); x = ARG(TOP(1)); e; POP(1); n = TOP(0); } while(0) #define SETINT(n,r) do { SETTAG((n), T_INT); SETVALUE((n), (r)); } while(0)@@ -1230,7 +1231,7 @@
case T_GT: CMP(>);
case T_GE: CMP(>=);
- case T_ERROR: CHKARGEV1(msg = evalstring(x)); fprintf(stderr, "error: %s\n", msg); exit(1);
+ case T_ERROR: CHKARGEV1(msg = evalstring(x)); fprintf(stderr, "error: %s\n", msg); free(msg); exit(1);
case T_IO_ISNULLHANDLE: CHKARGEV1(hdl = evalhandleN(x)); GOIND(hdl == 0 ? comTrue : combFalse);
@@ -1339,7 +1340,7 @@
hdl = evalhandle(ARG(TOP(1)));
c = (int)evalint(ARG(TOP(2)));
putc(c, hdl);
- RETIO(combI);
+ RETIO(combUnit);
case T_IO_PRINT:
hdr = 0;
goto ser;
@@ -1352,7 +1353,7 @@
//x = ARG(TOP(1));
print(hdl, x, hdr);
fprintf(hdl, "\n");
- RETIO(combI);
+ RETIO(combUnit);
case T_IO_DESERIALIZE:
CHECKIO(1);
hdl = evalhandle(ARG(TOP(1)));
@@ -1365,7 +1366,7 @@
n = evali(ARG(TOP(1)));
HANDLE(n) = 0;
fclose(hdl);
- RETIO(combI);
+ RETIO(combUnit);
case T_IO_OPEN:
CHECKIO(2);
name = evalstring(ARG(TOP(1)));
--
⑨