module LinearScan.Cursor where import Debug.Trace (trace, traceShow, traceShowId) import qualified Prelude import qualified Data.IntMap import qualified Data.IntSet import qualified Data.List import qualified Data.Ord import qualified Data.Functor.Identity import qualified Hask.Utils import qualified LinearScan.Interval as Interval import qualified LinearScan.Morph as Morph import qualified LinearScan.ScanState as ScanState import qualified LinearScan.Vector0 as Vector0 __ :: any __ = Prelude.error "Logical or arity value used" curId :: Prelude.Int -> ScanState.ScanStateDesc -> (,) ScanState.IntervalId Prelude.Int curId maxReg sd = Prelude.head (ScanState.unhandled maxReg sd) curIntDetails :: Prelude.Int -> ScanState.ScanStateDesc -> Interval.IntervalDesc curIntDetails maxReg sd = Vector0.vnth (ScanState.nextInterval maxReg sd) (ScanState.intervals maxReg sd) (Prelude.fst (curId maxReg sd)) withCursor :: Prelude.Int -> ScanState.ScanStateDesc -> (ScanState.ScanStateDesc -> () -> Morph.SState () a1 a2) -> Morph.SState () a1 a2 withCursor maxReg pre f e x = case x of { Morph.Build_SSInfo thisDesc _ -> f thisDesc __ e (Morph.Build_SSInfo thisDesc __)}