GC/MemoryManager: implemented evacuate
[mate.git] / Mate / GC.hs
index 5ddd6e2bab9245e9a17804a8cda3bd5444d29cae..b22af7af511d54e7fb71f6e0372bc8804dcfcd12 100644 (file)
@@ -6,12 +6,14 @@ module Mate.GC
 import Control.Monad
 import qualified Data.Set as S
 
-import Foreign.Ptr (IntPtr)
+import Foreign.Ptr (IntPtr, Ptr)
 
 class (Eq a, Ord a) => RefObj a where
   
   payload :: a -> IO IntPtr
-
+  size    :: a -> IO Int
+  cast    :: Ptr b -> a
   refs      :: a -> IO [a]
   patchRefs :: a -> [a] -> IO ()
   newRef    :: a -> a -> IO ()
@@ -20,7 +22,6 @@ class (Eq a, Ord a) => RefObj a where
   mark    :: a -> IO ()
   unmark  :: a -> IO ()
   
-  copy :: a -> IO a
 
 class PrintableRef a where
   printRef :: a -> IO ()