X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=mate.git;a=blobdiff_plain;f=Mate%2FMethodPool.hs;fp=Mate%2FMethodPool.hs;h=5918a2f1bb655112369af4b1c5047d7add87a4d7;hp=6eba0d4ac21273f6fb520a1d1ee272e9af7938a5;hb=de9b805eb93b4a39c03e9f7e1cda62c674c87fe3;hpb=3398391fa883278959063506c8051943aba9c4ee diff --git a/Mate/MethodPool.hs b/Mate/MethodPool.hs index 6eba0d4..5918a2f 100644 --- a/Mate/MethodPool.hs +++ b/Mate/MethodPool.hs @@ -77,7 +77,7 @@ getMethodEntry mi@(MethodInfo method cm sig) = do return nf' else do rawmethod <- parseMethod cls' method sig - entry <- compileBB rawmethod (MethodInfo method (thisClass cls') sig) + entry <- compileBB mi rawmethod (MethodInfo method (thisClass cls') sig) addMethodRef entry mi clsnames return entry Nothing -> error $ show method ++ " not found. abort" @@ -133,13 +133,13 @@ addMethodRef entry (MethodInfo mmname _ msig) clsnames = do setMethodMap $ mmap `M.union` newmap -compileBB :: RawMethod -> MethodInfo -> IO (NativeWord, JpcNpcMap) -compileBB rawmethod methodinfo = do +compileBB :: MethodInfo -> RawMethod -> MethodInfo -> IO (NativeWord, JpcNpcMap) +compileBB mi rawmethod methodinfo = do tmap <- getTrapMap cls <- getClassFile (methClassName methodinfo) printfJit $ printf "emit code of \"%s\" from \"%s\":\n" (toString $ methName methodinfo) (toString $ methClassName methodinfo) - let ebb = emitFromBB cls rawmethod + let ebb = emitFromBB cls mi rawmethod let cgconfig = defaultCodeGenConfig { codeBufferSize = fromIntegral $ rawCodeLength rawmethod * 32 } (jnmap, Right right) <- runCodeGenWithConfig ebb () M.empty cgconfig