ref: d8a6814c988e23f76256e0a6f947c94c1358b0a1
parent: 32f5edb5bb03a2a9915983f79072beb9f485b314
author: Lennart Augustsson <lennart.augustsson@epicgames.com>
date: Sun Feb 25 07:53:50 EST 2024
Use combEVAL
--- a/src/runtime/eval.c
+++ b/src/runtime/eval.c
@@ -524,6 +524,7 @@
NODEPTR combFalse, combTrue, combUnit, combCons, combPair;
NODEPTR combCC, combZ, combIOBIND, combIORETURN, combIOCCBIND;
NODEPTR combLT, combEQ, combGT;
+NODEPTR combEVAL1, combEVAL2;
/* One node of each kind for primitives, these are never GCd. */
/* We use linear search in this, because almost all lookups
@@ -682,6 +683,8 @@
case T_IO_BIND: combIOBIND = n; break;
case T_IO_RETURN: combIORETURN = n; break;
case T_IO_CCBIND: combIOCCBIND = n; break;
+ case T_EVAL1: combEVAL1 = n; break;
+ case T_EVAL2: combEVAL2 = n; break;
#if WANT_STDIO
case T_IO_STDIN: SETTAG(n, T_PTR); PTR(n) = stdin; break;
case T_IO_STDOUT: SETTAG(n, T_PTR); PTR(n) = stdout; break;
@@ -706,6 +709,8 @@
case T_IO_BIND: combIOBIND = n; break;
case T_IO_RETURN: combIORETURN = n; break;
case T_IO_CCBIND: combIOCCBIND = n; break;
+ case T_EVAL1: combEVAL1 = n; break;
+ case T_EVAL2: combEVAL2 = n; break;
#if WANT_STDIO
case T_IO_STDIN: SETTAG(n, T_PTR); PTR(n) = stdin; break;
case T_IO_STDOUT: SETTAG(n, T_PTR); PTR(n) = stdout; break;
@@ -2345,7 +2350,7 @@
case T_ADD:
case T_SUB:
n = ARG(TOP(1));
- PUSH(cells + T_EVAL2);
+ PUSH(combEVAL2);
break;
case T_MUL: ARITHBINU(*);
case T_QUOT: ARITHBIN(/);
@@ -2583,7 +2588,7 @@
if (tag == T_EVAL2) {n = ARG(TOP(1));
- TOP(0) = cells + T_EVAL1;
+ TOP(0) = combEVAL1;
goto top;
} else if (tag == T_EVAL1) {/* First argument */
--
⑨