<div dir="ltr"><div><div><div><div><div>Hello,<br></div><br>I started working with the Pharo VM not too much ago, but the latest bleeding edge Pharo VM code is placed on the GitHub hosted repository: <a href="https://github.com/pharo-project/pharo-vm">https://github.com/pharo-project/pharo-vm</a><br>
<br></div><div>For cloning, you only need to do in the command line:<br></div><div>git clone <a href="https://github.com/pharo-project/pharo-vm">https://github.com/pharo-project/pharo-vm</a><br></div><div><br></div>For building the Pharo VM, you need to follow the instructions that are better formatted in the GitHub page. I only have a bit of experience with building it at Linux, where there is a small problem with the generated build.sh script. From here I am going to explain a bit that problem, just in case, assuming that you have already taken a look at the GitHub page or the Readme in the repository.<br>
<br>The build.sh script tries to execute ../codegen-scripts/extract-commit-info.sh which is actually located in ../scripts/extract-commit-info.sh<br><br></div>When running that build.sh you could see an error about that path, then start making the whole project, until hitting a compilation error. For fixing that error, you need to run the ../scripts/extract-commit-info.sh from the build directory path, so it generates the missing file. Then, you can just run make. For subsequent builds, you don&#39;t have run ../scripts/extract-commit-info.sh all the time, unless you remove the whole build directory to do a new clean build.<br>
<br></div>Greetings,<br></div>Ronie Salgado<br><div><div><div><div><div><br></div></div></div></div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014/1/24 Eliot Miranda <span dir="ltr">&lt;<a href="mailto:eliot.miranda@gmail.com" target="_blank">eliot.miranda@gmail.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi All,<div><br></div><div>    in trying to help Clément with his Sista work on Cog I&#39;m trying to look at the latest version of pharovm.  I&#39;ve been using git://<a href="http://gitorious.org/cogvm/blessed" target="_blank">gitorious.org/cogvm/blessed</a>.<br clear="all">

<div><br></div><div><br></div><div>I cloned it on December 2nd, and just did a git fetch, but I see no changes to any files other than .git/FETCH_HEAD and .git/ORIG_HEAD.  How do I update the files to their current state (I use svn &amp; mercurial, have used sccs, rcs &amp; sccs, and it&#39;s such a pain having to learn yet another f***ing sccs)?</div>

<div><br></div><div>Further, I see no generated files such as gcc3x-cointerp.c or cogit.c.  Why not?  Do you always fire up an image and freshly generate the C source??  If not, where do I find it?</div><div><br></div><div>

All this is to answer the simple question of whether the blessed pharo vm contains primitiveInterpreterSourceVersion.  How would you answer that question without running the VM?</div><div><br></div><div>e.g. in the Cog svn repository you&#39;d do</div>

<div>grep primitiveInterpreterSourceVersion src/vm/*.c src/plugins/*/*.c</div><div>and you&#39;d have an answer.</div><div><br></div><div>I tried</div><div>    cd mc/VMMaker-oscog.package/instance</div><div>    grep primitiveInterpreterSourceVersion *.st</div>

<div>and the lack of reply makes me think it doesn&#39;t exist.  Hence from</div><div><br></div><div><div>!VirtualMachine methodsFor: &#39;accessing&#39; stamp: &#39;MarcusDenker 5/8/2013 11:51&#39;!</div><div>interpreterSourceVersion</div>

<div>        &quot;The use of this primitive not recommended. Not all VMs providing that&quot;</div><div><br></div><div>        &quot;Answer a string corresponding to the version of the interpreter source.</div><div>        This represents the version level of the Smalltalk source code (interpreter</div>

<div>        and various plugins) that is translated to C by a CCodeGenerator, as distinct</div><div>        from the external platform source code, typically written in C and managed</div><div>        separately for each platform. An optional primitive is invoked that may not</div>

<div>        be available on all virtual machines.&quot;</div><div><br></div><div>        &quot;Smalltalk vm interpreterSourceVersion&quot;</div><div><br></div><div>        &lt;primitive: &#39;primitiveInterpreterSourceVersion&#39;&gt;</div>

<div>        ^ self getSystemAttribute: 1009! !</div></div><div><br></div><div>I can tell I need to look at the implementation of sourceVersionString in platforms/Cross/vm/sqSCCSVersion.h, which, despite all my best efforts, has diverged completely (and IMO unnecessarily) from <a href="http://www.squeakvm.org/svn/squeak/branches/Cog/platforms/Cross/vm/sqSCCSVersion.h" target="_blank">http://www.squeakvm.org/svn/squeak/branches/Cog/platforms/Cross/vm/sqSCCSVersion.h</a>, (which was written to be extended to satisfy us all).  It reads</div>

<div><br></div><div><div>/*</div><div> * A set of definitions for C source code control systems, to provide accurate</div><div> * and definitive version information to the VM.</div><div> *</div><div> * Currently instantiated only for Subversion.  Please add definitions for</div>

<div> * other repositories as appropriate.</div><div> *</div><div> * I guess a good way to manage this is to edit the below define list to select</div><div> * appropriate the repository type, and then that&#39;s the extent of the fork.</div>

<div> *</div><div> * Eliot Miranda</div><div> * <a href="mailto:eliot.miranda@gmail.com" target="_blank">eliot.miranda@gmail.com</a></div><div> * 15 July 2011</div><div> */</div><div><br></div><div><br></div><div>#include &quot;vmVersionInfo.h&quot; // defines REVISION_STRING</div>

<div><br></div><div>#ifndef REVISION_STRING</div><div># error &quot;Revision information not specified&quot;</div><div>#endif</div><div><br></div><div>static char *sourceVersionString()</div><div>{</div><div>    return REVISION_STRING;</div>

<div>}</div></div><div><br></div><div>which is wrong.  I *didn&#39;t* write this.  I wrote something quite different and you should have edited it to reflect that.</div><div><br></div><div>But alas, when I try</div><div>
find . -iname vmVersionInfo.h<br>
</div><div>I find...nothing.</div><div><br></div><div>hmph. stymied.  frustrated.  confused.  hence this missive.</div><div><br></div><div>P.S&gt;  What I&#39;m really trying to do is get my VM simulator to say it&#39;s a Pharo VM, so I can simulate Clément&#39;s Sista image and fix the infrastructure he&#39;s trying to use for speculative inlining/adaptive optimization.  So this is in aid of a (much) faster Pharo VM.  Hence helpful answers only please.</div>
<span class="HOEnZb"><font color="#888888">
<div>-- </div>best,<div>Eliot</div>
</font></span></div></div>
</blockquote></div><br></div>