[Vm-dev] [ANN] ExperimentalBit [WAS] Re: Out of the box primitives for bit in ObjectHeader?

Mariano Martinez Peck marianopeck at gmail.com
Fri Dec 23 15:39:39 UTC 2011


On Fri, Dec 23, 2011 at 3:15 PM, Andreas Raab <andreas.raab at gmx.de> wrote:

>
>  Is this my mail client or did you just send an HTML email message with
> lots of weird yellow highlighting?
>
>
hahahaha weird. Yes, sometimes I run the gmail spell checker. My email
client is just the gmail web interface. So I think something weird happened
this time.
Maybe sending it before pressing "done" ?

Cheers



> 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';
>     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. 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.
>
> 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
>
>
>
> On Wed, Dec 14, 2011 at 1:24 PM, Mariano Martinez Peck <
> 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
>
>
>


-- 
Mariano
http://marianopeck.wordpress.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20111223/f8035eac/attachment-0001.htm


More information about the Vm-dev mailing list