Table of Contents

Class ExpressionTransforms

Namespace
ICSharpCode.Decompiler.IL.Transforms
Assembly
ICSharpCode.Decompiler.dll

Collection of transforms that detect simple expression patterns (e.g. 'cgt.un(..., ld.null)') and replace them with different instructions.

public class ExpressionTransforms : ILVisitor, IStatementTransform
Inheritance
ExpressionTransforms
Implements
Inherited Members

Remarks

Should run after inlining so that the expression patterns can be detected.

Constructors

ExpressionTransforms()

public ExpressionTransforms()

Methods

Default(ILInstruction)

Called by Visit*() methods that were not overridden

protected override void Default(ILInstruction inst)

Parameters

inst ILInstruction

Run(Block, int, StatementTransformContext)

public void Run(Block block, int pos, StatementTransformContext context)

Parameters

block Block
pos int
context StatementTransformContext

RunOnSingleStatement(ILInstruction, ILTransformContext)

public static void RunOnSingleStatement(ILInstruction statement, ILTransformContext context)

Parameters

statement ILInstruction
context ILTransformContext

VisitBinaryNumericInstruction(BinaryNumericInstruction)

protected override void VisitBinaryNumericInstruction(BinaryNumericInstruction inst)

Parameters

inst BinaryNumericInstruction

VisitBlock(Block)

protected override void VisitBlock(Block block)

Parameters

block Block

VisitBlockContainer(BlockContainer)

protected override void VisitBlockContainer(BlockContainer container)

Parameters

container BlockContainer

VisitBox(Box)

protected override void VisitBox(Box inst)

Parameters

inst Box

VisitCall(Call)

protected override void VisitCall(Call inst)

Parameters

inst Call

VisitCallVirt(CallVirt)

protected override void VisitCallVirt(CallVirt inst)

Parameters

inst CallVirt

VisitComp(Comp)

protected override void VisitComp(Comp inst)

Parameters

inst Comp

VisitConv(Conv)

protected override void VisitConv(Conv inst)

Parameters

inst Conv

VisitDynamicSetIndexInstruction(DynamicSetIndexInstruction)

dynamic.setindex.compound(target, index, dynamic.binary.operator op(dynamic.getindex(target, index), value)) => dynamic.compound.op (dynamic.getindex(target, index), value)

protected override void VisitDynamicSetIndexInstruction(DynamicSetIndexInstruction inst)

Parameters

inst DynamicSetIndexInstruction

VisitDynamicSetMemberInstruction(DynamicSetMemberInstruction)

dynamic.setmember.compound Name(target, dynamic.binary.operator op(dynamic.getmember Name(target), value)) => dynamic.compound.op (dynamic.getmember Name(target), value)

protected override void VisitDynamicSetMemberInstruction(DynamicSetMemberInstruction inst)

Parameters

inst DynamicSetMemberInstruction

VisitIfInstruction(IfInstruction)

protected override void VisitIfInstruction(IfInstruction inst)

Parameters

inst IfInstruction

VisitLdElema(LdElema)

protected override void VisitLdElema(LdElema inst)

Parameters

inst LdElema

VisitLdObj(LdObj)

protected override void VisitLdObj(LdObj inst)

Parameters

inst LdObj

VisitNewArr(NewArr)

protected override void VisitNewArr(NewArr inst)

Parameters

inst NewArr

VisitNewObj(NewObj)

protected override void VisitNewObj(NewObj inst)

Parameters

inst NewObj

VisitStLoc(StLoc)

protected override void VisitStLoc(StLoc inst)

Parameters

inst StLoc

VisitStObj(StObj)

protected override void VisitStObj(StObj inst)

Parameters

inst StObj

VisitTryCatchHandler(TryCatchHandler)

protected override void VisitTryCatchHandler(TryCatchHandler inst)

Parameters

inst TryCatchHandler