|
|
@ -214,6 +214,12 @@ namespace ICSharpCode.Decompiler.IL |
|
|
|
throw new IndexOutOfRangeException(); |
|
|
|
throw new IndexOutOfRangeException(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public sealed override ILInstruction Clone() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var clone = (UnaryInstruction)ShallowClone(); |
|
|
|
|
|
|
|
clone.Argument = this.argument.Clone(); |
|
|
|
|
|
|
|
return clone; |
|
|
|
|
|
|
|
} |
|
|
|
internal sealed override ILInstruction Inline(InstructionFlags flagsBefore, IInlineContext context) |
|
|
|
internal sealed override ILInstruction Inline(InstructionFlags flagsBefore, IInlineContext context) |
|
|
|
{ |
|
|
|
{ |
|
|
|
this.Argument = this.argument.Inline(flagsBefore, context); |
|
|
|
this.Argument = this.argument.Inline(flagsBefore, context); |
|
|
@ -288,6 +294,13 @@ namespace ICSharpCode.Decompiler.IL |
|
|
|
throw new IndexOutOfRangeException(); |
|
|
|
throw new IndexOutOfRangeException(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public sealed override ILInstruction Clone() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var clone = (BinaryInstruction)ShallowClone(); |
|
|
|
|
|
|
|
clone.Left = this.left.Clone(); |
|
|
|
|
|
|
|
clone.Right = this.right.Clone(); |
|
|
|
|
|
|
|
return clone; |
|
|
|
|
|
|
|
} |
|
|
|
internal sealed override ILInstruction Inline(InstructionFlags flagsBefore, IInlineContext context) |
|
|
|
internal sealed override ILInstruction Inline(InstructionFlags flagsBefore, IInlineContext context) |
|
|
|
{ |
|
|
|
{ |
|
|
|
this.Right = this.right.Inline(flagsBefore | ((this.left.Flags) & ~(InstructionFlags.MayPeek | InstructionFlags.MayPop)), context); |
|
|
|
this.Right = this.right.Inline(flagsBefore | ((this.left.Flags) & ~(InstructionFlags.MayPeek | InstructionFlags.MayPop)), context); |
|
|
@ -420,6 +433,12 @@ namespace ICSharpCode.Decompiler.IL |
|
|
|
throw new IndexOutOfRangeException(); |
|
|
|
throw new IndexOutOfRangeException(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public sealed override ILInstruction Clone() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var clone = (ILFunction)ShallowClone(); |
|
|
|
|
|
|
|
clone.Body = this.body.Clone(); |
|
|
|
|
|
|
|
return clone; |
|
|
|
|
|
|
|
} |
|
|
|
public override StackType ResultType { get { return StackType.O; } } |
|
|
|
public override StackType ResultType { get { return StackType.O; } } |
|
|
|
public override void AcceptVisitor(ILVisitor visitor) |
|
|
|
public override void AcceptVisitor(ILVisitor visitor) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -763,6 +782,14 @@ namespace ICSharpCode.Decompiler.IL |
|
|
|
throw new IndexOutOfRangeException(); |
|
|
|
throw new IndexOutOfRangeException(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public sealed override ILInstruction Clone() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var clone = (IfInstruction)ShallowClone(); |
|
|
|
|
|
|
|
clone.Condition = this.condition.Clone(); |
|
|
|
|
|
|
|
clone.TrueInst = this.trueInst.Clone(); |
|
|
|
|
|
|
|
clone.FalseInst = this.falseInst.Clone(); |
|
|
|
|
|
|
|
return clone; |
|
|
|
|
|
|
|
} |
|
|
|
public override void AcceptVisitor(ILVisitor visitor) |
|
|
|
public override void AcceptVisitor(ILVisitor visitor) |
|
|
|
{ |
|
|
|
{ |
|
|
|
visitor.VisitIfInstruction(this); |
|
|
|
visitor.VisitIfInstruction(this); |
|
|
@ -841,6 +868,13 @@ namespace ICSharpCode.Decompiler.IL |
|
|
|
throw new IndexOutOfRangeException(); |
|
|
|
throw new IndexOutOfRangeException(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public sealed override ILInstruction Clone() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var clone = (TryCatchHandler)ShallowClone(); |
|
|
|
|
|
|
|
clone.Filter = this.filter.Clone(); |
|
|
|
|
|
|
|
clone.Body = this.body.Clone(); |
|
|
|
|
|
|
|
return clone; |
|
|
|
|
|
|
|
} |
|
|
|
readonly ILVariable variable; |
|
|
|
readonly ILVariable variable; |
|
|
|
/// <summary>Returns the variable operand.</summary>
|
|
|
|
/// <summary>Returns the variable operand.</summary>
|
|
|
|
public ILVariable Variable { get { return variable; } } |
|
|
|
public ILVariable Variable { get { return variable; } } |
|
|
@ -1153,6 +1187,12 @@ namespace ICSharpCode.Decompiler.IL |
|
|
|
throw new IndexOutOfRangeException(); |
|
|
|
throw new IndexOutOfRangeException(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public sealed override ILInstruction Clone() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var clone = (StLoc)ShallowClone(); |
|
|
|
|
|
|
|
clone.Value = this.value.Clone(); |
|
|
|
|
|
|
|
return clone; |
|
|
|
|
|
|
|
} |
|
|
|
internal sealed override ILInstruction Inline(InstructionFlags flagsBefore, IInlineContext context) |
|
|
|
internal sealed override ILInstruction Inline(InstructionFlags flagsBefore, IInlineContext context) |
|
|
|
{ |
|
|
|
{ |
|
|
|
this.Value = this.value.Inline(flagsBefore, context); |
|
|
|
this.Value = this.value.Inline(flagsBefore, context); |
|
|
@ -1529,6 +1569,12 @@ namespace ICSharpCode.Decompiler.IL |
|
|
|
throw new IndexOutOfRangeException(); |
|
|
|
throw new IndexOutOfRangeException(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public sealed override ILInstruction Clone() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var clone = (LdFld)ShallowClone(); |
|
|
|
|
|
|
|
clone.Target = this.target.Clone(); |
|
|
|
|
|
|
|
return clone; |
|
|
|
|
|
|
|
} |
|
|
|
internal sealed override ILInstruction Inline(InstructionFlags flagsBefore, IInlineContext context) |
|
|
|
internal sealed override ILInstruction Inline(InstructionFlags flagsBefore, IInlineContext context) |
|
|
|
{ |
|
|
|
{ |
|
|
|
this.Target = this.target.Inline(flagsBefore, context); |
|
|
|
this.Target = this.target.Inline(flagsBefore, context); |
|
|
@ -1612,6 +1658,12 @@ namespace ICSharpCode.Decompiler.IL |
|
|
|
throw new IndexOutOfRangeException(); |
|
|
|
throw new IndexOutOfRangeException(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public sealed override ILInstruction Clone() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var clone = (LdFlda)ShallowClone(); |
|
|
|
|
|
|
|
clone.Target = this.target.Clone(); |
|
|
|
|
|
|
|
return clone; |
|
|
|
|
|
|
|
} |
|
|
|
internal sealed override ILInstruction Inline(InstructionFlags flagsBefore, IInlineContext context) |
|
|
|
internal sealed override ILInstruction Inline(InstructionFlags flagsBefore, IInlineContext context) |
|
|
|
{ |
|
|
|
{ |
|
|
|
this.Target = this.target.Inline(flagsBefore, context); |
|
|
|
this.Target = this.target.Inline(flagsBefore, context); |
|
|
@ -1701,6 +1753,13 @@ namespace ICSharpCode.Decompiler.IL |
|
|
|
throw new IndexOutOfRangeException(); |
|
|
|
throw new IndexOutOfRangeException(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public sealed override ILInstruction Clone() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var clone = (StFld)ShallowClone(); |
|
|
|
|
|
|
|
clone.Target = this.target.Clone(); |
|
|
|
|
|
|
|
clone.Value = this.value.Clone(); |
|
|
|
|
|
|
|
return clone; |
|
|
|
|
|
|
|
} |
|
|
|
internal sealed override ILInstruction Inline(InstructionFlags flagsBefore, IInlineContext context) |
|
|
|
internal sealed override ILInstruction Inline(InstructionFlags flagsBefore, IInlineContext context) |
|
|
|
{ |
|
|
|
{ |
|
|
|
this.Value = this.value.Inline(flagsBefore | ((this.target.Flags) & ~(InstructionFlags.MayPeek | InstructionFlags.MayPop)), context); |
|
|
|
this.Value = this.value.Inline(flagsBefore | ((this.target.Flags) & ~(InstructionFlags.MayPeek | InstructionFlags.MayPop)), context); |
|
|
@ -1854,6 +1913,12 @@ namespace ICSharpCode.Decompiler.IL |
|
|
|
throw new IndexOutOfRangeException(); |
|
|
|
throw new IndexOutOfRangeException(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public sealed override ILInstruction Clone() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var clone = (StsFld)ShallowClone(); |
|
|
|
|
|
|
|
clone.Value = this.value.Clone(); |
|
|
|
|
|
|
|
return clone; |
|
|
|
|
|
|
|
} |
|
|
|
internal sealed override ILInstruction Inline(InstructionFlags flagsBefore, IInlineContext context) |
|
|
|
internal sealed override ILInstruction Inline(InstructionFlags flagsBefore, IInlineContext context) |
|
|
|
{ |
|
|
|
{ |
|
|
|
this.Value = this.value.Inline(flagsBefore, context); |
|
|
|
this.Value = this.value.Inline(flagsBefore, context); |
|
|
@ -2001,6 +2066,12 @@ namespace ICSharpCode.Decompiler.IL |
|
|
|
throw new IndexOutOfRangeException(); |
|
|
|
throw new IndexOutOfRangeException(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public sealed override ILInstruction Clone() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var clone = (LdObj)ShallowClone(); |
|
|
|
|
|
|
|
clone.Target = this.target.Clone(); |
|
|
|
|
|
|
|
return clone; |
|
|
|
|
|
|
|
} |
|
|
|
internal sealed override ILInstruction Inline(InstructionFlags flagsBefore, IInlineContext context) |
|
|
|
internal sealed override ILInstruction Inline(InstructionFlags flagsBefore, IInlineContext context) |
|
|
|
{ |
|
|
|
{ |
|
|
|
this.Target = this.target.Inline(flagsBefore, context); |
|
|
|
this.Target = this.target.Inline(flagsBefore, context); |
|
|
@ -2098,6 +2169,13 @@ namespace ICSharpCode.Decompiler.IL |
|
|
|
throw new IndexOutOfRangeException(); |
|
|
|
throw new IndexOutOfRangeException(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public sealed override ILInstruction Clone() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var clone = (StObj)ShallowClone(); |
|
|
|
|
|
|
|
clone.Target = this.target.Clone(); |
|
|
|
|
|
|
|
clone.Value = this.value.Clone(); |
|
|
|
|
|
|
|
return clone; |
|
|
|
|
|
|
|
} |
|
|
|
internal sealed override ILInstruction Inline(InstructionFlags flagsBefore, IInlineContext context) |
|
|
|
internal sealed override ILInstruction Inline(InstructionFlags flagsBefore, IInlineContext context) |
|
|
|
{ |
|
|
|
{ |
|
|
|
this.Value = this.value.Inline(flagsBefore | ((this.target.Flags) & ~(InstructionFlags.MayPeek | InstructionFlags.MayPop)), context); |
|
|
|
this.Value = this.value.Inline(flagsBefore | ((this.target.Flags) & ~(InstructionFlags.MayPeek | InstructionFlags.MayPop)), context); |
|
|
@ -2429,6 +2507,12 @@ namespace ICSharpCode.Decompiler.IL |
|
|
|
throw new IndexOutOfRangeException(); |
|
|
|
throw new IndexOutOfRangeException(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public sealed override ILInstruction Clone() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var clone = (LdLen)ShallowClone(); |
|
|
|
|
|
|
|
clone.Target = this.target.Clone(); |
|
|
|
|
|
|
|
return clone; |
|
|
|
|
|
|
|
} |
|
|
|
internal sealed override ILInstruction Inline(InstructionFlags flagsBefore, IInlineContext context) |
|
|
|
internal sealed override ILInstruction Inline(InstructionFlags flagsBefore, IInlineContext context) |
|
|
|
{ |
|
|
|
{ |
|
|
|
this.Target = this.target.Inline(flagsBefore, context); |
|
|
|
this.Target = this.target.Inline(flagsBefore, context); |
|
|
@ -2513,6 +2597,13 @@ namespace ICSharpCode.Decompiler.IL |
|
|
|
throw new IndexOutOfRangeException(); |
|
|
|
throw new IndexOutOfRangeException(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public sealed override ILInstruction Clone() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var clone = (LdElema)ShallowClone(); |
|
|
|
|
|
|
|
clone.Array = this.array.Clone(); |
|
|
|
|
|
|
|
clone.Index = this.index.Clone(); |
|
|
|
|
|
|
|
return clone; |
|
|
|
|
|
|
|
} |
|
|
|
internal sealed override ILInstruction Inline(InstructionFlags flagsBefore, IInlineContext context) |
|
|
|
internal sealed override ILInstruction Inline(InstructionFlags flagsBefore, IInlineContext context) |
|
|
|
{ |
|
|
|
{ |
|
|
|
this.Index = this.index.Inline(flagsBefore | ((this.array.Flags) & ~(InstructionFlags.MayPeek | InstructionFlags.MayPop)), context); |
|
|
|
this.Index = this.index.Inline(flagsBefore | ((this.array.Flags) & ~(InstructionFlags.MayPeek | InstructionFlags.MayPop)), context); |
|
|
|