-patchNewObject :: CPtrdiff -> B.ByteString -> CodeGen e s CPtrdiff
-patchNewObject reip classname = do
- objsize <- liftIO $ getObjectSize classname
- push32 objsize
- callMalloc
- mtable <- liftIO $ getMethodTable classname
- mov (Disp 0, eax) mtable
- return reip
-
-patchInvoke :: CPtrdiff -> CPtrdiff -> IO NativeWord -> CPtrdiff -> CodeGen e s CPtrdiff
-patchInvoke method_table table2patch io_offset reip = do
+patchInvoke :: MethodInfo -> CPtrdiff -> CPtrdiff -> IO NativeWord -> CPtrdiff -> CodeGen e s CPtrdiff
+patchInvoke (MethodInfo methname _ msig) method_table table2patch io_offset reip = do
+ vmap <- liftIO $ getVirtualMap
+ let newmi = MethodInfo methname (vmap M.! fromIntegral method_table) msig