trapmap: delete entry after information is consumed
authorBernhard Urban <lewurm@gmail.com>
Sun, 20 May 2012 20:10:36 +0000 (22:10 +0200)
committerBernhard Urban <lewurm@gmail.com>
Sun, 20 May 2012 20:10:36 +0000 (22:10 +0200)
Mate/ClassPool.hs
Mate/MethodPool.hs

index 0f1828981f1af5c4c23c4132132ff592656ff011..e476c8b5b92d47b05ff0f2c7a1c0c38b95766915 100644 (file)
@@ -97,6 +97,7 @@ getStaticFieldAddr from = do
   trapmap <- getTrapMap
   let w32_from = fromIntegral from
   let sfi = trapmap M.! w32_from
+  setTrapMap $ M.delete w32_from trapmap
   case sfi of
     (SFI (StaticFieldInfo cls field)) -> getStaticFieldOffset cls field
     _ -> error "getFieldAddr: no trapInfo. abort"
index 2a3cfed4364c3eb936b2217b68eb8440246b0c5b..44e0545cf599980a17c72779009b6bdc068e301c 100644 (file)
@@ -51,6 +51,7 @@ getMethodEntry signal_from methodtable = do
           (II _ (MethodInfo methname _ msig)) ->
               MethodInfo methname (vmap M.! fromIntegral methodtable) msig
           _ -> error "getMethodEntry: no trapInfo. abort."
+  setTrapMap $ M.delete w32_from tmap
   case M.lookup mi' mmap of
     Nothing -> do
       cls <- getClassFile cm