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

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

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

Mariano Martinez Peck
 
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 <[hidden email]> 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

Reply | Threaded
Open this post in threaded view
|

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

Andreas.Raab
 
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';
    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 <[hidden email]> 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

Reply | Threaded
Open this post in threaded view
|

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

Bob Arning-2
 
Looks like it might be a spell-checker artifact. Googling the class string it used suggests this is not an uncommon occurrence.

Cheers,
Bob

On 12/23/11 9:15 AM, Andreas Raab wrote:
Is this my mail client or did you just send an HTML email message with lots of weird yellow highlighting?
Reply | Threaded
Open this post in threaded view
|

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

Mariano Martinez Peck
In reply to this post by Andreas.Raab
 


On Fri, Dec 23, 2011 at 3:15 PM, Andreas Raab <[hidden email]> 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 <[hidden email]> 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

Reply | Threaded
Open this post in threaded view
|

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

Stefan Marr-3


On 23 Dec 2011, at 16:39, Mariano Martinez Peck wrote:

> 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" ?  

The best thing you can do is to tell it that it is supposed to send plain text, no HTML.

The mailing list archives will love you for it.
People trying to properly quote you will love you for it.

Would be a nice christmas gift.

Thanks
Stefan


--
Stefan Marr
Software Languages Lab
Vrije Universiteit Brussel
Pleinlaan 2 / B-1050 Brussels / Belgium
http://soft.vub.ac.be/~smarr
Phone: +32 2 629 2974
Fax:   +32 2 629 3525

Reply | Threaded
Open this post in threaded view
|

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

Levente Uzonyi-2
 
On Fri, 23 Dec 2011, Stefan Marr wrote:

>
>
> On 23 Dec 2011, at 16:39, Mariano Martinez Peck wrote:
>
>> 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" ?
>
> The best thing you can do is to tell it that it is supposed to send plain text, no HTML.
>
> The mailing list archives will love you for it.
> People trying to properly quote you will love you for it.

+1 :)


Levente

>
> Would be a nice christmas gift.
>
> Thanks
> Stefan
>
>
> --
> Stefan Marr
> Software Languages Lab
> Vrije Universiteit Brussel
> Pleinlaan 2 / B-1050 Brussels / Belgium
> http://soft.vub.ac.be/~smarr
> Phone: +32 2 629 2974
> Fax:   +32 2 629 3525
>
>