X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=mate.git;a=blobdiff_plain;f=Mate%2FTypes.hs;fp=Mate%2FTypes.hs;h=bff97df650a9b87d0679c643e010dd199c71a259;hp=de17e3780aa4cf8c695e72ce4a6891fb505a64e8;hb=ecec298c7b0723081b1aea7447eae6f04118df34;hpb=9158f39e801a6d54754f0406984b76a37c8e1394 diff --git a/Mate/Types.hs b/Mate/Types.hs index de17e37..bff97df 100644 --- a/Mate/Types.hs +++ b/Mate/Types.hs @@ -4,6 +4,7 @@ module Mate.Types , BasicBlock(..) , BBEnd(..) , MapBB + , ExceptionMap , RawMethod(..) , TrapMap, MethodMap, ClassMap, FieldMap , StringMap, VirtualMap, InterfaceMap @@ -23,6 +24,7 @@ module Mate.Types import Data.Int import Data.Functor +import Data.Word import qualified Data.Map as M import qualified Data.ByteString.Lazy as B @@ -42,7 +44,7 @@ type BlockID = Int -- Represents a CFG node data BasicBlock = BasicBlock { code :: [Instruction], - exception :: B.ByteString, + bblength :: Int, successor :: BBEnd } -- describes (leaving) edges of a CFG node @@ -54,9 +56,11 @@ data BBEnd deriving Show type MapBB = M.Map BlockID BasicBlock +type ExceptionMap = M.Map (Word16, Word16) [(B.ByteString, Word16)] data RawMethod = RawMethod { rawMapBB :: MapBB, + rawExcpMap :: ExceptionMap, rawLocals :: Int, rawStackSize :: Int, rawArgCount :: NativeWord,