[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