<br><br><div class="gmail_quote">On Wed, Jul 21, 2010 at 6:56 PM, David T. Lewis <span dir="ltr">&lt;<a href="mailto:lewis@mail.msen.com">lewis@mail.msen.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div><div></div><div class="h5"><br>
On Wed, Jul 21, 2010 at 12:42:06AM -0700, Andreas Raab wrote:<br>
&gt;<br>
&gt; On 7/20/2010 7:10 PM, David T. Lewis wrote:<br>
&gt; &gt;The current VMMaker for SqueakVM does not use or support pragmas<br>
&gt; &gt;(method annotations). Converting to pragmas makes VMMaker unloadable<br>
&gt; &gt;in older Squeak images.<br>
&gt;<br>
&gt; But these Squeak images won&#39;t run on the generated VM either. There is a<br>
&gt; point and a time when it&#39;s worthwhile to move forward and given that<br>
&gt; we&#39;ve just hit a new major version in Squeak it seems quite reasonable<br>
&gt; to say that the VMMaker 4 series requires Squeak 4 to run on.<br>
<br>
</div></div>Actually many older images do run on the latest VMs. I frequently<br>
run Squeak 3.6 (and sometimes Squeak 2.4) on the latest VM whenever<br>
I want to look at older versions of methods to figure out how they<br>
were originally intended to work. I do expect these older images<br>
to run on newer VMs to the extent possible.<br>
<br>
I regularly run VMMaker in a 3.8 image, and I always run that image<br>
on the latest generated VM. But the only real reason I do that is<br>
to verify some degree of backward compatibility for VMMaker updates,<br>
so I don&#39;t really know if this matters to anyone else.<br>
<br>
Certainly for most of the folks on this list, doing VM work in<br>
a recent Squeak, Pharo, or Cuis image is a reasonable expectation.<br>
On the other hand, there may still be people who for various reasons<br>
prefer to use other images, and it would be nice if the most up to<br>
date VMMaker remains loadable in those images where possible.<br></blockquote><div><br></div><div>I don&#39;t see the rationale.  If one wants to produce a VM for an older image I don&#39;t see why one needs to be able to run the VMMaker in that image.  What am I missing?</div>
<div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">If anyone on the list *does* know of a need for VMMaker to work<br>
on images that do not support pragmas, please speak up now so we<br>
do not cause unnecessary problems.<br>
<br>
I am also curious about the motivation for using method annotations<br>
here. Is it a style preference, or is there a functional benefit?<br></blockquote><div><br></div><div>They&#39;re much neater in that they need no associated implementation, and in the VMMaker&#39;s case since they&#39;re purely used for communicating with Slang that&#39;s goodness (I think pragmas having implementations is a good thing in a Smalltalk context, e.g. preferences, menu building etc).  It means the simulator doesn&#39;t execute them.  It means less work for Slang to extract them.  They&#39;re much easier to browse and analyse because the arguments are immediately available; with messages in bytecode one needs to compile the method and walk the parse tree to extract arguments.</div>
<div><br></div><div>I added quite a few pragmas, doNotGenerate, doNotGenerate: api api: asmLabel: cmacro: volatile, and it was much easier to do than the fake method in object, parse tree walk approach necessitated by the old scheme.  In short, leaner &#39;n meaner.</div>
<div><br></div><div>But the Slang in Cog does support the older source annotations.  TMethod &amp; SmartSyntaxPluginTMethod recordDeclarations still walk the parse tree to check for old annotations, so the Cog Slang should, fingers crossed, still translate the current VMMaker Interpreter.  That would be a worth-while experiment to see if it produces a functional interpreter.</div>
<div><br></div><div>If you do think of moving forward to pragmas I have some scripts I used to convert the VMMaker to pragmas wen I started on Cog, but I think Lukas&#39; Squeak/Pharo rewrite editor from the refactoring browser is a much better way of doing it.  I&#39;ve recently taken the Cog interpreter out from under ObjectMemory using Lukas&#39; fork of the rewrite editor.  Let me know and I can lend a hand developing a script to convert from null messages to pragmas.</div>
<div><br></div><div>best,</div><div>Eliot</div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
Dave<br>
<br>
</blockquote></div><br>