[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Chicken-janitors] #1390: The behavior between `values` and `call/cc
From: |
Chicken Trac |
Subject: |
Re: [Chicken-janitors] #1390: The behavior between `values` and `call/cc` is inconsistent. |
Date: |
Mon, 08 Apr 2019 10:40:39 -0000 |
#1390: The behavior between `values` and `call/cc` is inconsistent.
---------------------------------+----------------------
Reporter: kooda | Owner:
Type: defect | Status: reopened
Priority: minor | Milestone: someday
Component: compiler | Version: 4.12.0
Resolution: | Keywords:
Estimated difficulty: hard |
---------------------------------+----------------------
Changes (by sjamaan):
* difficulty: easy => hard
* milestone: 5.0 => someday
Comment:
Reverted in 3e0f640ecf22f6be7af1947b875132415556ca5b
This turns out not to work because when you capture a generated
continuation, this assumes it receives one argument and does not check for
the argument count. Adding these checks would be prohibitively slow, so we
don't do it.
There might be a way to avoid doing this (the code hardcodes argcount from
the lambda, which is not strictly necessary; we could call
save_and_reclaim with `c` from C, instead of the Scheme `n`, but this
doesn't solve everything; we generate `t0`...`tn` which index into the
argvector and we also generate direct calls to trampoline functions with
`c` set to the argument count we know the trampoline accepts and so on.
These assumptions need to be removed before we can do this.
It is not even certain we really should want this feature in the first
place.
--
Ticket URL: <https://bugs.call-cc.org/ticket/1390#comment:4>
CHICKEN Scheme <https://www.call-cc.org/>
CHICKEN Scheme is a compiler for the Scheme programming language.