X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fcmm%2FOptimizationFuel.hs;h=96272979ce8913be71ad8e0dfd7a1e2066182697;hb=869feb6a8105f34092a1ae1e755dffb69a565c85;hp=bc32626c9831351ef1bc8daeae07afbd5eeaa414;hpb=30c122df62ec75f9ed7f392f24c2925675bf1d06;p=ghc-hetmet.git diff --git a/compiler/cmm/OptimizationFuel.hs b/compiler/cmm/OptimizationFuel.hs index bc32626..9627297 100644 --- a/compiler/cmm/OptimizationFuel.hs +++ b/compiler/cmm/OptimizationFuel.hs @@ -7,6 +7,7 @@ module OptimizationFuel , lastFuelPassInState, fuelExhaustedInState, fuelRemainingInState , fuelDecrementState , runFuel, runFuelIO, runFuelWithLastPass, fuelConsumingPass + , runWithInfiniteFuel , FuelMonad(..) ) where @@ -59,6 +60,8 @@ fuelConsumingPass name f = do fuel <- fuelRemaining runFuel :: FuelMonad a -> FuelConsumer a runFuelWithLastPass :: FuelMonad a -> FuelConsumer (a, String) +runWithInfiniteFuel :: FuelMonad a -> a + runFuelIO :: IORef String -> IORef OptimizationFuel -> FuelMonad a -> IO a runFuelIO pass_ref fuel_ref (FuelMonad f) = @@ -78,6 +81,8 @@ runFuel (FuelMonad f) fuel = let (a, s) = f $ initialFuelState fuel runFuelWithLastPass (FuelMonad f) fuel = let (a, s) = f $ initialFuelState fuel in ((a, fs_lastpass s), fs_fuellimit s) +runWithInfiniteFuel (FuelMonad f) = fst $ f $ initialFuelState $ tankFilledTo maxBound + lastFuelPassInState :: FuelState -> String lastFuelPassInState = fs_lastpass