X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=Mate.hs;h=5ea2f7d200ae08d847a3677f54f3603fe3caf88f;hb=94a3c50f1c43a7001791fed77560f268fc6d72a3;hp=eb3c8733bab63d9261cc54f6247888e244220fbc;hpb=7e3cda1c8cfe2f1e91816277969391c6d91bfb6a;p=mate.git diff --git a/Mate.hs b/Mate.hs index eb3c873..5ea2f7d 100644 --- a/Mate.hs +++ b/Mate.hs @@ -20,7 +20,7 @@ import Mate.BasicBlocks import Mate.MethodPool import Mate.Types import Mate.ClassPool -import Mate.X86TrapHandling +import Mate.NativeMachine main :: IO () main = do @@ -36,25 +36,25 @@ 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 () - addStuff x - | ".jar" `isSuffixOf` x = addClassPathJAR x - | otherwise = addClassPath $ x ++ "/" + where + addStuff :: String -> IO () + addStuff x + | ".jar" `isSuffixOf` x = addClassPathJAR x + | otherwise = addClassPath $ x ++ "/" parseArgs ("-classpath":xs) _ = parseArgs ("-":xs) True -- usage parseArgs (('-':_):_) _ = error "Usage: mate [-cp|-classpath ] [ | -jar ]" -- first argument which isn't prefixed by '-' should be a class file parseArgs (clspath:_) stdcp = do unless stdcp $ addClassPath "./" - let bclspath = B.pack $ map (fromIntegral . ord) clspath + let bclspath = B.pack . map (fromIntegral . ord) $ clspath cls <- getClassFile bclspath executeMain bclspath cls parseArgs _ _ = parseArgs ["-"] False @@ -66,14 +66,11 @@ executeMain bclspath cls = do case find (\x -> methodName x == "main") methods of Just m -> do let mi = MethodInfo "main" bclspath $ methodSignature m - hmap <- parseMethod cls "main" $ methodSignature m - case hmap of - Just hmap' -> do - entry <- compileBB hmap' mi - addMethodRef entry mi [bclspath] + rawmethod <- parseMethod cls "main" $ methodSignature m + entry <- compileBB rawmethod mi + addMethodRef entry mi [bclspath] #ifdef DEBUG - printf "executing `main' now:\n" + printf "executing `main' now:\n" #endif - executeFuncPtr entry - Nothing -> error "main not found" + executeFuncPtr entry Nothing -> error "main not found"