--- 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 ---
Re: [Pharo-users] adding instance variables (data) to the Object class
Petr Fischer via Pharo-users Wed, 16 Jan 2019 06:30:26 -0800
- [Pharo-users] adding instance variables (da... Petr Fischer via Pharo-users
- Re: [Pharo-users] adding instance vari... Marcus Denker
- Re: [Pharo-users] adding instance ... Denis Kudriashov
- Re: [Pharo-users] adding insta... Petr Fischer via Pharo-users
- Re: [Pharo-users] adding insta... Petr Fischer via Pharo-users
- Re: [Pharo-users] adding i... Sean P. DeNigris
- Re: [Pharo-users] adding i... Richard O'Keefe
- Re: [Pharo-users] add... Petr Fischer via Pharo-users
- Re: [Pharo-users]... James Foster
- Re: [Pharo-users]... Benoit St-Jean via Pharo-users
- Re: [Pharo-users] adding instance vari... Stephan Eggermont
