On 04 Sep 2014, at 10:12, Yuriy Tymchuk <yuriy.tymchuk@me.com> 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 <yuriy.tymchuk@me.com> wrote:
Sure https://pharo.fogbugz.com/f/cases/13952/Pool-access-lookup-crash
On 04 Sep 2014, at 09:44, Marcus Denker <marcus.denker@inria.fr> wrote:
Hi,
No, not yet reported. Can you open an issue?
On Wed, Sep 3, 2014 at 8:43 PM, Yuriy Tymchuk <yuriy.tymchuk@me.com> 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 -- denker@acm.org http://www.marcusdenker.de