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 <[email protected]> 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.
> 


Reply via email to