aboutsummaryrefslogtreecommitdiffstats
path: root/lowlevel.scm
diff options
context:
space:
mode:
authorGravatar Peter McGoron 2025-04-13 17:02:57 -0400
committerGravatar Peter McGoron 2025-04-13 17:02:57 -0400
commit7ed982648da8acc3ddf4bb264ec1872e33785ee8 (patch)
tree59e898782bf6226186c52029cda581268c91a95a /lowlevel.scm
parentuse more specific exceptions (diff)
make define-procedure-tag a define form, and fix incorrect C primitive code
Diffstat (limited to 'lowlevel.scm')
-rw-r--r--lowlevel.scm7
1 files changed, 2 insertions, 5 deletions
diff --git a/lowlevel.scm b/lowlevel.scm
index e6bb9c5..1c338b5 100644
--- a/lowlevel.scm
+++ b/lowlevel.scm
@@ -33,7 +33,7 @@
(define unique-id
;; Generate a fixnum, which will serve as the ID for each tagged
- ;; procedure constructor.
+ ;; procedure constructor. This number is always positive.
(let ((i 0))
(lambda ()
(set! i (fx+ i 1))
@@ -59,7 +59,6 @@ int i;
closure[0] = C_CLOSURE_TYPE | (old_size + 1);
for (i = 0; i < old_size; i++)
C_block_item(closure, i) = C_block_item(proc, i);
- // C_mutate_slot(&C_block_item(closure, i), C_block_item(proc, i));
C_block_item(closure, old_size) = sig;
C_return(closure);"))
@@ -80,12 +79,10 @@ closure[0] = C_CLOSURE_TYPE | size;
for (i = 0; i < size; i++) {
item = C_block_item(proc, i);
- if (!C_immediatep(item) && C_pairp(item) && C_eqp(unique_symbol, C_u_i_car(item))) {
+ if (C_i_pairp(item) == C_SCHEME_TRUE && C_eqp(unique_symbol, C_u_i_car(item)) == C_SCHEME_TRUE) {
C_block_item(closure, i) = sig;
- // C_mutate_slot(&C_block_item(closure, i), sig);
} else {
C_block_item(closure, i) = item;
- // C_mutate_slot(&C_block_item(closure, i), C_block_item(proc, i));
}
}