[Vm-dev] [ANN] ExperimentalBit [WAS] Re: Out of the box primitives
for bit in ObjectHeader?
Andreas Raab
andreas.raab at gmx.de
Fri Dec 23 14:15:01 UTC 2011
Is this my mail client or did you just send an HTML email message with
lots of weird yellow highlighting?
Just curious,
- Andreas
On 12/22/2011 19:29, Mariano Martinez Peck wrote:
>
>
>
> Hi guys. Last days I needed to migrate some old code I used to have in
> the VM for tracing objects usage. Luc Fabresse wanted also to be able
> to set and get the value of a bit in the object header to do some
> experiments. So...we thought it was a good idea to make it abstract an
> public. So....the following is only one morning work we did together
> with Luc, so don't expect that much. What we did is to do a very small
> change in the VM to use one free bit in the object header, and then we
> coded 3 primitives: one to get the value, one to set it and one to
> unmark all objects. The idea is that you can use this code and give
> semantics to the bit. This is just for experimenting and prototypes,
> not for production code since such bit in the object header may not be
> available.
>
> To download:
>
> Gofer it
> url: 'http://ss3.gemstone.com/ss/ExperimentalBit
> <http://ss3.gemstone.com/ss/ExperimentalBit>';
> package: 'ConfigurationOfExperimentalBit';
> load.
>
>
> Now.... you can read ConfigurationOfExperimentalBit class comment:
>
>
> ---------------
>
> ExperimentalBit is a small facade for setting and getting the value of
> a bit in the Object Header. It requires a special VM which supports
> the primitives to set and get the value of such bit. You can get a
> already compiled MacOSX VM from:
> https://gforge.inria.fr/frs/download.php/30042/CogMTVM-ExperimentalBit.zip
> <https://gforge.inria.fr/frs/download.php/30042/CogMTVM-ExperimentalBit.zip>.
> For more details read class comment of ExperimentalBitHandler.
>
> If you already have a compiled VM with the required primitives, then
> you can just load the image side part evaluating:
>
> ((Smalltalk at: #ConfigurationOfExperimentalBit) project version:
> '1.0') load.
>
> If you want to build a VM with the primitives we need, you need to
> download:
>
> ((Smalltalk at: #ConfigurationOfExperimentalBit) project version:
> '1.0') load: 'VMMakerGroup'.
>
> And then follow the steps to build the VM:
>
> - http://code.google.com/p/cog/
> - http://code.google.com/p/cog/wiki/Guide
>
> -----------
>
> And here ExperimentalBitHandler class comment:
>
> -----------
>
> ExperimentalBitHandler is a small facade for setting and getting the
> value of a bit in the Object Header. It requires a special VM which
> supports the primitives to set and get the value of such bit. You can
> get a already compiled MacOSX VM from:
> https://gforge.inria.fr/frs/download.php/30042/CogMTVM-ExperimentalBit.zip
> <https://gforge.inria.fr/frs/download.php/30042/CogMTVM-ExperimentalBit.zip>.
>
> To know which version of the VM you have to use to compile, check the
> dependencies in ConfigurationOfExperimentalBit and also the
> 'description' of it. For example, if version 1.0 it depends on 'CogVM'
> version '3.7'. In the description of version 1.0 you can also read
> that the used Git version of the platform code was
> 4a65655f0e419248d09a2502ea13b6e787992691 from the blessed repo.
>
> Basically, there are 3 operations: set the bit to a specific, get the
> value of the bit and turn off the bit of all objects. Examples:
>
> 'aString' experimentalBit: true.
> 'astring ' experimentalBit.
> Date today experimentalBit: false.
> Date today experimentalBit.
> ExperimentalBitHandler turnOffExperimentalBitOfAllObjects.
>
> For more details see ExperimentalBitTest.
>
> -------------
>
>
>
> Happy Christmats for all the Smalltalk hackers!!!
>
>
> --
> Mariano
> http://marianopeck.wordpress.com <http://marianopeck.wordpress.com/>
>
>
>
> On Wed, Dec 14, 2011 at 1:24 PM, Mariano Martinez Peck
> <marianopeck at gmail.com <mailto:marianopeck at gmail.com>> wrote:
>
> Hi guys. As you may notice, I always try to push in the direction
> of a VM where we can have both things: a) a really cooler super
> fast VM for production super critical applications and b) the
> most-flexible-possible VM for doing reasearh and experiment.
>
> Now I was thinking the following: we have one free bit in the
> ObjectHeader. Let's say you are experimenting with something and
> you would like to tag objects, such as, "traversed", "processes",
> "isProxy", etc. To do that small experiment you need to modify the
> VM, adapt the bit, code the primitives, build the VM, put the
> smalltalk side part etc etc. So I was thinking why not providing
> such small functionality out of the box? the idea would be not to
> give semantics to the bit since each user will do that. So we just
> provide the VM with 2 primtives, one to get the value
> (#getBitValue) and one to set it (#setBitTo:). Choose the names
> you want.
>
> Then we do not integrate nothing in our images that use such bit,
> there won't be colisions. Then each guy who wants to experiments
> with that, can use the primitives and do what he wants.
>
> Some people is doing something with its bit: Jean Batiptse is
> doing XXX, I am doing YYY, etc. Either in his work or mine, there
> are much more changes that just that bit, so in anyway, I will end
> up needing my own VM.
>
> Finally, I could help in providing the code if it is needed.
>
> So, what do you think?
>
> --
> Mariano
> http://marianopeck.wordpress.com
>
>
>
>
> --
> Mariano
> http://marianopeck.wordpress.com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20111223/497d6c94/attachment.htm
More information about the Vm-dev
mailing list