X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=Mate%2FMethodPool.hs;h=f7038f3b1e1afdaa640d274ba1c5e2c39a4a954c;hb=4ed5ada925c4e3d4641a8e897114c36ff633b329;hp=2a3cfed4364c3eb936b2217b68eb8440246b0c5b;hpb=54be3c9d4d75913b62865f844109537689c881c0;p=mate.git diff --git a/Mate/MethodPool.hs b/Mate/MethodPool.hs index 2a3cfed..f7038f3 100644 --- a/Mate/MethodPool.hs +++ b/Mate/MethodPool.hs @@ -45,12 +45,15 @@ getMethodEntry signal_from methodtable = do let mi = tmap M.! w32_from let mi'@(MethodInfo method cm sig) = case mi of - (MI x) -> x - (VI _(MethodInfo methname _ msig)) -> - MethodInfo methname (vmap M.! fromIntegral methodtable) msig - (II _ (MethodInfo methname _ msig)) -> - MethodInfo methname (vmap M.! fromIntegral methodtable) msig - _ -> error "getMethodEntry: no trapInfo. abort." + (StaticMethod x) -> x + (VirtualMethod _ (MethodInfo methname _ msig)) -> newMi methname msig + (InterfaceMethod _ (MethodInfo methname _ msig)) -> newMi methname msig + _ -> error "getMethodEntry: no TrapCause found. abort." + where newMi mn = MethodInfo mn (vmap M.! fromIntegral methodtable) + -- 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