You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by va...@apache.org on 2007/05/25 13:19:01 UTC
svn commit: r541618 -
/harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32InstCodeSelector.cpp
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);