1 {-# LANGUAGE OverloadedStrings #-}
5 import qualified Data.Map as M
6 import qualified Data.ByteString.Lazy as B
14 -- | Dump a class to console.
15 dumpClass :: Class Direct -> IO ()
18 B.putStrLn (thisClass cls)
19 putStrLn "Constants pool:"
20 forM_ (M.assocs $ constsPool cls) $ \(i, c) ->
21 putStrLn $ printf " #%d:\t%s" i (show c)
23 forM_ (classMethods cls) $ \m -> do
25 B.putStr (methodName m)
26 print (methodSignature m)
27 case attrByName m "Code" of
28 Nothing -> putStrLn "(no code)\n"
29 Just bytecode -> let code = decodeMethod bytecode
30 in forM_ (codeInstructions code) $ \i -> do