On 12 December 2010 08:41, Stéphane Ducasse <stephane.duca...@inria.fr> 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