Hi Benjamin. Yes, this is a known "problem".

Check http://forum.world.st/problem-with-CompiledMethod-equality-tt2221276.html#a2221276

2010/9/9 Eliot Miranda <eliot.miranda@gmail.com>


2010/9/9 Benjamin Van Ryseghem <benjamin.vanryseghem@gmail.com>

Hi everybody,


I wonder if it's normal than two different methods can have the same CompiledMethod ?

By example :

Class >> foo
��� 'foo'

and

Class >> foo2
��� 'foo'

If I evaluate (Class methodDict at: #foo) = (Class methodDict at: #foo2), it answers true.

Maybe the CompiledMethod >> = should test the source ?

There are many definitions of method equality. �If you ant to test the source you can test the source, (C >> #foo) getSourceFromFile asString = (C >> #foo2) getSourceFromFile asString. �You can test the decompilation of a method (C>>#foo) decompileString = (C>>#foo2) decompileString.

The current definition tests whether the bytecodes and literals are the same, not the selector or the source code. �That's a useful definition, but not the only one. �It is close to the decompile version but faster, and is useful in e.g. testing whether the compiler has changed, since if on recompiling a method is still = the compiler is producing the same bytecode for a compilation. �That's what I use it for and it's an important use.

cheers
Eliot




Ben

_______________________________________________
Pharo-project mailing list
Pharo-project@lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
Pharo-project@lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project