Jit: Fix for  2717275 First JIT bug reported by external developers

The JIT was incorrectly keeping a short value in a floating point
register rather than copying it to a core register before storing.
There was an assert to catch this case, but asserts don't fire in
production builds.

The fix is safe and simple - just exclude this case from the "optimization".

Change-Id: I33767c8a202b6fa36a19d918ac5b914a5e4e4de3
diff --git a/vm/compiler/codegen/arm/Thumb2/Factory.c b/vm/compiler/codegen/arm/Thumb2/Factory.c
index c7b52fd..3f1755e 100644
--- a/vm/compiler/codegen/arm/Thumb2/Factory.c
+++ b/vm/compiler/codegen/arm/Thumb2/Factory.c
@@ -748,9 +748,15 @@
 
     if (FPREG(rSrc)) {
         assert(SINGLEREG(rSrc));
-        assert((size == kWord) || (size == kSingle));
-        opCode = kThumb2Vstrs;
-        size = kSingle;
+        if ((size != kWord) && (size != kSingle)) {
+           /* Move float value into core register */
+           int tReg = dvmCompilerAllocTemp(cUnit);
+           dvmCompilerRegCopy(cUnit, tReg, rSrc);
+           rSrc = tReg;
+        } else {
+            opCode = kThumb2Vstrs;
+            size = kSingle;
+        }
     } else {
         if (size == kSingle)
             size = kWord;