projects
/
mate.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
basicblock: store length of basiblock (i.e. bytes of instructionstream)
[mate.git]
/
Mate
/
Types.hs
diff --git
a/Mate/Types.hs
b/Mate/Types.hs
index de17e3780aa4cf8c695e72ce4a6891fb505a64e8..bff97df650a9b87d0679c643e010dd199c71a259 100644
(file)
--- a/
Mate/Types.hs
+++ b/
Mate/Types.hs
@@
-4,6
+4,7
@@
module Mate.Types
, BasicBlock(..)
, BBEnd(..)
, MapBB
, BasicBlock(..)
, BBEnd(..)
, MapBB
+ , ExceptionMap
, RawMethod(..)
, TrapMap, MethodMap, ClassMap, FieldMap
, StringMap, VirtualMap, InterfaceMap
, RawMethod(..)
, TrapMap, MethodMap, ClassMap, FieldMap
, StringMap, VirtualMap, InterfaceMap
@@
-23,6
+24,7
@@
module Mate.Types
import Data.Int
import Data.Functor
import Data.Int
import Data.Functor
+import Data.Word
import qualified Data.Map as M
import qualified Data.ByteString.Lazy as B
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],
-- Represents a CFG node
data BasicBlock = BasicBlock {
code :: [Instruction],
-
exception :: B.ByteString
,
+
bblength :: Int
,
successor :: BBEnd }
-- describes (leaving) edges of a CFG node
successor :: BBEnd }
-- describes (leaving) edges of a CFG node
@@
-54,9
+56,11
@@
data BBEnd
deriving Show
type MapBB = M.Map BlockID BasicBlock
deriving Show
type MapBB = M.Map BlockID BasicBlock
+type ExceptionMap = M.Map (Word16, Word16) [(B.ByteString, Word16)]
data RawMethod = RawMethod {
rawMapBB :: MapBB,
data RawMethod = RawMethod {
rawMapBB :: MapBB,
+ rawExcpMap :: ExceptionMap,
rawLocals :: Int,
rawStackSize :: Int,
rawArgCount :: NativeWord,
rawLocals :: Int,
rawStackSize :: Int,
rawArgCount :: NativeWord,