projects
/
mate.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
codegen: approx. initial codebuffer size according to codesize @ bytecode
[mate.git]
/
Mate
/
Types.hs
diff --git
a/Mate/Types.hs
b/Mate/Types.hs
index dbf7e73806cc3fe0a3fd1d7531474732f3475ba6..0fe838e0edd9524f62fc186659ce75757402d296 100644
(file)
--- a/
Mate/Types.hs
+++ b/
Mate/Types.hs
@@
-2,7
+2,6
@@
{-# LANGUAGE CPP #-}
module Mate.Types where
{-# LANGUAGE CPP #-}
module Mate.Types where
-import Data.Word
import Data.Int
import qualified Data.Map as M
import qualified Data.ByteString.Lazy as B
import Data.Int
import qualified Data.Map as M
import qualified Data.ByteString.Lazy as B
@@
-13,6
+12,8
@@
import System.IO.Unsafe
import JVM.ClassFile
import JVM.Assembler
import JVM.ClassFile
import JVM.Assembler
+import Mate.NativeSizes
+
type BlockID = Int
-- Represents a CFG node
type BlockID = Int
-- Represents a CFG node
@@
-25,16
+26,24
@@
data BBEnd = Return | FallThrough BlockID | OneTarget BlockID | TwoTarget BlockI
type MapBB = M.Map BlockID BasicBlock
type MapBB = M.Map BlockID BasicBlock
+data RawMethod = RawMethod {
+ rawMapBB :: MapBB,
+ rawLocals :: Int,
+ rawStackSize :: Int,
+ rawArgCount :: NativeWord,
+ rawCodeLength :: NativeWord }
---
Word32
= point of method call in generated code
+--
NativeWord
= point of method call in generated code
-- MethodInfo = relevant information about callee
-- MethodInfo = relevant information about callee
-type TrapMap = M.Map
Word32
TrapCause
+type TrapMap = M.Map
NativeWord
TrapCause
data TrapCause =
StaticMethod MethodInfo | -- for static calls
VirtualMethod Bool MethodInfo | -- for virtual calls
InterfaceMethod Bool MethodInfo | -- for interface calls
data TrapCause =
StaticMethod MethodInfo | -- for static calls
VirtualMethod Bool MethodInfo | -- for virtual calls
InterfaceMethod Bool MethodInfo | -- for interface calls
+ InstanceOf B.ByteString | -- class name
+ NewObject B.ByteString | -- class name
StaticField StaticFieldInfo deriving Show
data StaticFieldInfo = StaticFieldInfo {
StaticField StaticFieldInfo deriving Show
data StaticFieldInfo = StaticFieldInfo {
@@
-44,8
+53,8
@@
data StaticFieldInfo = StaticFieldInfo {
-- B.ByteString = name of method
-- B.ByteString = name of method
---
Word32
= entrypoint of method
-type MethodMap = M.Map MethodInfo
Word32
+--
NativeWord
= entrypoint of method
+type MethodMap = M.Map MethodInfo
NativeWord
data MethodInfo = MethodInfo {
methName :: B.ByteString,
data MethodInfo = MethodInfo {
methName :: B.ByteString,
@@
-68,7
+77,7
@@
data ClassInfo = ClassInfo {
ciStaticMap :: FieldMap,
ciFieldMap :: FieldMap,
ciMethodMap :: FieldMap,
ciStaticMap :: FieldMap,
ciFieldMap :: FieldMap,
ciMethodMap :: FieldMap,
- ciMethodBase ::
Word32
,
+ ciMethodBase ::
NativeWord
,
ciInitDone :: Bool }
ciInitDone :: Bool }
@@
-78,20
+87,20
@@
type FieldMap = M.Map B.ByteString Int32
-- java strings are allocated only once, therefore we
-- use a hashmap to store the address for a String
-- java strings are allocated only once, therefore we
-- use a hashmap to store the address for a String
-type StringMap = M.Map B.ByteString
Word32
+type StringMap = M.Map B.ByteString
NativeWord
-- map "methodtable addr" to "classname"
-- we need that to identify the actual type
-- on the invokevirtual insn
-- map "methodtable addr" to "classname"
-- we need that to identify the actual type
-- on the invokevirtual insn
-type VirtualMap = M.Map
Word32
B.ByteString
+type VirtualMap = M.Map
NativeWord
B.ByteString
-- store each parsed Interface upon first loading
type InterfaceMap = M.Map B.ByteString (Class Direct)
-- store offset for each <Interface><Method><Signature> pair
-- store each parsed Interface upon first loading
type InterfaceMap = M.Map B.ByteString (Class Direct)
-- store offset for each <Interface><Method><Signature> pair
-type InterfaceMethodMap = M.Map B.ByteString
Word32
+type InterfaceMethodMap = M.Map B.ByteString
NativeWord
{-
{-