ska: correct melo-target lifcycle, delaying want.gen with call.gen

This commit is contained in:
Joe Bryan 2024-06-12 10:54:35 -04:00
parent 54ff73f7a5
commit 20202ef654

View File

@ -336,7 +336,6 @@
:: ::
:: +seal: finalize analysis (including recursive descendants) :: +seal: finalize analysis (including recursive descendants)
:: ::
:: XX: debug %ices-fail-2, prevent memoization
:: XX: refactor :: XX: refactor
:: ::
++ seal ++ seal
@ -387,22 +386,10 @@
=> [s=sock.less.c w=w so=so ca=ca] => [s=sock.less.c w=w so=so ca=ca]
~+ ~(norm so (~(app ca w) s)) ~+ ~(norm so (~(app ca w) s))
:: ::
?. ?| ?=(~ rem) ~| %ices-melo-sock-nest
?> ?| ?=(~ rem)
(~(huge so s) (~(app ca w) sock.u.rem)) (~(huge so s) (~(app ca w) sock.u.rem))
== ==
:: XX should this prevent memoization?
::
~& [%ices-fail-nest k=k n=n m=m]
[[ices lope] gen]
::
:: XX s/b debug assert (only if rect.c?)
::
?. ?| ?=(~ rem)
(lien (~(get ja moan.gen) form.c) |=([ss=sock *] =(s ss)))
==
~& [%ices-fail-link k=k n=n m=m direct=rect.c]
[[ices lope] gen]
::
=. ices (~(put by ices) k [s form.c]) =. ices (~(put by ices) k [s form.c])
=? lope ?!(.=(m n)) (~(put in lope) [s form.c]) =? lope ?!(.=(m n)) (~(put in lope) [s form.c])
[[ices lope] gen] [[ices lope] gen]
@ -410,18 +397,26 @@
=. gen =. gen
%- ~(rep in kid) %- ~(rep in kid)
|= [k=@hail =_gen] |= [k=@hail =_gen]
%_ gen ?: (~(has by loop.gen) k)
call ?< (~(has by remo.gen) k)
=. k ?~(rem=(~(get by remo.gen) k) k site.u.rem) ?< (~(has by call.gen) k)
?~ lac=(~(get by call.gen) k) call.gen gen(want (~(del by want.gen) k), loop (~(del by loop.gen) k))
?~ mos=(~(del in remos.u.lac) site)
(~(del by call.gen) k)
(~(put by call.gen) k u.lac(remos mos))
:: ::
want (~(del by want.gen) k) ?~ rem=(~(get by remo.gen) k)
loop (~(del by loop.gen) k) =/ lac (~(got by call.gen) k)
remo (~(del by remo.gen) k) ?^ remos.lac gen
== gen(want (~(del by want.gen) k), call (~(del by call.gen) k))
::
?< (~(has by call.gen) k)
=. gen
?~ lac=(~(get by call.gen) site.u.rem)
~& [%missing-call k=k rem=site.u.rem]
gen
?^ mos=(~(del in remos.u.lac) site) :: XX explain
gen(call (~(put by call.gen) site.u.rem u.lac(remos mos)))
gen(want (~(del by want.gen) site.u.rem), call (~(del by call.gen) site.u.rem))
gen(want (~(del by want.gen) k), remo (~(del by remo.gen) k))
=/ hiss (~(get ju hint.gen) site) =/ hiss (~(get ju hint.gen) site)
=^ fizz gen =^ fizz gen
%- ~(rep in hiss) %- ~(rep in hiss)