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. LucFabresse
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.
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 MacOSXVM 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:
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 MacOSXVM 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. ExperimentalBitHandlerturnOffExperimentalBitOfAllObjects.
On Wed, Dec 14, 2011 at 1:24 PM, Mariano
Martinez Peck <marianopeck@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.