Use Data.Map.Map instead of Data.Array.Array for constants pool.
[hs-java.git] / rebuild-class.hs
index abe19187fcb99a120f83b44a994bcb3c0502f64e..1265cf1207b9dd07db78da902197b4e049ff8d77 100644 (file)
@@ -11,6 +11,7 @@ import JVM.Types
 import JVM.ClassFile
 import JVM.Converter
 import JVM.Assembler
+import JVM.Dump
 
 main = do
   args <- getArgs
@@ -18,22 +19,7 @@ main = do
     [clspath,outpath] -> do
       cls <- parseClassFile clspath
       clsfile <- decodeFile clspath :: IO ClassFile
-      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 = decodeMethod bytecode
-                           in  forM_ (codeInstructions code) $ \i -> do
-                                 putStr "  "
-                                 print i
+      dumpClass cls
       putStrLn $ "Source pool:\n" ++ showListIx (constsPool clsfile)
       let result = classFile cls
       putStrLn $ "Result pool:\n" ++ showListIx (constsPool result)