Hello,

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: https://github.com/pharo-project/pharo-vm

For cloning, you only need to do in the command line:
git clone https://github.com/pharo-project/pharo-vm

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.

The build.sh script tries to execute ../codegen-scripts/extract-commit-info.sh which is actually located in ../scripts/extract-commit-info.sh

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't have run ../scripts/extract-commit-info.sh all the time, unless you remove the whole build directory to do a new clean build.

Greetings,
Ronie Salgado



2014/1/24 Eliot Miranda <eliot.miranda@gmail.com>
Hi All,

� � in trying to help Cl�ment with his Sista work on Cog I'm trying to look at the latest version of pharovm. �I've been using�git://gitorious.org/cogvm/blessed.


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 & mercurial, have used sccs, rcs & sccs, and it's such a pain having to learn yet another f***ing sccs)?

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?

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?

e.g. in the Cog svn repository you'd do
grep�primitiveInterpreterSourceVersion src/vm/*.c src/plugins/*/*.c
and you'd have an answer.

I tried
� � cd mc/VMMaker-oscog.package/instance
� � grep primitiveInterpreterSourceVersion *.st
and the lack of reply makes me think it doesn't exist. �Hence from

!VirtualMachine methodsFor: 'accessing' stamp: 'MarcusDenker 5/8/2013 11:51'!
interpreterSourceVersion
� � � � "The use of this primitive not recommended. Not all VMs providing that"

� � � � "Answer a string corresponding to the version of the interpreter source.
� � � � This represents the version level of the Smalltalk source code (interpreter
� � � � and various plugins) that is translated to C by a CCodeGenerator, as distinct
� � � � from the external platform source code, typically written in C and managed
� � � � separately for each platform. An optional primitive is invoked that may not
� � � � be available on all virtual machines."

� � � � "Smalltalk vm interpreterSourceVersion"

� � � � <primitive: 'primitiveInterpreterSourceVersion'>
� � � � ^ self getSystemAttribute: 1009! !

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�http://www.squeakvm.org/svn/squeak/branches/Cog/platforms/Cross/vm/sqSCCSVersion.h, (which was written to be extended to satisfy us all). �It reads

/*
�* A set of definitions for C source code control systems, to provide accurate
�* and definitive version information to the VM.
�*
�* Currently instantiated only for Subversion. �Please add definitions for
�* other repositories as appropriate.
�*
�* I guess a good way to manage this is to edit the below define list to select
�* appropriate the repository type, and then that's the extent of the fork.
�*
�* Eliot Miranda
�* 15 July 2011
�*/


#include "vmVersionInfo.h" // defines REVISION_STRING

#ifndef REVISION_STRING
# error "Revision information not specified"
#endif

static char *sourceVersionString()
{
� � return REVISION_STRING;
}

which is wrong. �I *didn't* write this. �I wrote something quite different and you should have edited it to reflect that.

But alas, when I try
find . -iname vmVersionInfo.h
I find...nothing.

hmph. stymied. �frustrated. �confused. �hence this missive.

P.S> �What I'm really trying to do is get my VM simulator to say it's a Pharo VM, so I can simulate Cl�ment's Sista image and fix the infrastructure he'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.
--�
best,
Eliot