Copyright | (c) Galois Inc 2018 |
---|---|
License | BSD3 |
Maintainer | Rob Dockins <rdockins@galois.com> |
Stability | provisional |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Lang.Crucible.Simulator.Profiling
Contents
Description
Synopsis
- profilingFeature :: ProfilingTable -> EventFilter -> Maybe ProfilingOptions -> IO (GenericExecutionFeature sym)
- data ProfilingOptions = ProfilingOptions {}
- data EventFilter = EventFilter {}
- profilingEventFilter :: EventFilter
- newProfilingTable :: IO ProfilingTable
- recordSolverEvent :: ProfilingTable -> SolverEvent -> IO ()
- startRecordingSolverEvents :: IsSymInterface sym => sym -> ProfilingTable -> IO ()
- enterEvent :: ProfilingTable -> FunctionName -> Maybe ProgramLoc -> IO ()
- exitEvent :: ProfilingTable -> FunctionName -> IO ()
- inProfilingFrame :: ProfilingTable -> FunctionName -> Maybe ProgramLoc -> IO a -> IO a
- readMetrics :: ProfilingTable -> IO (Metrics Identity)
- data CrucibleProfile = CrucibleProfile {}
- readProfilingState :: ProfilingTable -> IO (UTCTime, [CGEvent], [(UTCTime, SolverEvent)])
- writeProfileReport :: FilePath -> String -> String -> ProfilingTable -> IO ()
- data CGEvent = CGEvent {}
- data CGEventType
- data ProfilingTable = ProfilingTable {
- callGraphEvents :: IORef (Seq CGEvent)
- eventDedups :: IORef (HashSet EventDedup)
- metrics :: Metrics IORef
- eventIDRef :: IORef Integer
- solverEvents :: IORef (Seq (UTCTime, SolverEvent))
- newtype Metric p sym ext = Metric {}
- data Metrics f = Metrics {
- metricSplits :: f Integer
- metricMerges :: f Integer
- metricAborts :: f Integer
- metricSolverStats :: f Statistics
- metricExtraMetrics :: f (Map Text Integer)
- symProUIJSON :: String -> String -> ProfilingTable -> IO JSValue
- symProUIString :: String -> String -> ProfilingTable -> IO String
Documentation
profilingFeature :: ProfilingTable -> EventFilter -> Maybe ProfilingOptions -> IO (GenericExecutionFeature sym) Source #
This feature will pay attention to function call entry/exit events
and track the elapsed time and various other metrics in the given
profiling table. The ProfilingOptions
can be used to export
intermediate profiling data at regular intervals, if desired.
data ProfilingOptions Source #
Constructors
ProfilingOptions | |
Fields |
data EventFilter Source #
Constructors
EventFilter | |
Fields |
profilingEventFilter :: EventFilter Source #
An EventFilter
that enables only Crucible profiling.
recordSolverEvent :: ProfilingTable -> SolverEvent -> IO () Source #
startRecordingSolverEvents :: IsSymInterface sym => sym -> ProfilingTable -> IO () Source #
enterEvent :: ProfilingTable -> FunctionName -> Maybe ProgramLoc -> IO () Source #
exitEvent :: ProfilingTable -> FunctionName -> IO () Source #
inProfilingFrame :: ProfilingTable -> FunctionName -> Maybe ProgramLoc -> IO a -> IO a Source #
readMetrics :: ProfilingTable -> IO (Metrics Identity) Source #
data CrucibleProfile Source #
Constructors
CrucibleProfile | |
Fields |
Instances
readProfilingState :: ProfilingTable -> IO (UTCTime, [CGEvent], [(UTCTime, SolverEvent)]) Source #
Arguments
:: FilePath | File to write |
-> String | "name" for the report |
-> String | "source" for the report |
-> ProfilingTable | profiling data to populate the report |
-> IO () |
Write a profiling report file in the JS/JSON format expected by tye symProUI front end.
Profiling data structures
Constructors
CGEvent | |
Fields |
Instances
data CGEventType Source #
Instances
data ProfilingTable Source #
Constructors
ProfilingTable | |
Fields
|
Constructors
Metrics | |
Fields
|
Instances
symProUIJSON :: String -> String -> ProfilingTable -> IO JSValue Source #
symProUIString :: String -> String -> ProfilingTable -> IO String Source #