Login  Register

Re: Ring - model infrastructure for Pharo

Posted by Stéphane Ducasse on Dec 13, 2010; 8:49am
URL: https://forum.world.st/Ring-model-infrastructure-for-Pharo-tp3081971p3085099.html

Yes
Now this is the choice of veronica to know how many classes she wants because in addition to
class/instance there is also compiledMethod methodDefinition....

Stef


On Dec 12, 2010, at 1:47 PM, Igor Stasenko wrote:

> On 12 December 2010 08:41, Stéphane Ducasse <[hidden email]> wrote:
>>
>> On Dec 11, 2010, at 8:35 PM, Igor Stasenko wrote:
>>
>>> CompiledMethod>>#methodNode
>>> is a conversion method
>>> and as any conversion i would prefer it be prefixed with 'as' , i.e.
>>> #asMethodNode
>>>
>>> #stringVersion is used only in MessageTrace in my image.
>>>
>>> Concerning #stringVersion:
>>> i really don't have an idea what this stuff doing there?
>>> Why a method reference allows putting an arbitrary data (strings)
>>> there by various tools?
>>
>> :)
>>
>> because it was handy and cool to have a holder of anything from the tools point of view.
>> And this is why we will clean that :)
>>
>>>
>>> Then maybe better call it 'annotation' , and correspondingly #defaultAnnotation,
>>> so we will know that this field used for annotations by different tools?
>>
>>
>>
>>>
>>> About #isMeta and friends:
>>> they serve nothing , but introducing a lot of ad-hoc logic with code
>>> branches all over the places.
>>> We should learn how to use message dispatching better :)
>>
>> this is not always that simple.
>>
>>> IMO, the 'theClass' ivar should be capable answering this message,
>>> along with #name, which gives the name of a class.
>>> Method reference in its 'theClass' ivar instead of symbol, should hold
>>> either real class object (or metaclass object),
>>
>> No because you can be analysing an off-image
>> code or not yet installed code. So you cannot rely on the fact that the real class is reachable.
>>
> i see no problem with offline representation.
> You still won't need 'isMeta' in method definition, because you have a
> following model:
>
> instance side method ref -> some class proxy
> class side method ref -> some metaclass proxy
>
> sure you can leave #isMeta in method reference which simply redirects
> the request to its 'theClass' variable:
>
> isMeta
>  ^ theClass isMeta
>
> voila.
>
> A CompiledMethod makes no difference between class/metaclass, its only
> holds a reference  to the
> behavior it installed in:
>
> method := (Object class>>#initialize).
>
> method methodClass  ---> Object class
> method methodClass isMeta ---> true
> (Object class>>#initialize) methodClass name ---> 'Object class'
>
> So, since method references representing the CompiledMethod, they
> should not care as well.
>
>>> or a proxy (in same way as method reference is a proxy by itself).
>>>
>>>
>>> --
>>> Best regards,
>>> Igor Stasenko AKA sig.
>>>
>>
>>
>>
>
>
>
> --
> Best regards,
> Igor Stasenko AKA sig.
>