You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by mf...@apache.org on 2007/12/07 11:32:40 UTC

svn commit: r602061 - in /harmony/enhanced/drlvm/trunk: src/test/regression/H4785/ vm/jitrino/config/em64t/ vm/jitrino/config/ia32/ vm/jitrino/src/codegenerator/ia32/ vm/jitrino/src/optimizer/ vm/jitrino/src/shared/

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 @@
+<!-- 
+    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. -->
+
+<project name="RUN HARMONY-4785 Regression Test">
+    <target name="run-test">
+        <run-junit-test 
+             test="org.apache.harmony.drlvm.tests.regression.h4785.Test"
+             vmarg="-Xem:opt">
+        </run-junit-test>
+
+        <run-junit-test 
+             test="org.apache.harmony.drlvm.tests.regression.h4785.Test"
+             vmarg="-Xem:server_static">
+        </run-junit-test>
+
+    </target>
+</project>
+

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<Node*, Node*> 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<Node*, Node*>::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;
     }
 }