Hi All, but especially vm-devs,<div><br></div><div>    recently Andreas has started merging trunk&#39;s plugin code with Cog&#39;s plugin code, by making Cog&#39;s platforms/Cross/plugins and platforms/win32/plugins svn external references to the corresponding directories in trunk, which IMO is exactly the right thing to do.  Alas, it broke the Cog build since in trunk&#39;s platforms/Cross/plugins/IA32ABI (the Alien plugin) are special versions of sqVirtualMachine.[ch] which have support for the Alien plugin not present in trunk&#39;s platforms/Cross/vm/sqVirtualMachine.[ch], and these special versions are obsolete, the versions in Cog&#39;s platforms/Cross/vm/sqVirtualMachine.[ch] being the necessary ones.</div>
<div><br></div><div>The correct fix for Cog is to delete the obsolete special versions of sqVirtualMachine.[ch] in platforms/Cross/plugins/IA32ABI.  Doing this, however, would break the trunk build since trunk&#39;s  platforms/Cross/vm/sqVirtualMachine.[ch] is lacking support for the IA32ABI/Alien plugin, being VM_PROXY_MINOR = 8, whereas Cog&#39;s is VM_PROXY_MINOR = 12.</div>
<div><br></div><div>So how to fix this?  One can&#39;t simply replace trunk&#39;s VM_PROXY_MINOR = 8 one with Cog&#39;s VM_PROXY_MINOR = 12 one since the trunk interpreter lacks the necessary new support functions (e.g. such as sendInvokeCallbackContext, see everything selected by #if VM_PROXY_MINOR &gt; 8 et al in <a href="http://www.squeakvm.org/svn/squeak/branches/Cog/platforms/Cross/vm/sqVirtualMachine.h">http://www.squeakvm.org/svn/squeak/branches/Cog/platforms/Cross/vm/sqVirtualMachine.h</a>).  hence doing so will break the trunk build.  But it /is/ safe to use Cog&#39;s sqVirtualMachine.[ch] provided that #define VM_PROXY_MINOR 8 is in effect.  So what we want is for #define VM_PROXY_MINOR 8 to be in effect for trunk and #define VM_PROXY_MINOR 12 to be in effect for Cog.  This could be done on the command line, but that would break people&#39;s in place builds, require lots of effort to configs etc, etc.</div>
<div><br></div><div>The better way is to define VM_PROXY_MINOR in interp.h and include interp.h in sqVirtualMachine.h.  That way the base Interpreter can state it only supports version 8 of the protocol, and the files in platforms/Cross/plugins/IA32ABI can test VM_PROXY_MINOR to ifdef out code that requires VM_PROXY_MINOR &gt; 8.  The define in sqVirtualMachine.h needs to default to VM_PROXY_MINOR = 8 since the current VMMaker packages don&#39;t generate an interp.h that contains a define for VM_PROXY_MINOR.</div>
<div><br></div><div>So the heads up is that today I will attempt to</div><div>a) merge Cog&#39;s platforms/Cross/vm/sqVirtualMachine.[ch] into trunk&#39;s platforms/Cross/vm/sqVirtualMachine.[ch], with VM_PROXY_MINOR defaulting to 8, and sqVirtualMachine.h including interp.h.</div>
<div>b) update Cog&#39;s VMMaker to generate a src/vm/interp.h that includes #define VM_PROXY_MINOR 12.</div><div>c) update trunk&#39;s VMMaker to generate a src/vm/interp.h that includes #define VM_PROXY_MINOR 8.</div><div>
d) update  <a href="http://www.squeakvm.org/svn/squeak/branches/Cog/src/vm/interp.h">http://www.squeakvm.org/svn/squeak/branches/Cog/src/vm/interp.h</a> based on b)</div><div><br></div><div>OK?</div><div><br></div><div>best</div>
<div>Eliot</div>