[Vm-dev] Re: heads-up on sqVirtualMachine harmonization
David T. Lewis
lewis at mail.msen.com
Thu Jun 16 19:29:32 UTC 2011
On Thu, Jun 16, 2011 at 12:13:04PM -0700, Eliot Miranda wrote:
> On Thu, Jun 16, 2011 at 12:06 PM, Eliot Miranda <eliot.miranda at gmail.com>wrote:
> > Hi All, but especially vm-devs,
> > recently Andreas has started merging trunk's plugin code with Cog's
> > plugin code, by making Cog'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'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's
> > platforms/Cross/vm/sqVirtualMachine.[ch], and these special versions are
> > obsolete, the versions in Cog's platforms/Cross/vm/sqVirtualMachine.[ch]
> > being the necessary ones.
> > 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's platforms/Cross/vm/sqVirtualMachine.[ch] is lacking support for the
> > IA32ABI/Alien plugin, being VM_PROXY_MINOR = 8, whereas Cog's
> > is VM_PROXY_MINOR = 12.
> > So how to fix this? One can't simply replace trunk's VM_PROXY_MINOR = 8
> > one with Cog'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 > 8 et al in
> > http://www.squeakvm.org/svn/squeak/branches/Cog/platforms/Cross/vm/sqVirtualMachine.h).
> > hence doing so will break the trunk build. But it /is/ safe to use
> > Cog'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's in place builds,
> > require lots of effort to configs etc, etc.
> > 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 > 8. The define in sqVirtualMachine.h needs to
> > default to VM_PROXY_MINOR = 8 since the current VMMaker packages don't
> > generate an interp.h that contains a define for VM_PROXY_MINOR.
> > So the heads up is that today I will attempt to
> > a) merge Cog's platforms/Cross/vm/sqVirtualMachine.[ch] into
> > trunk's platforms/Cross/vm/sqVirtualMachine.[ch], with VM_PROXY_MINOR
> > defaulting to 8, and sqVirtualMachine.h including interp.h.
> > b) update Cog's VMMaker to generate a src/vm/interp.h that includes #define
> > VM_PROXY_MINOR 12.
> > c) update trunk's VMMaker to generate a src/vm/interp.h that
> > includes #define VM_PROXY_MINOR 8.
> > d) update http://www.squeakvm.org/svn/squeak/branches/Cog/src/vm/interp.hbased on b)
> e) nuke
> f) make trunk's platforms/Cross/plugins/IA32ABI/ia32abicc.c compile,
> albeit with reduced functionality, if VM_PROXY_MINOR = 8.
That all sounds reasonable to me, although I'm not able to look at the
code right now. For me the litmus test is whether I can compile and run
a trunk interpreter VM on unix/linux using latest trunk SVN and VMMaker
(and/or fix the problems preventing one from doing so). As long as that
is the case I will be happy.
Getting rid of the odd variants in Cross/plugins/IA32ABI would definitely
be a good thing.
If you update the trunk VMMaker, please edit VMMaker class>>versionString
and give it some new value (probably change from '4.5.4' to '4.6.0' given
that it's a fairly noteworthy change).
I'll try to get caught up and help with any testing you may need as soon
as time permits.
More information about the Vm-dev