On Jan 16, 2019, at 6:28 AM, Petr Fischer via Pharo-users <pharo-users@lists.pharo.org> wrote:From: Petr Fischer <petr.fischer@me.com>Subject: Re: [Pharo-users] adding instance variables (data) to the Object classDate: January 16, 2019 at 6:28:44 AM PST
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! pfI 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 <
pharo-users@lists.pharo.org> 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, pfTalents with statefull traits will help youclass)?
����, 7 ��������. 2018 ��., 9:08 Marcus Denker <marcus.denker@inria.fr>:
On 6 Sep 2018, at 23:35, Petr Fischer via Pharo-users <
pharo-users@lists.pharo.org> wrote:
*From: *Petr Fischer <petr.fischer@me.com>
*Subject: **adding instance variables (data) to the Object class*
*Date: *6 September 2018 at 23:35:26 CEST
*To: *pharo-users@lists.pharo.org
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 (anyadd a
Behavior is a subclass of Object, too. So that means that you wouldthativar to all the classes, but for the VM an object can only be a classanhas 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 addeasy to use (and efficient) mechanism to do it.
Marcus