import JVM.ClassFile
import Harpy
+#ifdef DBG_JIT
import Harpy.X86Disassembler
+#endif
#ifdef DEBUG
import Text.Printf
let mi'@(MethodInfo method cm sig) =
case mi of
(StaticMethod x) -> x
- (VirtualMethod _ (MethodInfo methname _ msig)) -> newMi methname msig
- (InterfaceMethod _ (MethodInfo methname _ msig)) -> newMi methname msig
+ (VirtualCall _ (MethodInfo methname _ msig) _) -> newMi methname msig
_ -> error "getMethodEntry: no TrapCause found. abort."
where newMi mn = MethodInfo mn (vmap M.! fromIntegral methodtable)
-- bernhard (TODO): doesn't work with gnu classpath at some point. didn't
cls <- getClassFile (methClassName methodinfo)
let ebb = emitFromBB cls rawmethod
- (_, Right right) <- runCodeGen ebb () ()
+ let cgconfig = defaultCodeGenConfig { codeBufferSize = fromIntegral $ (rawCodeLength rawmethod) * 32 }
+ (_, Right right) <- runCodeGenWithConfig ebb () () cgconfig
let ((entry, _, _, new_tmap), _) = right
setTrapMap $ tmap `M.union` new_tmap -- prefers elements in tmap
printfJit "generated code of \"%s\" from \"%s\":\n" (toString $ methName methodinfo) (toString $ methClassName methodinfo)
printfJit "\tstacksize: 0x%04x, locals: 0x%04x\n" (rawStackSize rawmethod) (rawLocals rawmethod)
+#ifdef DBG_JIT
mapM_ (printfJit "%s\n" . showAtt) (snd right)
+#endif
printfJit "\n\n"
-- UNCOMMENT NEXT LINES FOR GDB FUN
-- if (toString $ methName methodinfo) == "thejavamethodIwant2debug"