Registers allocated for 64-bit values should be contiguous.
Found in "Karl's Mortgage Calculator" from the market.
diff --git a/vm/compiler/codegen/arm/Codegen.c b/vm/compiler/codegen/arm/Codegen.c
index 65792be..d65023d 100644
--- a/vm/compiler/codegen/arm/Codegen.c
+++ b/vm/compiler/codegen/arm/Codegen.c
@@ -994,7 +994,8 @@
int dataOffset = offsetof(ArrayObject, contents);
int reg0, reg1, reg2, reg3;
- reg0 = selectFirstRegister(cUnit, vArray, false);
+ reg0 = selectFirstRegister(cUnit, vArray,
+ (size == LONG) || (size == DOUBLE));
reg1 = NEXT_REG(reg0);
reg2 = NEXT_REG(reg1);
reg3 = NEXT_REG(reg2);
@@ -1086,7 +1087,8 @@
int dataOffset = offsetof(ArrayObject, contents);
int reg0, reg1, reg2, reg3;
- reg0 = selectFirstRegister(cUnit, vArray, false);
+ reg0 = selectFirstRegister(cUnit, vArray,
+ (size == LONG) || (size == DOUBLE));
reg1 = NEXT_REG(reg0);
reg2 = NEXT_REG(reg1);
reg3 = NEXT_REG(reg2);