Browse Source

Fixed initilizers and fixed statements which I broke during the refactoring.

pull/100/head
David Srbecký 15 years ago
parent
commit
31b2de1126
  1. 12
      ICSharpCode.Decompiler/ILAst/ILAstOptimizer.cs
  2. 2
      ICSharpCode.Decompiler/ILAst/InitializerPeepholeTransforms.cs

12
ICSharpCode.Decompiler/ILAst/ILAstOptimizer.cs

@ -175,9 +175,17 @@ namespace ICSharpCode.Decompiler.ILAst @@ -175,9 +175,17 @@ namespace ICSharpCode.Decompiler.ILAst
if (abortBeforeStep == ILAstOptimizationStep.IntroduceFixedStatements) return;
foreach(ILBlock block in method.GetSelfAndChildrenRecursive<ILBlock>()) {
for (int i = 0; i < block.Body.Count; i++) {
for (int i = block.Body.Count - 1; i >= 0; i--) {
// TODO: Move before loops
if (i < block.Body.Count)
IntroduceFixedStatements(block.Body, i);
}
}
foreach(ILBlock block in method.GetSelfAndChildrenRecursive<ILBlock>()) {
for (int i = block.Body.Count - 1; i >= 0; i--) {
// TODO: Move before loops
IntroduceFixedStatements(block.Body, i);
if (i < block.Body.Count)
IntroduceFixedStatements(block.Body, i);
}
}

2
ICSharpCode.Decompiler/ILAst/InitializerPeepholeTransforms.cs

@ -162,7 +162,7 @@ namespace ICSharpCode.Decompiler.ILAst @@ -162,7 +162,7 @@ namespace ICSharpCode.Decompiler.ILAst
if (nextExpr.Match(ILCode.Callvirt, out addMethod, out args) &&
addMethod.Name == "Add" &&
addMethod.HasThis &&
args.Count == 2 &&
args.Count >= 2 &&
args[0].Match(ILCode.Ldloc, out v2) &&
v == v2)
{

Loading…
Cancel
Save