--- Begin Message ---
Yes, due to the object layouts and strong connection of Object with VM, my idea 
can not be done that easily.

I want to add some information (instance variables like OID [object id]) to 
some objects of any kind (some objects = persistent objects).

I can do it with map (idenity as key, OID + other info as value), but I was 
afraid that the map would tend to be enormous.
Now (with all your feedback) I am inclined to think that this (map/dictionary) 
will be the only way.

Also - on some systems (like Gemstone), there is "dynamic instance variables" 
(just key/value pairs) and you can add some information to any object instance 
you want. I like this, but not possible in Pharo, right?

Thanks! pf


> I am having a little trouble understanding how adding instance
> variables to Object is supposed to work.  Where would an immediate
> object like a SmallInteger *put* such variables?  What does it even
> *mean* for 0 and 1 to have instance variables?  Do you really want
> to give an extra word of storage to *every* object in your system,
> or to just some, but potentially of any kind?
> 
> The usual technique is to use something like a WeakIdentityKeyDictionary.
> 
> On Mon, 14 Jan 2019 at 13:54, Petr Fischer via Pharo-users <
> [email protected]> wrote:
> 
> > It looks like I can't simply add statefull trait to the Object like this:
> >
> > ProtoObject subclass: #Object
> >         uses: TMyTrait
> >         instanceVariableNames: ''
> >         classVariableNames: 'DependentsFields'
> >         package: 'Kernel-Objects'
> >
> > After this, Pharo 7 VM goes to 100% of CPU usage, several GB of RAM usage
> > and then crash.
> >
> > Or... what do you mean by "talents"? I found also this:
> > https://github.com/tesonep/pharo-talents
> >
> > Thanks, pf
> >
> >
> > > Talents with statefull traits will help you
> > >
> > > пт, 7 сент. 2018 г., 9:08 Marcus Denker <[email protected]>:
> > >
> > > >
> > > >
> > > > On 6 Sep 2018, at 23:35, Petr Fischer via Pharo-users <
> > > > [email protected]> wrote:
> > > >
> > > >
> > > > *From: *Petr Fischer <[email protected]>
> > > > *Subject: **adding instance variables (data) to the Object class*
> > > > *Date: *6 September 2018 at 23:35:26 CEST
> > > > *To: *[email protected]
> > > >
> > > >
> > > > Hello! Weird question: why I can't add instance variables to the Object
> > > > class (for example "oid" or something else)? Is it due to some internal
> > > > (and different) VM "class layouts"?
> > > >
> > > > Or - can I inject my own information to all existing objects (any
> > class)?
> > > >
> > > >
> > > > Behavior is a subclass of Object, too. So that means that you would
> > add a
> > > > ivar to all the classes, but for the VM an object can only be a class
> > that
> > > > has three ivars, and those
> > > > are accessed by offset. So if you add an ivar, you shift the offset —>
> > > > problem.
> > > >
> > > > As for “I want to add object specific state”: it would be nice to add
> > an
> > > > easy to use (and efficient) mechanism to do it.
> > > >
> > > > Marcus
> > > >
> >
> >


--- End Message ---

Reply via email to