summaryrefslogtreecommitdiff
path: root/compiler/cmm/OptimizationFuel.hs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/cmm/OptimizationFuel.hs')
-rw-r--r--compiler/cmm/OptimizationFuel.hs5
1 files changed, 5 insertions, 0 deletions
diff --git a/compiler/cmm/OptimizationFuel.hs b/compiler/cmm/OptimizationFuel.hs
index bc32626c98..96272979ce 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