basicblock: use state monad to save all targets from previous pass
[mate.git] / Mate / X86CodeGen.hs
index 7d17a9d7314d0f18929f124fdca250909381f9c7..661837f75008b1175f685f7dc058fa69bb0977d2 100644 (file)
@@ -99,10 +99,9 @@ emitFromBB cls method = do
 
     getCurrentOffset :: CodeGen e s Word32
     getCurrentOffset = do
-      ep <- getEntryPoint
-      let w32_ep = (fromIntegral $ ptrToIntPtr ep) :: Word32
-      offset <- getCodeOffset
-      return $ w32_ep + fromIntegral offset
+      ep <- (fromIntegral . ptrToIntPtr) `liftM` getEntryPoint
+      offset <- fromIntegral `liftM` getCodeOffset
+      return $ ep + offset
 
     emitInvoke :: Word16 -> Bool -> CodeGen e s (Maybe (Word32, TrapCause))
     emitInvoke cpidx hasThis = do