David Griswold wrote:
Sorry, I'm not familiar with the Squeak VM, but why does Slang translate into untagged C arithmetic?
Because Slang is a subset that has been specifically chosen for translation to C. In other words it was choice made way back when the first version of the translator was written.
To ensure the same semantic subset, why can't you generate C that uses tagged arithmetic that traps on overflow, rather than enlarging? Low-bit tags are not that slow! You could still represent up to 512MB with 2 tag bits and signed arithmetic. And if you need more you just generate 64bit tagged integers, which would be fast on all new machines.
Then you should get the same semantics in Slang and in the simulator, modulo traps.
That would be a fun project (I wonder how different/similar it is to Ian's statically compiled idst version) but nothing I'm too eager to take on ;-)
Cheers, - Andreas