Return-Path: Delivered-To: apmail-harmony-commits-archive@www.apache.org Received: (qmail 3870 invoked from network); 25 May 2007 11:19:22 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 25 May 2007 11:19:22 -0000 Received: (qmail 48927 invoked by uid 500); 25 May 2007 11:19:27 -0000 Delivered-To: apmail-harmony-commits-archive@harmony.apache.org Received: (qmail 48832 invoked by uid 500); 25 May 2007 11:19:27 -0000 Mailing-List: contact commits-help@harmony.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@harmony.apache.org Delivered-To: mailing list commits@harmony.apache.org Received: (qmail 48820 invoked by uid 99); 25 May 2007 11:19:27 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 25 May 2007 04:19:27 -0700 X-ASF-Spam-Status: No, hits=-99.5 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 25 May 2007 04:19:21 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 945C61A981A; Fri, 25 May 2007 04:19:01 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r541618 - /harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32InstCodeSelector.cpp Date: Fri, 25 May 2007 11:19:01 -0000 To: commits@harmony.apache.org From: varlax@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070525111901.945C61A981A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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);