From: Harald Steinlechner Date: Tue, 27 Mar 2012 20:13:42 +0000 (+0200) Subject: Utilities, BasicBlock into src folder, BasicBlock sketching X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=mate.git;a=commitdiff_plain;h=c6617c05281181cff00beb55efc802755dc42f6e Utilities, BasicBlock into src folder, BasicBlock sketching --- diff --git a/BasicBlocks.hs b/BasicBlocks.hs deleted file mode 100644 index 4f84998..0000000 --- a/BasicBlocks.hs +++ /dev/null @@ -1,29 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -module BasicBlocks where - -import Data.Binary -import System.Environment -import qualified Data.Map as M -import qualified Data.ByteString.Lazy as B - -import JVM.Common -import JVM.ClassFile -import JVM.Converter -import JVM.Dump - -import Utilities - -main = do - args <- getArgs - case args of - [clspath] -> do - clsFile <- decodeFile clspath - putStrLn $ showListIx $ M.assocs $ constsPool (clsFile :: Class Pointers) - cls <- parseClassFile clspath - dumpClass cls - let mainmethod = lookupMethod "main" cls -- "main|([Ljava/lang/String;)V" cf - testCFG mainmethod - putStrLn "foo" - _ -> error "Synopsis: dump-class File.class" - -testCFG _ = undefined diff --git a/Utilities.hs b/Utilities.hs deleted file mode 100644 index 540d054..0000000 --- a/Utilities.hs +++ /dev/null @@ -1,18 +0,0 @@ -module Utilities where - -import qualified Data.ByteString.Lazy as B - -import qualified JVM.Assembler as J -import JVM.Assembler hiding (Instruction) -import JVM.Common -import JVM.ClassFile - - --- TODO: actually this function already exists in hs-java-0.3! -lookupMethod :: B.ByteString -> Class Resolved -> Maybe (Method Resolved) -lookupMethod name cls = look (classMethods cls) - where - look [] = Nothing - look (f:fs) - | methodName f == name = Just f - | otherwise = look fs diff --git a/src/BasicBlocks.hs b/src/BasicBlocks.hs new file mode 100644 index 0000000..4f84998 --- /dev/null +++ b/src/BasicBlocks.hs @@ -0,0 +1,29 @@ +{-# LANGUAGE OverloadedStrings #-} +module BasicBlocks where + +import Data.Binary +import System.Environment +import qualified Data.Map as M +import qualified Data.ByteString.Lazy as B + +import JVM.Common +import JVM.ClassFile +import JVM.Converter +import JVM.Dump + +import Utilities + +main = do + args <- getArgs + case args of + [clspath] -> do + clsFile <- decodeFile clspath + putStrLn $ showListIx $ M.assocs $ constsPool (clsFile :: Class Pointers) + cls <- parseClassFile clspath + dumpClass cls + let mainmethod = lookupMethod "main" cls -- "main|([Ljava/lang/String;)V" cf + testCFG mainmethod + putStrLn "foo" + _ -> error "Synopsis: dump-class File.class" + +testCFG _ = undefined diff --git a/src/Utilities.hs b/src/Utilities.hs new file mode 100644 index 0000000..540d054 --- /dev/null +++ b/src/Utilities.hs @@ -0,0 +1,18 @@ +module Utilities where + +import qualified Data.ByteString.Lazy as B + +import qualified JVM.Assembler as J +import JVM.Assembler hiding (Instruction) +import JVM.Common +import JVM.ClassFile + + +-- TODO: actually this function already exists in hs-java-0.3! +lookupMethod :: B.ByteString -> Class Resolved -> Maybe (Method Resolved) +lookupMethod name cls = look (classMethods cls) + where + look [] = Nothing + look (f:fs) + | methodName f == name = Just f + | otherwise = look fs diff --git a/tests/Fib.java b/tests/Fib.java new file mode 100644 index 0000000..b916716 --- /dev/null +++ b/tests/Fib.java @@ -0,0 +1,13 @@ +public class Fib +{ + public static int fib(int n) + { + if(n<=1) return 1; + else return fib(n-1) + fib(n-2); + } + + public static void main(String[] args) + { + fib(10); + } +}