cabal: bump data-default dependency to 0.5.0.
[hs-java.git] / dump-class.hs
index bb6512f6ad3a7a80b214720e9613019d6429a44c..f62ea1e1f040e52f20bd8c18e4072444a45aa13a 100644 (file)
@@ -1,37 +1,22 @@
 {-# LANGUAGE OverloadedStrings #-}
 module Main where
 
-import Control.Monad
-import Data.Array
+import Data.Binary
 import System.Environment
-import qualified Data.ByteString.Lazy as B
-import Text.Printf
+import qualified Data.Map as M
 
-import Data.BinaryState
-import JVM.Types
+import JVM.Common
+import JVM.ClassFile
 import JVM.Converter
-import JVM.Assembler
+import JVM.Dump
 
 main = do
   args <- getArgs
   case args of
     [clspath] -> do
-      cls <- decompileFile clspath
-      putStr "Class: "
-      B.putStrLn (this cls)
-      putStrLn "Constants pool:"
-      forM_ (assocs $ constantPool cls) $ \(i, c) ->
-        putStrLn $ printf "  #%d:\t%s" i (show c)
-      putStrLn "Methods:"
-      forM_ (methods cls) $ \m -> do
-        putStr ">> Method "
-        B.putStr (methodName m)
-        print (methodSignature m)
-        case attrByName m "Code" of
-          Nothing -> putStrLn "(no code)\n"
-          Just bytecode -> let code = decodeS (0 :: Integer) bytecode
-                           in  forM_ (codeInstructions code) $ \i -> do
-                                 putStr "  "
-                                 print i
+      clsFile <- decodeFile clspath
+      putStrLn $ showListIx $ M.assocs $ constsPool (clsFile :: Class File)
+      cls <- parseClassFile clspath
+      dumpClass cls
+    _ -> error "Synopsis: dump-class File.class"
 
-    _ -> error "Synopsis: disassemble File.class"