Return-Path: Delivered-To: apmail-harmony-commits-archive@www.apache.org Received: (qmail 42177 invoked from network); 21 Dec 2006 10:31:55 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 21 Dec 2006 10:31:55 -0000 Received: (qmail 60453 invoked by uid 500); 21 Dec 2006 10:32:02 -0000 Delivered-To: apmail-harmony-commits-archive@harmony.apache.org Received: (qmail 60354 invoked by uid 500); 21 Dec 2006 10:32:02 -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 60345 invoked by uid 99); 21 Dec 2006 10:32:02 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 21 Dec 2006 02:32:02 -0800 X-ASF-Spam-Status: No, hits=-9.4 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; Thu, 21 Dec 2006 02:31:54 -0800 Received: by eris.apache.org (Postfix, from userid 65534) id 12EFB1A981D; Thu, 21 Dec 2006 02:31:05 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r489317 - /harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32RCE.cpp Date: Thu, 21 Dec 2006 10:31:04 -0000 To: commits@harmony.apache.org From: varlax@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20061221103105.12EFB1A981D@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: varlax Date: Thu Dec 21 02:31:04 2006 New Revision: 489317 URL: http://svn.apache.org/viewvc?view=rev&rev=489317 Log: Applied HARMONY-2830 EUT org.eclipse.jdt.core.tests.dom.RunAllTests test case crashes in JIT. Tested on SUSE9@ia32, SUSE9@x64. Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32RCE.cpp Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32RCE.cpp URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32RCE.cpp?view=diff&rev=489317&r1=489316&r2=489317 ============================================================================== --- harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32RCE.cpp (original) +++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32RCE.cpp Thu Dec 21 02:31:04 2006 @@ -124,7 +124,8 @@ if(inst->getOpnd(defCount+1)->isPlacedIn(OpndKind_Imm)) { //try to change conditional instruction to make combination available to optimize cmpOp = inst->getOpnd(defCount); - Inst * newCondInst; Mnemonic mnem; + Inst * newCondInst = NULL; + Mnemonic mnem; int64 val = inst->getOpnd(defCount+1)->getImmValue(); if (val == 0) { @@ -142,10 +143,17 @@ if (condInst->hasKind(Inst::Kind_BranchInst)) { BranchInst* br = (BranchInst*)condInst; newCondInst = irManager->newBranchInst(mnem,br->getTrueTarget(), br->getFalseTarget(), condInst->getOpnd(0)); - } else if (condInst->getForm() == Inst::Form_Native ) { - newCondInst = irManager->newInst(mnem, condInst->getOpnd(0), condInst->getOpnd(1)); } else { - newCondInst = irManager->newInstEx(mnem, condInst->getOpndCount(Inst::OpndRole_InstLevel|Inst::OpndRole_Def), condInst->getOpnd(0), condInst->getOpnd(1)); + Inst::Opnds defs(condInst,Inst::OpndRole_Def|Inst::OpndRole_Explicit); + if (baseMnem == Mnemonic_CMOVcc) { + Inst::Opnds uses(condInst,Inst::OpndRole_Use|Inst::OpndRole_Explicit); + newCondInst = irManager->newInst(mnem, condInst->getOpnd(defs.begin()), inst->getOpnd(uses.begin())); + } else if (baseMnem == Mnemonic_SETcc) { + newCondInst = irManager->newInst(mnem, condInst->getOpnd(defs.begin())); + } else { + assert(0); + continue; + } } newCondInst->insertAfter(condInst); condInst->unlink();