On 15.09.2011 17:27, Mariano Martinez Peck wrote:
Hi guys. I am having a problem with the integration of issue 4538:
http://code.google.com/p/pharo/issues/detail?id=4538
I am serializing CompiledMethods with Fuel and then I materialize
them. To test they are correct, I use #=
So far it was working correctly, but now for the materialized
method it says they are not equal. The problem is that #= is
failing in
(self sameLiteralsAs: aCompiledMethod)
And inside that method, it is failing because (literal1 ==
literal2 or: [ literal1 literalEqual: literal2 ])
answers false.
So... why literal1 literalEqual: literal2 answers false? from
what I can say, having that selector: "literalEqual", then both
MUST be equal, because they are.
The problem is that it was added:
Association >> literalEqual: otherLiteral
"Answer true if the receiver and otherLiteral represent the
same literal.
Variable bindings are literally equals only if identical.
This is how variable sharing works, by preserving identity and
changing only the value."
^self == otherLiteral
So....I am not sure I agree with this change.
Any idea how can we deal with this problem?
Cheers
--
Mariano
http://marianopeck.wordpress.com
The change is correct, here's an example:
Create a global:
Global := 1
Create a method:
foo
^Global
Serialize method, deserialize
Change value of global:
Global := 5.
foo should return 5, not 1.
Unless it's actually the same association as in the
SystemDictionary, this will not be true.
Cheers,
Henry