Re: Using Vine in 3-way interactions (was Re: Question on redirectors/whenMoreResolved in the 3-way case, in the middle vat)
Rob Withers <[email protected]> Tue, 10 Mar 2015 12:56:09 -0600
| Newsgroups | gmane.comp.lang.e.general |
|---|---|
| Message-ID | <[email protected]> |
--===============6347801384336593352==
Content-Type: text/html; charset=windows-1252
Content-Transfer-Encoding: quoted-printable
<html>
<head>
<meta content=3D"text/html; charset=3Dwindows-1252"
http-equiv=3D"Content-Type">
</head>
<body bgcolor=3D"#FFFFFF" text=3D"#000000">
<br>
<br>
<div class=3D"moz-cite-prefix">On 3/8/2015 7:35 PM, Rob Withers wrote=
:<br>
</div>
<blockquote cite=3D"mid:[email protected]" type=3D"cite">
<meta content=3D"text/html; charset=3Dwindows-1252"
http-equiv=3D"Content-Type">
<br>
<div class=3D"moz-cite-prefix">On 3/8/2015 5:58 PM, Mark S. Miller
wrote:<br>
</div>
<blockquote
cite=3D"mid:CABHxS9jDZvUtMr5LtPJ65DWSip9bwxzfx0LpGbd_E2auPPfVgw-JsoAwUIsXov1KXRcyAk9cg@public.gmane.org=
l.com"
type=3D"cite">
<div dir=3D"ltr"><br>
<div class=3D"gmail_extra"><br>
<div class=3D"gmail_quote">On Sun, Mar 8, 2015 at 7:33 AM, Ro=
b
Withers <span dir=3D"ltr"><<a moz-do-not-send=3D"true"
href=3D"mailto:[email protected]"
target=3D"_blank">[email protected]</a>></s=
pan>
wrote:<br>
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0=
px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-lef=
t-style:solid;padding-left:1ex">
<div bgcolor=3D"#FFFFFF" text=3D"#000000"> I had not
realized I had posed such a challenging situation.=A0 I=
n
mulling over what needs to happen, I think the
followOn message send (#hashCode) needs to be a 3-vat
situation, <b>of the Resolver</b>, to prevent GC.=A0
Here are the steps I think are needed, #6 being the
point where my system is failing, due to its absence?
<br>
</div>
</blockquote>
<div><br>
</div>
<div>Hi Rob, I don't think I understand the scenario
that's driving this. I went back to the beginning of the
thread and found</div>
</div>
</div>
</div>
</blockquote>
<br>
Hi Mark, I suppose it is best to just post the pertinent code.
First is the GalaxyObject, the test object:<br>
<br>
<font face=3D"Palatino Linotype" size=3D"-2">public class GalaxyObj=
ect
{</font><br>
<font face=3D"Palatino Linotype" size=3D"-2">=A0=A0=A0 public int
getTheAnswer() { return 42; }</font><br>
<font face=3D"Palatino Linotype" size=3D"-2">=A0=A0=A0 public Ref
redirectForTheAnswer(Ref ref) throws NotResolvedException {
return ref.redirectMessage("getTheAnswer"); }</font><br>
<font face=3D"Palatino Linotype" size=3D"-2">}</font><br>
</blockquote>
<br>
Hi Mark, does this make sense?=A0 redirectForTheAnswer sends
getTheAnswer to the arg Ref and returns the promise.=A0 In the code
below, the arg Ref is Bob, a GalazyObject in a third Vat, so the
return of redirectForTheAnswer is a RemotePromise.=A0 THe follow on
message below is #hashCode, is sent to this RemotePromise.<br>
=A0 <br>
<blockquote cite=3D"mid:[email protected]" type=3D"cite"><fo=
nt
face=3D"Palatino Linotype" size=3D"-2"> =A0=A0=A0 =A0=A0=A0 =A0=A0=
=A0 Ref answer =3D
alice.redirectMessage("redirectForTheAnswer",
bob).redirectMessage("hashCode");<br>
=A0 </font><br>
</blockquote>
<br>
- Robert<br>
<br class=3D"">
<blockquote cite=3D"mid:[email protected]" type=3D"cite">
<blockquote
cite=3D"mid:CABHxS9jDZvUtMr5LtPJ65DWSip9bwxzfx0LpGbd_E2auPPfVgw-JsoAwUIsXov1KXRcyAk9cg@public.gmane.org=
l.com"
type=3D"cite">
<div dir=3D"ltr">
<div class=3D"gmail_extra">
<div class=3D"gmail_quote">
<div>
<blockquote type=3D"cite">
<div class=3D"gmail_extra">
<div class=3D"gmail_quote">
<blockquote class=3D"gmail_quote" style=3D"margin:0=
px
0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-lef=
t-style:solid;padding-left:1ex">
<div bgcolor=3D"#FFFFFF" text=3D"#000000">
<div> On 2/22/2015 6:19 PM, Rob Withers wrote:<=
br>
</div>
<blockquote type=3D"cite">I am stuck, both
conceptually, as well as understanding code
I wrote a long while ago.=A0 I was hoping to
gain a little insight from the list of the
insides of resolution redirection in the
3-way case.=A0 The recent change I have made
results from my thinking I finally
understand the ordering that MirandaMethods
ensure.=A0 I made changes such that a
whenMoreResolved directly follows the
message that generates is by adding to the
front of the msg queue.=A0=A0<br>
<br>
In the 3-way case, Carol is sending a
message to Alice, passing Bob.=A0 Alice
receives the message and executes, which
sends a message to Bob, then returns the
result to Carol.=A0 In Alice's vat, the
DelayedRedirector is resolved to the
RemotePromise of the call to Bob, the return
of Alice's computation and I think it sends
whenMoreResolved to the proxy of the new
promise resolver of the send to Bob.=A0 What
little tracing I have I am posting below, as
well as the DelayedRedirector value() and
the ProxyResolver resolve() code, at the
bottom.=A0 However, this is my question, what
should the redirector do in Alice's Vat to
propagate the resolution from Bob, back to
Carol?<br>
<br>
Thank you,<br>
- Robert<br>
<br>
<br>
// There are 3 messages sent to Bob, from
Alice:<br>
// =A0=A0=A0 1) getTheAnswer, which returns 4=
2,=A0<br>
// =A0=A0=A0 2)=A0<b>hashCode, again 42</b>=A0=
and=A0<br>
//=A0=A0 =A0 3)=A0<b>whenMoreResolved</b>, to
forward to the redirector back in Alice.<br>
</blockquote>
</div>
</blockquote>
</div>
</div>
</blockquote>
</div>
<div><br>
</div>
<div>which still seems to start in the middle, or I may be
misunderstanding. What does the user code do, in what
initial conditions, that set the rest of this scenario
in motion?</div>
<div><br>
</div>
<div><br>
</div>
<div>=A0</div>
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0=
px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-lef=
t-style:solid;padding-left:1ex">
<div bgcolor=3D"#FFFFFF" text=3D"#000000">
<ol>
<li>Carol sends #redirectForTheAnswer to
Alice::GalaxyObject with a ref to
Bob::GalaxyObject, returning a RemotePromise1</li>
<li>Carol sends #hashCode to the RemotePromise1 from
the first send, which forwards to the Promise in
Alice, where it is queued.<br>
</li>
<li>3-way: Carol sends a ProvideFor to Bob and Alice
sends an AcceptFrom to Bob, so Alice resolves
Bob::GalaxyObject.</li>
<li>Alice::GalaxyObject, under computation of
#redirectForTheAnswer, sends #getTheAnswer to
Bob::GalaxyObject, returning a RemotePromise2, in
Alice, from #redirectForTheAnswer.</li>
<li>The pending #hashCode send is sent to the
RemothePromise2, in Alice, which points to Bob.</li=
>
<li>3-way: In Alice, the redirected #hashCode ought
to become a 3-way for the Resolver in Carol, for
the intial #hashCode send.=A0 Alice would send a
ProvideFor to Carol, for that Resolver and Bob
would send an AcceptFrom to Carol to gain a FarRef
to the Resolver.</li>
<li>Bob::GalaxyObject, under computation of
#hashCode, returns the value 42.</li>
<li>Bob sends the pending #hashCode to 42, and
resolves the gift Resolver. </li>
</ol>
I believe the tricky thing is that it is the Resolver
which is gifted, so it's a different export
"polarization" of the minigraph for a remote send that
has been forwarded. <br>
<br>
Thank you,<br>
Robert<br>
<br>
</div>
</blockquote>
</div>
<br clear=3D"all">
<div><br>
</div>
-- <br>
<div class=3D"gmail_signature">=A0 =A0 Cheers,<br>
=A0 =A0 --MarkM</div>
</div>
</div>
<br>
<fieldset class=3D"mimeAttachmentHeader"></fieldset>
<br>
<pre wrap=3D"">_______________________________________________
e-lang mailing list
<a moz-do-not-send=3D"true" class=3D"moz-txt-link-abbreviated" href=3D"ma=
ilto:[email protected]">[email protected]</a>
<a moz-do-not-send=3D"true" class=3D"moz-txt-link-freetext" href=3D"http:=
//www.eros-os.org/mailman/listinfo/e-lang">http://www.eros-os.org/mailman=
/listinfo/e-lang</a>
</pre>
</blockquote>
<br>
</blockquote>
<br>
</body>
</html>
--===============6347801384336593352==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
e-lang mailing list
[email protected]
http://www.eros-os.org/mailman/listinfo/e-lang
--===============6347801384336593352==--