[squeak-dev] Is anyone else running a 64-bit image on a regular basis?

David Corking lists at dcorking.com
Mon Sep 8 14:45:07 UTC 2014


Thanks David for the fix. Very nice that the Smalltalk primitive can
just fail when the shift amount is too large.

Bert Freudenberg wrote:

>> Indeed. Not just C though.
>> In JavaScript I discovered that (42 << 32) == 42.

Thanks Bert.

Also confirmed on Google Chrome 36.0 (V8 3.26) and Node v0.10.

Right shift is the same (42 >> 32) == 42.
And (42 >> 35) == 5

Did you have to work around it when designing SqueakJS ? My guess is
not: I guess that the SqueakJS VM is a purely 32 bit machine, and that
this behaviour won't affect Smalltalk programs.

Have fun!
David

p.s.

I wonder if this is a restriction imposed by the language standard, or
is merely a side effect of a common implementation choice. The MDN
reference page says "Bitwise operators treat their operands as a
sequence of 32 bits".  Which, with hindsight, leaves shifts of more
than 31 bits undefined.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators

However, my naive reading of this paragraph of the ECMAScript 5
standard suggests that wrapping around a bit shift is just plain
wrong, and that it should yield 0 or fail (until a 64 bit Javascript
standard is written)
http://www.ecma-international.org/ecma-262/5.1/#sec-11.7


More information about the Squeak-dev mailing list