Return-Path: Delivered-To: apmail-harmony-dev-archive@www.apache.org Received: (qmail 34327 invoked from network); 8 Dec 2007 09:15:36 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 8 Dec 2007 09:15:36 -0000 Received: (qmail 48708 invoked by uid 500); 8 Dec 2007 09:15:23 -0000 Delivered-To: apmail-harmony-dev-archive@harmony.apache.org Received: (qmail 48681 invoked by uid 500); 8 Dec 2007 09:15:23 -0000 Mailing-List: contact dev-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 dev@harmony.apache.org Received: (qmail 48670 invoked by uid 99); 8 Dec 2007 09:15:23 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 08 Dec 2007 01:15:23 -0800 X-ASF-Spam-Status: No, hits=2.0 required=10.0 tests=HTML_MESSAGE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of sergey.kuksenko@gmail.com designates 64.233.182.190 as permitted sender) Received: from [64.233.182.190] (HELO nf-out-0910.google.com) (64.233.182.190) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 08 Dec 2007 09:15:03 +0000 Received: by nf-out-0910.google.com with SMTP id k4so517876nfd for ; Sat, 08 Dec 2007 01:15:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to:subject:mime-version:content-type; bh=FbzcEEaX2wZcZvAGLYqey0TgeRyH+NfT/o+3wAIIn+A=; b=mnDh1vR0VlnV2sNET19iv5xeKcV5dAioosUqSzXOEPRoAp9xou60zLxIJawt13PAvhNd1QdqoRDUqDUGnoLVPbFnc65otrre4KRt0l3IBWswZmETtfKOysccll1CF0QvhCnFQSbK8rOQ8CTo3ksLcCXZvPxn/Gs7AXD5uCwX5EI= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:mime-version:content-type; b=bT6s6eW2OxzB1idJcQ9MjJP2NWnhhcgLOKIFz8L9uwhhNW0UkPJ6uUZ3Z04bGxFFeW5sO+W8kKHbwfnN0rkVTKo7OXvB6UFrSoRDLlJRkke5YANxbLXhbybeyRjNhgAvTFwhw7dPpaYzl0QrsRoJUvb6DQui8Tou4tqLz7GMuxM= Received: by 10.86.84.5 with SMTP id h5mr3108032fgb.1197105304388; Sat, 08 Dec 2007 01:15:04 -0800 (PST) Received: by 10.86.84.2 with HTTP; Sat, 8 Dec 2007 01:15:04 -0800 (PST) Message-ID: <253b20230712080115w709d5048g449f7c3f0f19b515@mail.gmail.com> Date: Sat, 8 Dec 2007 12:15:04 +0300 From: "Sergey Kuksenko" To: dev@harmony.apache.org, mfursov@apache.org Subject: Huge performance regression commit: svn commit: r602061 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_3278_16487232.1197105304384" X-Virus-Checked: Checked by ClamAV on apache.org ------=_Part_3278_16487232.1197105304384 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi All, I have to notify you that this commit causes -10% performance regression on some benchmarks. >From my point of view it is not accectable. On 12/7/07, mfursov@apache.org wrote: > > Author: mfursov > Date: Fri Dec 7 02:32:39 2007 > New Revision: 602061 > > URL: http://svn.apache.org/viewvc?rev=602061&view=rev > Log: > Fix for HARMONY-4785 [drlvm][jit][opt] EHWA asserts in server_static mode > +Regression tests > +OSR optimization was disabled in all modes. It will be reenabled after M4 > release. > > > Added: > harmony/enhanced/drlvm/trunk/src/test/regression/H4785/ > harmony/enhanced/drlvm/trunk/src/test/regression/H4785/Test.java > (with props) > harmony/enhanced/drlvm/trunk/src/test/regression/H4785/run.test.xml > (with props) > Modified: > harmony/enhanced/drlvm/trunk/vm/jitrino/config/em64t/opt.emconf > harmony/enhanced/drlvm/trunk/vm/jitrino/config/em64t/server.emconf > > harmony/enhanced/drlvm/trunk/vm/jitrino/config/em64t/server_static.emconf > harmony/enhanced/drlvm/trunk/vm/jitrino/config/ia32/opt.emconf > harmony/enhanced/drlvm/trunk/vm/jitrino/config/ia32/server.emconf > > harmony/enhanced/drlvm/trunk/vm/jitrino/config/ia32/server_static.emconf > > harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32GCSafePoints.cpp > harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/FlowGraph.cpp > harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/inliner.cpp > harmony/enhanced/drlvm/trunk/vm/jitrino/src/shared/BitSet.cpp > > Added: harmony/enhanced/drlvm/trunk/src/test/regression/H4785/Test.java > URL: > http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/src/test/regression/H4785/Test.java?rev=602061&view=auto > > ============================================================================== > --- harmony/enhanced/drlvm/trunk/src/test/regression/H4785/Test.java > (added) > +++ harmony/enhanced/drlvm/trunk/src/test/regression/H4785/Test.java Fri > Dec 7 02:32:39 2007 > @@ -0,0 +1,46 @@ > +/* > + * Licensed to the Apache Software Foundation (ASF) under one or more > + * contributor license agreements. See the NOTICE file distributed with > + * this work for additional information regarding copyright ownership. > + * The ASF licenses this file to You under the Apache License, Version > 2.0 > + * (the "License"); you may not use this file except in compliance with > + * the License. You may obtain a copy of the License at > + * > + * http://www.apache.org/licenses/LICENSE-2.0 > + * > + * Unless required by applicable law or agreed to in writing, software > + * distributed under the License is distributed on an "AS IS" BASIS, > + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or > implied. > + * See the License for the specific language governing permissions and > + * limitations under the License. > + */ > +package org.apache.harmony.drlvm.tests.regression.h4785; > + > +import junit.framework.TestCase; > + > +public class Test extends TestCase { > + > + > + > + public void test() { > + blit(1, null); > + } > + > + static boolean f = true; > + static void blit(int destX, byte[] destData) { > + if (f) return; > + int dx = destX; > + int indexq = 0; > + int dtype=1; > + for(; dx > 0; ) { > + switch(dtype) { > + default: > + break; > + case 10: // '\n' > + indexq = destData[0]; > + break; > + } > + } > + } > + > +} > > Propchange: > harmony/enhanced/drlvm/trunk/src/test/regression/H4785/Test.java > > ------------------------------------------------------------------------------ > svn:eol-style = native > > Added: harmony/enhanced/drlvm/trunk/src/test/regression/H4785/run.test.xml > URL: > http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/src/test/regression/H4785/run.test.xml?rev=602061&view=auto > > ============================================================================== > --- harmony/enhanced/drlvm/trunk/src/test/regression/H4785/run.test.xml > (added) > +++ harmony/enhanced/drlvm/trunk/src/test/regression/H4785/run.test.xml > Fri Dec 7 02:32:39 2007 > @@ -0,0 +1,31 @@ > + > + > + > + > + + test="org.apache.harmony.drlvm.tests.regression.h4785.Test" > + vmarg="-Xem:opt"> > + > + > + + test="org.apache.harmony.drlvm.tests.regression.h4785.Test" > + vmarg="-Xem:server_static"> > + > + > + > + > + > > Propchange: > harmony/enhanced/drlvm/trunk/src/test/regression/H4785/run.test.xml > > ------------------------------------------------------------------------------ > svn:eol-style = native > > Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/config/em64t/opt.emconf > URL: > http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/config/em64t/opt.emconf?rev=602061&r1=602060&r2=602061&view=diff > > ============================================================================== > --- harmony/enhanced/drlvm/trunk/vm/jitrino/config/em64t/opt.emconf > (original) > +++ harmony/enhanced/drlvm/trunk/vm/jitrino/config/em64t/opt.emconf Fri > Dec 7 02:32:39 2007 > @@ -24,7 +24,7 @@ > > -XX:jit.CS_OPT.path=opt_init,translator,optimizer,hir2lir,codegen > > --XX:jit.CS_OPT.path.optimizer=ssa > ,devirt,hlo_api_magic,inline,purge,osr_path,escape_path,dce,uce,memopt,simplify,dce,uce,lower,dessa,statprof > +-XX:jit.CS_OPT.path.optimizer=ssa > ,devirt,hlo_api_magic,inline,purge,osr_path-,escape_path,dce,uce,memopt,simplify,dce,uce,lower,dessa,statprof > -XX:jit.CS_OPT.path.osr_path=simplify,dce,uce,gcm,osr > -XX:jit.CS_OPT.path.escape_path=hvn,simplify,dce,uce,escape > -XX:jit.CS_OPT.path.codegen=lock_method > ,bbp,gcpoints,cafl,dce1,i8l-,api_magic,early_prop-,itrace-,native,constraints,dce2,regalloc,spillgen,layout,copy,rce-,stack,break-,iprof-,emitter!,si_insts,gcmap,info,unlock_method > > Modified: > harmony/enhanced/drlvm/trunk/vm/jitrino/config/em64t/server.emconf > URL: > http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/config/em64t/server.emconf?rev=602061&r1=602060&r2=602061&view=diff > > ============================================================================== > --- harmony/enhanced/drlvm/trunk/vm/jitrino/config/em64t/server.emconf > (original) > +++ harmony/enhanced/drlvm/trunk/vm/jitrino/config/em64t/server.emconf Fri > Dec 7 02:32:39 2007 > @@ -69,7 +69,7 @@ > -XX:jit.SD1_OPT.arg.optimizer.vp_instrument.profile_abstract=true > > > --XX:jit.SD2_OPT.path.optimizer=ssa > ,simplify,dce,uce,devirt_virtual,edge_annotate,unguard,devirt_intf,hlo_api_magic,inline,purge,osr_path,escape_path,dce,uce,hvn,dce,uce,inline_helpers,purge,simplify,uce,dce,uce,abce,lower,dce,uce,memopt,reassoc,dce,uce,hvn,dce,uce,gcm,dessa,statprof > +-XX:jit.SD2_OPT.path.optimizer=ssa > ,simplify,dce,uce,devirt_virtual,edge_annotate,unguard,devirt_intf,hlo_api_magic,inline,purge,osr_path-,escape_path,dce,uce,hvn,dce,uce,inline_helpers,purge,simplify,uce,dce,uce,abce,lower,dce,uce,memopt,reassoc,dce,uce,hvn,dce,uce,gcm,dessa,statprof > -XX:jit.SD2_OPT.path.osr_path=simplify,dce,uce,gcm,osr > -XX:jit.SD2_OPT.path.escape_path=hvn,simplify,dce,uce,escape > -XX:jit.SD2_OPT.path.abce=classic_abcd > ,dce,uce,dessa,statprof,peel,ssa,hvn,simplify,dce,uce,memopt,dce,uce,dessa,fastArrayFill,ssa,statprof,dabce,dce,uce > > Modified: > harmony/enhanced/drlvm/trunk/vm/jitrino/config/em64t/server_static.emconf > URL: > http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/config/em64t/server_static.emconf?rev=602061&r1=602060&r2=602061&view=diff > > ============================================================================== > --- > harmony/enhanced/drlvm/trunk/vm/jitrino/config/em64t/server_static.emconf > (original) > +++ > harmony/enhanced/drlvm/trunk/vm/jitrino/config/em64t/server_static.emconf > Fri Dec 7 02:32:39 2007 > @@ -24,7 +24,7 @@ > > -XX:jit.SS_OPT.path=opt_init,translator,optimizer,hir2lir,codegen > > --XX:jit.SS_OPT.path.optimizer=ssa > ,simplify,dce,uce,statprof,devirt,hlo_api_magic,inline,purge,osr_path,simplify,dce,uce,hvn,dce,uce,dessa,statprof,peel,ssa,hvn,simplify,dce,uce,lower,dce,uce,memopt,reassoc,dce,uce,hvn,dce,uce,classic_abcd,dce,uce,gcm,dessa,statprof > +-XX:jit.SS_OPT.path.optimizer=ssa > ,simplify,dce,uce,statprof,devirt,hlo_api_magic,inline,purge,osr_path-,simplify,dce,uce,hvn,dce,uce,dessa,statprof,peel,ssa,hvn,simplify,dce,uce,lower,dce,uce,memopt,reassoc,dce,uce,hvn,dce,uce,classic_abcd,dce,uce,gcm,dessa,statprof > -XX:jit.SS_OPT.path.osr_path=simplify,dce,uce,gcm,osr > -XX:jit.SS_OPT.path.codegen=lock_method > ,bbp,gcpoints,cafl,dce1,i8l-,api_magic,early_prop-,itrace-,native,constraints,dce2,regalloc,spillgen,layout,copy,rce-,stack,break-,iprof-,emitter!,si_insts,gcmap,info,unlock_method > -XX:jit.SS_OPT.path.dce1=cg_dce > > Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/config/ia32/opt.emconf > URL: > http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/config/ia32/opt.emconf?rev=602061&r1=602060&r2=602061&view=diff > > ============================================================================== > --- harmony/enhanced/drlvm/trunk/vm/jitrino/config/ia32/opt.emconf > (original) > +++ harmony/enhanced/drlvm/trunk/vm/jitrino/config/ia32/opt.emconf Fri > Dec 7 02:32:39 2007 > @@ -24,7 +24,7 @@ > > -XX:jit.CS_OPT.path=opt_init > ,lock_method,translator,optimizer,hir2lir,codegen,unlock_method > > --XX:jit.CS_OPT.path.optimizer=ssa > ,devirt,hlo_api_magic,inline,purge,osr_path,simplify,dce,uce,lazyexc,throwopt,escape_path,dce,uce,memopt,simplify,dce,uce,lower,statprof,unroll,ssa,simplify,dce,uce,dessa,statprof > +-XX:jit.CS_OPT.path.optimizer=ssa > ,devirt,hlo_api_magic,inline,purge,osr_path-,simplify,dce,uce,lazyexc,throwopt,escape_path,dce,uce,memopt,simplify,dce,uce,lower,statprof,unroll,ssa,simplify,dce,uce,dessa,statprof > -XX:jit.CS_OPT.path.osr_path=simplify,dce,uce,gcm,osr > -XX:jit.CS_OPT.path.escape_path=hvn,simplify,dce,uce,escape > -XX:jit.CS_OPT.path.codegen=bbp > ,btr,gcpoints,cafl,dce1,i8l,api_magic,early_prop,peephole,itrace-,native,constraints,dce2,regalloc,spillgen,copy,i586,layout,rce+,stack,break-,iprof-,peephole,emitter!,si_insts,gcmap,info > > Modified: > harmony/enhanced/drlvm/trunk/vm/jitrino/config/ia32/server.emconf > URL: > http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/config/ia32/server.emconf?rev=602061&r1=602060&r2=602061&view=diff > > ============================================================================== > --- harmony/enhanced/drlvm/trunk/vm/jitrino/config/ia32/server.emconf > (original) > +++ harmony/enhanced/drlvm/trunk/vm/jitrino/config/ia32/server.emconf Fri > Dec 7 02:32:39 2007 > @@ -71,7 +71,7 @@ > > -XX:jit.SD2_OPT.path=opt_init,translator,optimizer,hir2lir,codegen > > --XX:jit.SD2_OPT.path.optimizer=ssa > ,simplify,dce,uce,devirt_virtual,edge_annotate,unguard,devirt_intf,hlo_api_magic,inline,purge,osr_path,simplify,dce,uce,lazyexc,throwopt,escape_path,inline_helpers,purge,simplify,uce,dce,uce,abce,lower,dce,uce,statprof,unroll,ssa,simplify,dce,uce,memopt,reassoc,dce,uce,hvn,dce,uce,gcm,dessa,statprof > +-XX:jit.SD2_OPT.path.optimizer=ssa > ,simplify,dce,uce,devirt_virtual,edge_annotate,unguard,devirt_intf,hlo_api_magic,inline,purge,osr_path-,simplify,dce,uce,lazyexc,throwopt,escape_path,inline_helpers,purge,simplify,uce,dce,uce,abce,lower,dce,uce,statprof,unroll,ssa,simplify,dce,uce,memopt,reassoc,dce,uce,hvn,dce,uce,gcm,dessa,statprof > -XX:jit.SD2_OPT.path.osr_path=simplify,dce,uce,gcm,osr > -XX:jit.SD2_OPT.path.escape_path=hvn,simplify,dce,uce,escape > -XX:jit.SD2_OPT.path.abce=classic_abcd > ,dce,uce,dessa,statprof,peel,ssa,hvn,simplify,dce,uce,memopt,dce,uce,dessa,fastArrayFill,ssa,statprof,dabce,dce,uce > > Modified: > harmony/enhanced/drlvm/trunk/vm/jitrino/config/ia32/server_static.emconf > URL: > http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/config/ia32/server_static.emconf?rev=602061&r1=602060&r2=602061&view=diff > > ============================================================================== > --- > harmony/enhanced/drlvm/trunk/vm/jitrino/config/ia32/server_static.emconf > (original) > +++ > harmony/enhanced/drlvm/trunk/vm/jitrino/config/ia32/server_static.emconf Fri > Dec 7 02:32:39 2007 > @@ -24,7 +24,7 @@ > > -XX:jit.SS_OPT.path=opt_init > ,lock_method,translator,optimizer,hir2lir,codegen,unlock_method > > --XX:jit.SS_OPT.path.optimizer=ssa > ,simplify,dce,uce,statprof,devirt,hlo_api_magic,inline,purge,osr_path,simplify,dce,uce,lazyexc,throwopt,statprof,hvn,dce,uce,dessa,statprof,peel,ssa,hvn,simplify,dce,uce,lower,dce,uce,unroll,ssa,simplify,dce,uce,memopt,reassoc,dce,uce,hvn,simplify,dce,uce,classic_abcd,dce,uce,gcm,dessa,statprof > +-XX:jit.SS_OPT.path.optimizer=ssa > ,simplify,dce,uce,statprof,devirt,hlo_api_magic,inline,purge,osr_path-,simplify,dce,uce,lazyexc,throwopt,statprof,hvn,dce,uce,dessa,statprof,peel,ssa,hvn,simplify,dce,uce,lower,dce,uce,unroll,ssa,simplify,dce,uce,memopt,reassoc,dce,uce,hvn,simplify,dce,uce,classic_abcd,dce,uce,gcm,dessa,statprof > -XX:jit.SS_OPT.path.osr_path=simplify,dce,uce,gcm,osr > -XX:jit.SS_OPT.path.codegen=bbp > ,btr,gcpoints,cafl,dce1,i8l,api_magic,early_prop,peephole,itrace-,native,constraints,dce2,regalloc,spillgen,copy,i586,layout,rce+,stack,break-,iprof-,peephole,emitter!,si_insts,gcmap,info > -XX:jit.SS_OPT.path.dce1=cg_dce > > Modified: > harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32GCSafePoints.cpp > URL: > http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32GCSafePoints.cpp?rev=602061&r1=602060&r2=602061&view=diff > > ============================================================================== > --- > harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32GCSafePoints.cpp > (original) > +++ > harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ia32/Ia32GCSafePoints.cpp > Fri Dec 7 02:32:39 2007 > @@ -181,7 +181,9 @@ > for (Inst* inst = (Inst*)node->getLastInst(); inst!=NULL; inst > = inst->getPrevInst()) { > if (inst->getOpndCount() == 0 && ((inst->getKind() == > Inst::Kind_MethodEndPseudoInst) > || (inst->getKind() == > Inst::Kind_MethodEntryPseudoInst)) > - || (inst->getMnemonic() == Mnemonic_NOP) ) { > + || (inst->getMnemonic() == Mnemonic_NOP > + || inst->getKind() == Inst::Kind_EmptyPseudoInst) > ) > + { > continue; > } > Opnd* opnd = inst->getOpnd(0); // VSH: 0 - ???? > > Modified: > harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/FlowGraph.cpp > URL: > http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/FlowGraph.cpp?rev=602061&r1=602060&r2=602061&view=diff > > ============================================================================== > --- harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/FlowGraph.cpp > (original) > +++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/FlowGraph.cpp > Fri Dec 7 02:32:39 2007 > @@ -891,6 +891,82 @@ > #endif > } > > +static void normalizePseudoThrow(IRManager& irm) { > +//the main idea of the method: > +//1. normalize loops -> make sure there is only one backedge > +//2. move pseudothrows to the source node of backedge > + > + OptPass::computeLoops(irm, true); > + LoopTree* lt = irm.getLoopTree(); > + if (!lt->hasLoops()) { > + return; > + } > + ControlFlowGraph& cfg = irm.getFlowGraph(); > + const Nodes& nodes = cfg.getNodes(); > + MemoryManager tmpMM("normalizePseudoThrow"); > + StlMap loopHeadToDispatchMap(tmpMM); > + Edges backedges(tmpMM); > + Edges edgesToRemove(tmpMM); > + for (Nodes::const_iterator it = nodes.begin(), end = nodes.end(); > it!=end; ++it) { > + Node* node = *it; > + Node* head = lt->getLoopHeader(node, false); > + if (head == NULL) { > + continue; > + } > + const Edges& edges = node->getOutEdges(); > + bool isBackedgeSrc = false; > + for (Edges::const_iterator ite = edges.begin(), ende = edges.end(); > ite!=ende; ++ite) { > + Edge* e = *ite; > + if (lt->isBackEdge(e)) { > + backedges.push_back(e); > + isBackedgeSrc = true; > + break; > + } > + } > + Inst* i = (Inst*)node->getLastInst(); > + bool isPseudoThrow = i->getOpcode() == Op_PseudoThrow; > + if (!isBackedgeSrc && isPseudoThrow) { > + i->unlink(); > + Edge* exceptionEdge = node->getExceptionEdge(); > + Node* dispatch = exceptionEdge->getTargetNode(); > + while (lt->getLoopHeader(dispatch, false) == head) { //select > dispatch that is out of the loop. Otherwise loop structure will be invalid > + dispatch = dispatch->getExceptionEdgeTarget(); > + assert(dispatch); > + } > + loopHeadToDispatchMap[head] = dispatch; > + edgesToRemove.push_back(exceptionEdge); > + } > + } > + > + for (Edges::const_iterator it = edgesToRemove.begin(), end = > edgesToRemove.end(); it!=end; ++it) { > + Edge* e = *it; > + cfg.removeEdge(e); > + } > + > + for (Edges::const_iterator it = backedges.begin(), end = > backedges.end(); it!=end; ++it) { > + Edge* backedge = *it; > + Node* node = backedge->getSourceNode(); > + Node* head = backedge->getTargetNode(); > + Inst* i = (Inst*)node->getLastInst(); > + bool isPseudoThrow = i->getOpcode() == Op_PseudoThrow; > + if (isPseudoThrow || node->isCatchBlock()) { > + continue; > + } > + Node* dispatch = node->getExceptionEdgeTarget(); > + if (!dispatch) { > + StlMap::const_iterator it2 = > loopHeadToDispatchMap.find(head); > + assert(it2!=loopHeadToDispatchMap.end()); > + dispatch = it2->second; > + } else { > + node = cfg.spliceBlockOnEdge(backedge, irm.getInstFactory > ().makeLabel()); > + } > + Inst* pi = irm.getInstFactory().makePseudoThrow(); > + pi->setBCOffset(head->getLabelInst()->getBCOffset()); > + node->appendInst(pi); > + cfg.addEdge(node, dispatch); > + } > +} > + > void FlowGraph::doTranslatorCleanupPhase(IRManager& irm) { > uint32 id = irm.getCompilationContext()->getCurrentSessionNum(); > const char* stage = "trans_cleanup"; > @@ -1073,15 +1149,16 @@ > } > } > // Remove extra PseudoThrow insts > - DeadCodeEliminator dce(irm); > - dce.removeExtraPseudoThrow(); > + normalizePseudoThrow(irm); > +// DeadCodeEliminator dce(irm); > +// dce.removeExtraPseudoThrow(); > > // > // a quick cleanup of unreachable and empty basic blocks > // > fg.purgeUnreachableNodes(); > fg.purgeEmptyNodes(false); > - > + > if (Log::isLogEnabled(LogStream::IRDUMP)) { > LogStream& irdump = Log::log(LogStream::IRDUMP); > Log::printStageEnd(irdump.out(), id, "TRANS", stage, stage); > > Modified: > harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/inliner.cpp > URL: > http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/inliner.cpp?rev=602061&r1=602060&r2=602061&view=diff > > ============================================================================== > --- harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/inliner.cpp > (original) > +++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/inliner.cpp Fri > Dec 7 02:32:39 2007 > @@ -1181,9 +1181,9 @@ > dce.eliminateUnreachableCode(); > assert(_toplevelIRM.getInSsa()); > OptPass::fixupSsa(_toplevelIRM); > - if (isPseudoThrowInserted) { > + /*if (isPseudoThrowInserted) { > dce.removeExtraPseudoThrow(); > - } > + }*/ > } > > void Inliner::compileAndConnectRegion(InlineNode* inlineNode, > CompilationContext& inlineCC) { > > Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/shared/BitSet.cpp > URL: > http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/shared/BitSet.cpp?rev=602061&r1=602060&r2=602061&view=diff > > ============================================================================== > --- harmony/enhanced/drlvm/trunk/vm/jitrino/src/shared/BitSet.cpp > (original) > +++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/shared/BitSet.cpp Fri > Dec 7 02:32:39 2007 > @@ -58,6 +58,7 @@ > // Constructors > // > > +static uint32* stub=(uint32*)0xDEADBEEF; > > BitSet::BitSet(MemoryManager& memManager, uint32 size) > :words(0), setSize(0), wordsCapacity(0), mm(memManager) > @@ -66,6 +67,8 @@ > { > alloc(size); > clear(); > + } else { > + words = stub; > } > } > > > > -- Best regards, --- Sergey Kuksenko. Intel Enterprise Solutions Software Division. ------=_Part_3278_16487232.1197105304384--