lexical for-in/for-of loose end
Herby Vojčík
herby at mailbox.sk
Tue Feb 7 02:44:36 PST 2012
Allen Wirfs-Brock wrote:
> With "body-swap" it concerns me a bit that is an arbitrary and
> variable number of closures may need to be updated each iteration
> (consider a body containing a while loop that spits out closures that
> capture init bindings.)
I think there are some lazy possibilities for that. Create the "copy"
beforehand by sort-of Object.create(loopContext) then either use the
"transparent proxy to loopContext while running / iterEnd: populate copy
with let-vars / proxy become: copy" (pity there probably is not #become:
(or #forwardBecome:) in vm) or "store copy to @wouldBeCopy in
loopContext / closure-created: store copy to [[ContextForDetachment]] in
closure / use actual record (loop-context) since
actual-record-to-use. at wouldBeCopy === [[ContextForDetachment]] /
iterEnd: populate copy with let-vars && loopContext. at wouldBeCopy = null
(later different object in subsequent iterations) / in detached closure,
lazily do actual-context-to-use = [[ContextForDetachment]] since
actual-record-to-use. at wouldBeCopy exists and is different from
[[ContextForDetachment]]".
Implementors can probably find better ones.
> Allen
Herby
More information about the es-discuss
mailing list