classpool: do classloading at central point. omit '.class' when calling `mate'
[mate.git] / Mate / ClassPool.hs
1 {-# LANGUAGE OverloadedStrings #-}
2 {-# LANGUAGE ForeignFunctionInterface #-}
3 module Mate.ClassPool where
4
5 import Data.Binary
6 import Data.String.Utils
7 import qualified Data.Map as M
8 import qualified Data.Set as S
9 import qualified Data.ByteString.Lazy as B
10 import System.Plugins
11
12 import Text.Printf
13
14 import Foreign.Ptr
15 import Foreign.C.Types
16 import Foreign.C.String
17 import Foreign.StablePtr
18 import Foreign.Marshal.Alloc
19
20 import JVM.ClassFile
21 import JVM.Converter
22
23 import Harpy
24 import Harpy.X86Disassembler
25
26 import Mate.BasicBlocks
27 import Mate.Types
28 import Mate.Utilities
29
30
31 getClassFile :: B.ByteString -> IO (Class Resolved)
32 getClassFile path = do
33   let rpath = toString $ path `B.append` ".class"
34   parseClassFile rpath