ref: 03ffe328c2e2317f8a99c1644bd2ec2811bb8ce5
parent: d3bb1145958630c959a7e654dab02ff99d0bff5f
author: Lennart Augustsson <lennart.augustsson@epicgames.com>
date: Wed Nov 29 09:03:18 EST 2023
More comments.
--- a/src/runtime/eval.c
+++ b/src/runtime/eval.c
@@ -711,7 +711,7 @@
}
}
#endif
- for (int j = 0; j < sizeof primops / sizeof primops[0]; j++) {+ for (unsigned int j = 0; j < sizeof primops / sizeof primops[0]; j++) {flip_ops[primops[j].tag] = primops[j].flipped;
}
@@ -821,6 +821,9 @@
goto top;
}
#if 0
+ /* This is broken (I don't understand why),
+ * but it also doesn't seem to work as well as intended. Maybe IND nodes?
+ */
if (GETTAG(n) == T_AP && GETTAG(FUN(n)) == T_C) {NODEPTR q = ARG(n);
enum node_tag tt, tf;
@@ -828,7 +831,7 @@
q = INDIR(q);
if ((tf = flip_ops[tt])) {/* Do the C op --> flip_op reduction */
- //printf("%s -> %s\n", tag_names[tt], tag_names[tf]);+ // printf("%s -> %s\n", tag_names[tt], tag_names[tf]);SETTAG(n, T_IND);
INDIR(n) = HEAPREF(tf);
red_flip++;
--
⑨