<div dir="ltr">Hi Craig,<br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Oct 9, 2015 at 3:36 AM, Craig Latta <span dir="ltr"><<a href="mailto:craig@netjam.org" target="_blank">craig@netjam.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span class=""><br>
> a) write a scratch primitive called e.g. primitiveFakeAForeignCallback<br>
> which forks (at a higher priority?, or at least does a yield?), and<br>
> calls the relevant machinery with faked up callback data (so you can<br>
> avoid all the stuff in thinkProcess which is written in C)<br>
<br>
</span> Which machinery is that? callbackEnter:? I have the simulator and<br>
reader image going.<br></blockquote><div><br></div><div>here's the edited-down guts of thunkEntry, which is what you wasn't to simulate:</div><div><br></div><div><div><font face="comic sans ms, sans-serif">long</font></div><div><font face="comic sans ms, sans-serif">thunkEntry(void *thunkp, long *stackp)</font></div><div><font face="comic sans ms, sans-serif">{</font></div><div><font face="comic sans ms, sans-serif">...</font></div><div><font face="comic sans ms, sans-serif"><br></font></div><div><font face="comic sans ms, sans-serif"> if ((flags = interpreterProxy->ownVM(0)) < 0) {</font></div><div><font face="comic sans ms, sans-serif"> fprintf(stderr,"Warning; callback failed to own the VM\n");</font></div><div><font face="comic sans ms, sans-serif"> return -1;</font></div><div><font face="comic sans ms, sans-serif"> }</font></div><div><font face="comic sans ms, sans-serif"><br></font></div><div><font face="comic sans ms, sans-serif"> if (!(returnType = setjmp(vmcc.trampoline))) {</font></div><div><font face="comic sans ms, sans-serif"> ...</font></div><div><font face="comic sans ms, sans-serif"> interpreterProxy->sendInvokeCallbackContext(&vmcc);</font></div><div><font face="comic sans ms, sans-serif"> fprintf(stderr,"Warning; callback failed to invoke\n");</font></div><div><font face="comic sans ms, sans-serif"> ...</font></div><div><font face="comic sans ms, sans-serif"> interpreterProxy->disownVM(flags);</font></div><div><font face="comic sans ms, sans-serif"> return -1;</font></div><div><font face="comic sans ms, sans-serif"> }</font></div><div><font face="comic sans ms, sans-serif"> ...</font></div><div><font face="comic sans ms, sans-serif"> interpreterProxy->disownVM(flags);</font></div><div><font face="comic sans ms, sans-serif"><br></font></div><div><font face="comic sans ms, sans-serif"> switch (returnType) {</font></div><div><font face="comic sans ms, sans-serif"><br></font></div><div><font face="comic sans ms, sans-serif"> case retword: return vmcc.rvs.valword;</font></div></div><div><span style="font-family:'comic sans ms',sans-serif"> ...</span><br></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">So I expect you want to do something like</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif"> [self ownVM: 0.</font></div><div><font face="arial, helvetica, sans-serif"> self sendInvokeCallbackContext: fakeVMCallbackContextAddress] forkAt: Processor activePriority + 1</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">You could even create a CArray or some such to hold onto the data for the callback (fakeVMCallbackContextAddress above).</font></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<span class=""><br>
> BTW, this is /monstrously/ cool of you!<br>
<br>
</span> Sure thing!<br>
<div class=""><div class="h5"><br>
<br>
-C<br>
<br>
--<br>
Craig Latta<br>
<a href="http://netjam.org" rel="noreferrer" target="_blank">netjam.org</a><br>
<a href="tel:%2B31%20%20%206%202757%207177" value="+31627577177">+31 6 2757 7177</a> (SMS ok)<br>
<a href="tel:%2B%201%20415%20%20287%203547" value="+14152873547">+ 1 415 287 3547</a> (no SMS)<br>
<br>
<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><span style="font-size:small;border-collapse:separate"><div>_,,,^..^,,,_<br></div><div>best, Eliot</div></span></div></div></div>
</div></div>