traps: don't delete entry after consuming it
authorBernhard Urban <lewurm@gmail.com>
Mon, 18 Jun 2012 16:39:17 +0000 (18:39 +0200)
committerBernhard Urban <lewurm@gmail.com>
Mon, 18 Jun 2012 16:39:17 +0000 (18:39 +0200)
see the source code comment. would be nice to enable deletion again

Mate/MethodPool.hs
tests/InstanceLong1.java

index 7a0cda170964a761e50affbfe0a3c31d43e940d0..f7038f3b1e1afdaa640d274ba1c5e2c39a4a954c 100644 (file)
@@ -50,7 +50,10 @@ getMethodEntry signal_from methodtable = do
           (InterfaceMethod _ (MethodInfo methname _ msig)) -> newMi methname msig
           _ -> error "getMethodEntry: no TrapCause found. abort."
         where newMi mn = MethodInfo mn (vmap M.! fromIntegral methodtable)
           (InterfaceMethod _ (MethodInfo methname _ msig)) -> newMi methname msig
           _ -> error "getMethodEntry: no TrapCause found. abort."
         where newMi mn = MethodInfo mn (vmap M.! fromIntegral methodtable)
-  setTrapMap $ M.delete w32_from tmap
+  -- bernhard (TODO): doesn't work with gnu classpath at some point. didn't
+  --                  figured out the problem yet :/ therefore, I have no
+  --                  testcase for replaying the situation.
+  -- setTrapMap $ M.delete w32_from tmap
   case M.lookup mi' mmap of
     Nothing -> do
       cls <- getClassFile cm
   case M.lookup mi' mmap of
     Nothing -> do
       cls <- getClassFile cm
index 5c7250e2f079228af7a963002cc3a3dafeb90c7f..e685c19d1728576c7a584c23f238ebb9e5eb0874 100644 (file)
@@ -7,6 +7,9 @@ public class InstanceLong1 {
                new InstanceLong1().a1337();
                new InstanceLong1().a0001();
                new InstanceLong1().a2050();
                new InstanceLong1().a1337();
                new InstanceLong1().a0001();
                new InstanceLong1().a2050();
+               new InstanceLong1().a2050();
+               new InstanceLong1().a2050();
+               new InstanceLong1().a2050();
        }
 
        public void a0001 () { System.out.printf("a0001\n"); }
        }
 
        public void a0001 () { System.out.printf("a0001\n"); }