Known problem https://pharo.manuscript.com/f/cases/20119/basicIdentityHash-and-only-basicIdentityHash-MUST-be-defined-in-every-immediate-class https://pharo.manuscript.com/f/cases/20649/basicIdentityHash-and-only-basicIdentityHash-MUST-be-defined-in-every-immediate-class I thought it was resolved?
2018-01-07 15:38 GMT+01:00 Stephane Ducasse <[email protected]>: > https://github.com/pharo-project/pharo/pull/653 > > > > On Sun, Jan 7, 2018 at 3:14 PM, Stephane Ducasse > <[email protected]> wrote: > > Tx I added the discussion to > > https://pharo.fogbugz.com/f/cases/20936/64bit-primitiveFailure-for-1-0- > largeIdentityHash > > > > Stef > > > > On Sun, Jan 7, 2018 at 11:18 AM, Max Leske <[email protected]> wrote: > >> That seems to fix it. SmallFloat64 needs to implement #basicIdentityHash > >> with primitive 171. Thanks Eliot. > >> > >> > >> > >> On 7 January 2018 at 06:19:18, Eliot Miranda ([email protected]) > >> wrote: > >> > >> Hi Ben, > >> > >> On Sat, Jan 6, 2018 at 8:47 PM, Ben Coman <[email protected]> wrote: > >>> > >>> With Linux 64 bit image > >>> TestRunner running FLBinaryFileStreamSerializationTest > >>> produces error "PrimitiveFailed: primitive #basicIdentityHash in > >>> SmallFloat64 failed" > >> > >> > >> I suspect the SmallFloat64 basicIdentityHash method is missing or using > the > >> wrong primitive number. Here's what happens in Squeak: > >> > >> 1.0 class -> 1.0 identityHash hex -> ((1.0 class > whichClassIncludesSelector: > >> #identityHash) >> #identityHash) primitive > >> SmallFloat64->'16r7F0000000000000'->171 > >> > >> And primitive 171 is the primitiveImmediateAsInteger primitive that > converts > >> SmallIntegers to themselves, Characters to their integer codes, and > >> SmallFloat64 to an integer representing their bits. e.g. > >> > >> #(-0.0 0.0 -1.0 1.0) collect: [:n| n -> n identityHash hex -> (n > >> identityHash bitAnd: 2 << 64 - 1) hex] > >> {-0.0->'-16r1000000000000000'->'16r1F000000000000000' . > >> 0.0->'16r0'->'16r0' . > >> -1.0->'-16r810000000000000'->'16r1F7F0000000000000' . > >> 1.0->'16r7F0000000000000'->'16r7F0000000000000'} > >> > >> SmallFloat64>>identityHash > >> "Answer an integer unique to the receiver." > >> <primitive: 171> > >> ^self primitiveFailed > >> > >> HTH > >> > >>> > >>> The same error occurs evaluating... > >>> 1.0 largeIdentityHash > >>> which works fine on 32-bit. > >>> > >>> > >>> https://pharo.fogbugz.com/f/cases/20936/64bit- > primitiveFailure-for-1-0-largeIdentityHash > >>> > >>> Build information: > >>> Pharo-7.0+alpha.build.409.sha.bb4eaaf976e3fb148b33b6d87598022b77329768 > (64 > >>> Bit) > >>> CoInterpreter VMMaker.oscog-eem.2295 Dec 21 2017 > >>> StackToRegisterMappingCogit VMMaker.oscog-eem.2297 Dec 21 2017 > >>> VM: 201712211450 > >>> Unix built on Dec 21 2017 14:53:19 Compiler: 4.8.4 > >>> > >>> cheers -ben > >> > >> > >> > >> > >> -- > >> _,,,^..^,,,_ > >> best, Eliot > >
