[bitc-dev] Revisiting stack-ref
Jonathan S. Shapiro
shap at eros-os.com
Mon Jun 4 09:51:55 EDT 2007
On Mon, 2007-06-04 at 11:23 +0100, Sam Mason wrote:
> On Sun, Jun 03, 2007 at 10:16:47PM -0400, Jonathan S. Shapiro wrote:
> > 2. Captured by-reference arguments are legal in *escaping* closures,
> > but a *copy* of the by-reference value is made at the time of
> > closure construction.
> >
> > This yields sensible behavior and preserves type safety, but it
> > introduces behavioral subtlety that will confuse programmers.
>
> I think this would confuse the semantics a lot, apparently simple
> changes to an expression could change its behaviour considerably.
No more so (or less so) than any procedure call that is passed a
reference.
The reason I want this is that there is an idiom for writing constructor
and re-initializer procedures that requires it. The problem at present
is that there is no clean way to re-initialize a data structure that is
unboxed, nor any way to characterize field get/set as a procedure call
within the language.
> > My intuition is that is is better to prohibit escaping capture of
> > BY-REFERENCE parameters, even if this means that we must prohibit
> > their capture in *all* closures.
>
> Sounds a bit strong, but at least it could be relaxed without obvious
> problems later.
Oh I think it is too strong too, but we haven't got closure escape
analysis yet, and as you say it can be relaxed.
I do think it is better than "copy on closure formation", which appears
to be what the Felix folks are considering.
shap
More information about the bitc-dev
mailing list