some updates.
[hs-java.git] / rebuild-class.hs
1 {-# LANGUAGE OverloadedStrings #-}
2
3 import Control.Monad
4 import Data.Array
5 import Data.Binary
6 import System.Environment
7 import qualified Data.ByteString.Lazy as B
8 import Text.Printf
9 import qualified Data.Map as M
10
11 import JVM.Types
12 import JVM.ClassFile
13 import JVM.Converter
14 import JVM.Assembler
15 import JVM.Dump
16
17 main = do
18   args <- getArgs
19   case args of
20     [clspath,outpath] -> do
21       cls <- parseClassFile clspath
22       clsfile <- decodeFile clspath :: IO (Class Pointers)
23       dumpClass cls
24       putStrLn $ "Source pool:\n" ++ showListIx (M.elems $ constsPool clsfile)
25       let result = classFile cls
26       putStrLn $ "Result pool:\n" ++ showListIx (M.elems $ constsPool result)
27       B.writeFile outpath (encodeClass cls)
28
29     _ -> error "Synopsis: rebuild-class File.class Output.class"