{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE CPP #-}
#include "debug.h"
-module Mate.GarbageAlloc where
+module Mate.GarbageAlloc(
+ mallocClassData,
+ mallocString,
+ mallocObject,
+ getHeapMemory) where
import Foreign
import Foreign.C
+import Mate.GC.Boehm
+
import Text.Printf
import Mate.Debug
mallocClassData :: Int -> IO (Ptr a)
mallocClassData size = do
printfStr "mallocClassData: %d\n" size
- mallocBytes size
+ mallocBytesGC size
mallocString :: Int -> IO (Ptr a)
mallocString size = do
printfStr "mallocString: %d\n" size
- mallocBytes size
+ mallocBytesGC size
foreign export ccall mallocObject :: Int -> IO CPtrdiff
mallocObject :: Int -> IO CPtrdiff
mallocObject size = do
- ptr <- mallocBytes size
+ ptr <- mallocBytesGC size
printfStr "mallocObject: %d\n" size
return $ fromIntegral $ ptrToIntPtr ptr
demoInterfaceCall val = do
printf "demoInterfaceCall: 0x%08x\n" (fromIntegral val :: Word32)
return ()
+
+getHeapMemory :: IO Int
+getHeapMemory = getHeapSize
+
--- /dev/null
+package tests;
+
+
+public class Garbage1
+{
+
+
+ public Garbage1(){}
+
+ public static void main(String args[])
+ {
+
+ Big2 big2 = new Big2();
+ for(int i=0;i<0x2800;i++)
+ {
+ big2 = new Big2();
+ }
+ System.out.println("memory: todo");
+ }
+}
+
+class Big2
+{
+ private int[]arr;
+
+ public Big2()
+ {
+ arr = new int[0x400];
+ //System.out.println("foo");
+ }
+}
# cabal install harpy $CABAL_OPT
gitinstall git://wien.tomnetworks.com/harpy.git
+# cabal install hs-boehmgc $CABAL_OPT
+gitinstall git://wien.tomnetworks.com/hs-boehmgc.git
+
echo DONE