On 24/04/2013 15:20, Adam Goode wrote:
Bad news, I tried PolyML.Compiler.maxInlineSize := 1 and it still fails.
Any other ideas? If I were to work on 32-bit jumps, are there binary compatibility issues you can think of?
I think there could be problems because the offset used in the instruction that loads a value from the constant area at the end of the code is also 16-bit. That limits the distance from that instruction to the end of the code. However, it looks as though the jump instructions use signed 16-bit offsets where the other cases use unsigned. I've committed a change that uses unsigned 16-bit offsets for jumps and splits the 16-bit jumps into forward and backwards cases. Could you try this and see if it works? You will need to build the compiler (make compiler) to pick up the change. If not you're welcome to see if you can come up with a fix.
David