1 {-# LANGUAGE OverloadedStrings #-}
5 import qualified Data.Map as M
6 import qualified Data.ByteString.Lazy as B
13 dumpClass :: Class -> IO ()
17 putStrLn "Constants pool:"
18 forM_ (M.assocs $ constantPool cls) $ \(i, c) ->
19 putStrLn $ printf " #%d:\t%s" i (show c)
21 forM_ (methods cls) $ \m -> do
23 B.putStr (methodName m)
24 print (methodSignature m)
25 case attrByName m "Code" of
26 Nothing -> putStrLn "(no code)\n"
27 Just bytecode -> let code = decodeMethod bytecode
28 in forM_ (codeInstructions code) $ \i -> do