Class EffectfulInstructionAnalysis
An analysis that produces the set of all effectful instructions in a graph.
Implements
Inherited Members
Namespace: Flame.Compiler.Analysis
Assembly: Flame.Compiler.dll
Syntax
public sealed class EffectfulInstructionAnalysis : IFlowGraphAnalysis<EffectfulInstructions>
Constructors
| Edit this page View SourceEffectfulInstructionAnalysis()
Creates an effectful instruction analysis based on the default effectfulness predicate.
Declaration
public EffectfulInstructionAnalysis()
EffectfulInstructionAnalysis(Predicate<NamedInstruction>)
Creates an effectful instruction analysis based on a predicate that tells if instructions are effectful.
Declaration
public EffectfulInstructionAnalysis(Predicate<NamedInstruction> isEffectful)
Parameters
| Type | Name | Description |
|---|---|---|
| Predicate<NamedInstruction> | isEffectful | A predicate that takes an instruction and tells if it is effectful or not. |
Properties
| Edit this page View SourceIsEffectful
Tells if a particular instruction is effectful.
Declaration
public Predicate<NamedInstruction> IsEffectful { get; }
Property Value
| Type | Description |
|---|---|
| Predicate<NamedInstruction> | A predicate that takes an instruction and tells if it is effectful or not. |
Methods
| Edit this page View SourceAnalyze(FlowGraph)
Analyzes a flow graph from scratch.
Declaration
public EffectfulInstructions Analyze(FlowGraph graph)
Parameters
| Type | Name | Description |
|---|---|---|
| FlowGraph | graph | The flow graph to analyze. |
Returns
| Type | Description |
|---|---|
| EffectfulInstructions | The analysis' output. |
AnalyzeWithUpdates(FlowGraph, EffectfulInstructions, IReadOnlyList<FlowGraphUpdate>)
Analyzes a flow graph based on the flow graph, the previous result, and a list of updates that were applied to the graph since the previous result.
Declaration
public EffectfulInstructions AnalyzeWithUpdates(FlowGraph graph, EffectfulInstructions previousResult, IReadOnlyList<FlowGraphUpdate> updates)
Parameters
| Type | Name | Description |
|---|---|---|
| FlowGraph | graph | The current version of the flow graph to analyze. |
| EffectfulInstructions | previousResult | A previous result produced by this analysis. |
| IReadOnlyList<FlowGraphUpdate> | updates | A list of updates that were applied to the flow graph since the previous result was computed. |
Returns
| Type | Description |
|---|---|
| EffectfulInstructions | The analysis' output, which must be equal to a call to
|