diff options
| author | 2025-04-13 17:02:57 -0400 | |
|---|---|---|
| committer | 2025-04-13 17:02:57 -0400 | |
| commit | 7ed982648da8acc3ddf4bb264ec1872e33785ee8 (patch) | |
| tree | 59e898782bf6226186c52029cda581268c91a95a /lowlevel.scm | |
| parent | use 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.scm | 7 |
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)); } } |
