[Vm-dev] heads-up on sqVirtualMachine harmonization

Eliot Miranda eliot.miranda at gmail.com
Thu Jun 16 19:06:50 UTC 2011


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)

OK?

best
Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20110616/cf5199ba/attachment.htm


More information about the Vm-dev mailing list