harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From var...@apache.org
Subject svn commit: r541618 - /harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32InstCodeSelector.cpp
Date Fri, 25 May 2007 11:19:01 GMT
Author: varlax
Date: Fri May 25 04:19:00 2007
New Revision: 541618

URL: http://svn.apache.org/viewvc?view=rev&rev=541618
Log:
Regression fix for HARMONY-3954

Modified:
    harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32InstCodeSelector.cpp

Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32InstCodeSelector.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32InstCodeSelector.cpp?view=diff&rev=541618&r1=541617&r2=541618
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32InstCodeSelector.cpp
(original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32InstCodeSelector.cpp
Fri May 25 04:19:00 2007
@@ -2540,11 +2540,20 @@
         case OpndSize_8:   mn = Mnemonic_MOVS8; break;
         case OpndSize_16:  mn = Mnemonic_MOVS16; break;
         case OpndSize_32:  mn = Mnemonic_MOVS32; break;
-        case OpndSize_64: {
-                            appendInsts(irManager.newInst(Mnemonic_SHL, counter, irManager.newImmOpnd(counterType,
(int32)1)));
-                            mn = Mnemonic_MOVS32;
-                          }
-                          break;
+        case OpndSize_64: 
+            {
+                /**
+                 * FIXME 
+                 * Currently JIT erroneously supposes that compressed mode is always on.
+                 * So if type is object, it is actually compressed (32-bit sized).
+                 * But IRManager::getTypeSize() "correctly" returns OpndSize_64.
+                 */
+                if (!srcAddrType->getPointedToType()->isObject()) {
+                    appendInsts(irManager.newInst(Mnemonic_SHL, counter, irManager.newImmOpnd(counterType,
(int32)1)));
+                }
+                mn = Mnemonic_MOVS32;
+            }
+            break;
         default: assert(0); mn = Mnemonic_MOVS32; break;
     }
     Inst* copyInst = irManager.newInst(mn,dstAddrReg,srcAddrReg,counter);



Mime
View raw message