X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=Mate.hs;h=96edb9633155c58b5850e689e489134eb5eb9030;hb=e86237a8a051d37d42be21d469c36aacf8a86e8f;hp=1321104a20fdbbf4c80b2cc848ec3c46ccf8ec77;hpb=33fee81a6dc52f54beda6819c95e7e4571613ea6;p=mate.git diff --git a/Mate.hs b/Mate.hs index 1321104..96edb96 100644 --- a/Mate.hs +++ b/Mate.hs @@ -22,6 +22,8 @@ import Mate.Types import Mate.ClassPool import Mate.NativeMachine +import Mate.GC.Boehm + main :: IO () main = do args <- getArgs @@ -36,13 +38,13 @@ parseArgs ("-jar":jarpath:_) stdcp = do case res of Nothing -> error "JAR: no MainClass entry found. Try to pass the jar file via -cp instead." Just mc -> do - let bclspath = B.pack $ map (fromIntegral . ord) mc + let bclspath = B.pack . map (fromIntegral . ord) $ mc cls <- getClassFile bclspath executeMain bclspath cls + parseArgs ("-cp":cps) cpset = parseArgs ("-classpath":cps) cpset parseArgs ("-classpath":cps:xs) False = do - let paths = splitOn ":" cps - mapM_ addStuff paths + mapM_ addStuff $ splitOn ":" cps parseArgs xs True where addStuff :: String -> IO () @@ -54,14 +56,15 @@ parseArgs (('-':_):_) _ = error "Usage: mate [-cp|-classpath ] [ Class Direct -> IO () -executeMain bclspath cls = do +executeMain bclspath cls = do + initGC --required on some platforms. [todo bernhard: maybe this should be moved somewhere else - maybe at a global place where vm initialization takes place let methods = classMethods cls; methods :: [Method Direct] case find (\x -> methodName x == "main") methods of Just m -> do