On 04 Sep 2014, at 10:12, Yuriy Tymchuk <[email protected]> wrote:
> I’ve investigated an error.
>
> It occurs as follows:
> 1. Two class variables (assoc subclass) are checked for equality. This also
> checks the equality of assoc. values.
> 2. When two registers are checked for equality their code is checked. #code
> method in AJx64RipRegister throws an error.
>
> one thing that bothers me is that global variables comparison relies on their
> content’s functionality.
>
> On the other hand there is no way to compare AJx64RipRegister registers, as
> #= inherited from AJBaseReg will %100 crash.
>
I think the solution is to use #identityIncludes: in
whichSelectorsReferTo: literal special: specialFlag byte: specialByte
"Answer a set of selectors whose methods access the argument as a literal."
| who |
who := IdentitySet new.
self selectorsAndMethodsDo:
[:sel :method |
((method hasLiteral: literal) or: [specialFlag and: [method scanFor:
specialByte]])
ifTrue:
[((literal isVariableBinding) not
or: [method literals allButLast identityIncludes: literal])
ifTrue: [who add: sel]]].
^ who
> Uko
>
> On 04 Sep 2014, at 09:55, Yuriy Tymchuk <[email protected]> wrote:
>
>> Sure https://pharo.fogbugz.com/f/cases/13952/Pool-access-lookup-crash
>>
>> On 04 Sep 2014, at 09:44, Marcus Denker <[email protected]> wrote:
>>
>>> Hi,
>>>
>>> No, not yet reported. Can you open an issue?
>>>
>>>
>>> On Wed, Sep 3, 2014 at 8:43 PM, Yuriy Tymchuk <[email protected]> wrote:
>>> Hi everyone,
>>>
>>> when you go to AJx86Registers class, press “Show class variables” and
>>> select ‘IP’, then it crashes with: 'RIP register IP cannot be used only for
>>> relative addressing’. I couldn’t find related bug report, should I open one?
>>>
>>> <Screen Shot 2014-09-03 at 20.40.17.png>
>>>
>>> Uko
>>>
>>>
>>>
>>> --
>>> --
>>> Marcus Denker -- [email protected]
>>> http://www.marcusdenker.de
>>
>