Browse Source

Rename StackExpression to ByteCodeExpression

pull/1/head^2
David Srbecký 18 years ago
parent
commit
9f4dc8611d
  1. 4
      Decompiler.csproj
  2. 12
      src/AstMetodBodyBuilder.cs
  3. 4
      src/ByteCode.cs
  4. 22
      src/ByteCodeExpression.cs
  5. 10
      src/ByteCodeExpressionCollection.cs
  6. 6
      src/ControlFlow/Nodes.cs

4
Decompiler.csproj

@ -64,8 +64,8 @@ @@ -64,8 +64,8 @@
<Compile Include="src\Options.cs" />
<Compile Include="src\Program.cs" />
<Compile Include="src\ByteCode.StackAnalysis.cs" />
<Compile Include="src\StackExpression.cs" />
<Compile Include="src\StackExpressionCollection.cs" />
<Compile Include="src\ByteCodeExpression.cs" />
<Compile Include="src\ByteCodeExpressionCollection.cs" />
<Compile Include="src\Transforms\Ast\PushNegation.cs" />
<Compile Include="src\Transforms\Ast\Idioms.cs" />
<Compile Include="src\Transforms\Ast\RemoveDeadLabels.cs" />

12
src/AstMetodBodyBuilder.cs

@ -32,7 +32,7 @@ namespace Decompiler @@ -32,7 +32,7 @@ namespace Decompiler
methodDef.Body.Simplify();
ByteCodeCollection body = new ByteCodeCollection(methodDef);
StackExpressionCollection exprCollection = new StackExpressionCollection(body);
ByteCodeExpressionCollection exprCollection = new ByteCodeExpressionCollection(body);
try {
exprCollection.Optimize();
} catch (StopOptimizations) {
@ -94,7 +94,7 @@ namespace Decompiler @@ -94,7 +94,7 @@ namespace Decompiler
yield return new Ast.LabelStatement(node.Label);
if (node is BasicBlock) {
foreach(StackExpression expr in ((BasicBlock)node).Body) {
foreach(ByteCodeExpression expr in ((BasicBlock)node).Body) {
yield return TransformExpressionToStatement(expr);
}
Node fallThroughNode = ((BasicBlock)node).FallThroughBasicBlock;
@ -177,7 +177,7 @@ namespace Decompiler @@ -177,7 +177,7 @@ namespace Decompiler
}
}
List<Ast.Expression> TransformExpressionArguments(StackExpression expr)
List<Ast.Expression> TransformExpressionArguments(ByteCodeExpression expr)
{
List<Ast.Expression> args = new List<Ast.Expression>();
foreach(CilStackSlot stackSlot in expr.StackBefore.PeekCount(expr.PopCount)) {
@ -185,19 +185,19 @@ namespace Decompiler @@ -185,19 +185,19 @@ namespace Decompiler
args.Add(new Ast.IdentifierExpression(name));
}
// Args generated by nested expressions (which must be closed)
foreach(StackExpression nestedExpr in expr.LastArguments) {
foreach(ByteCodeExpression nestedExpr in expr.LastArguments) {
args.Add((Ast.Expression)TransformExpression(nestedExpr));
}
return args;
}
object TransformExpression(StackExpression expr)
object TransformExpression(ByteCodeExpression expr)
{
List<Ast.Expression> args = TransformExpressionArguments(expr);
return TransformByteCode(methodDef, expr.LastByteCode, args);
}
Ast.Statement TransformExpressionToStatement(StackExpression expr)
Ast.Statement TransformExpressionToStatement(ByteCodeExpression expr)
{
object codeExpr = TransformExpression(expr);
if (codeExpr is Ast.Expression) {

4
src/ByteCode.cs

@ -9,7 +9,7 @@ namespace Decompiler @@ -9,7 +9,7 @@ namespace Decompiler
{
public partial class ByteCode
{
StackExpression expression;
ByteCodeExpression expression;
ByteCode previous;
ByteCode next;
@ -18,7 +18,7 @@ namespace Decompiler @@ -18,7 +18,7 @@ namespace Decompiler
OpCode opCode;
object operand;
public StackExpression Expression {
public ByteCodeExpression Expression {
get { return expression; }
set { expression = value; }
}

22
src/StackExpression.cs → src/ByteCodeExpression.cs

@ -7,24 +7,24 @@ using Mono.Cecil.Cil; @@ -7,24 +7,24 @@ using Mono.Cecil.Cil;
namespace Decompiler
{
public class StackExpression
public class ByteCodeExpression
{
ControlFlow.BasicBlock basicBlock;
StackExpressionCollection owner;
ByteCodeExpressionCollection owner;
ByteCode lastByteCode;
List<StackExpression> lastArguments = new List<StackExpression>();
List<ByteCodeExpression> lastArguments = new List<ByteCodeExpression>();
public Decompiler.ControlFlow.BasicBlock BasicBlock {
get { return basicBlock; }
set {
basicBlock = value;
foreach (StackExpression lastArgument in lastArguments) {
foreach (ByteCodeExpression lastArgument in lastArguments) {
lastArgument.BasicBlock = value;
}
}
}
public StackExpressionCollection Owner {
public ByteCodeExpressionCollection Owner {
get { return owner; }
}
@ -33,7 +33,7 @@ namespace Decompiler @@ -33,7 +33,7 @@ namespace Decompiler
}
// A list of closed expression for last arguments
public List<StackExpression> LastArguments {
public List<ByteCodeExpression> LastArguments {
get { return lastArguments; }
}
@ -59,9 +59,9 @@ namespace Decompiler @@ -59,9 +59,9 @@ namespace Decompiler
}
}
public List<StackExpression> BranchesHere {
public List<ByteCodeExpression> BranchesHere {
get {
List<StackExpression> branchesHere = new List<StackExpression>();
List<ByteCodeExpression> branchesHere = new List<ByteCodeExpression>();
foreach(ByteCode byteCode in this.FirstByteCode.BranchesHere) {
branchesHere.Add(byteCode.Expression);
}
@ -69,7 +69,7 @@ namespace Decompiler @@ -69,7 +69,7 @@ namespace Decompiler
}
}
public StackExpression BranchTarget {
public ByteCodeExpression BranchTarget {
get {
if (this.lastByteCode.BranchTarget == null) {
return null;
@ -107,7 +107,7 @@ namespace Decompiler @@ -107,7 +107,7 @@ namespace Decompiler
{
int stackSize = 0;
int minStackSize = 0;
foreach(StackExpression expr in lastArguments) {
foreach(ByteCodeExpression expr in lastArguments) {
stackSize -= expr.PopCount;
minStackSize = Math.Min(minStackSize, stackSize);
stackSize += expr.PushCount;
@ -131,7 +131,7 @@ namespace Decompiler @@ -131,7 +131,7 @@ namespace Decompiler
}
}
public StackExpression(StackExpressionCollection owner, ByteCode lastByteCode)
public ByteCodeExpression(ByteCodeExpressionCollection owner, ByteCode lastByteCode)
{
this.owner = owner;
this.lastByteCode = lastByteCode;

10
src/StackExpressionCollection.cs → src/ByteCodeExpressionCollection.cs

@ -7,12 +7,12 @@ using Mono.Cecil.Cil; @@ -7,12 +7,12 @@ using Mono.Cecil.Cil;
namespace Decompiler
{
public class StackExpressionCollection: List<StackExpression>
public class ByteCodeExpressionCollection: List<ByteCodeExpression>
{
public StackExpressionCollection(ByteCodeCollection byteCodeCol)
public ByteCodeExpressionCollection(ByteCodeCollection byteCodeCol)
{
foreach(ByteCode bc in byteCodeCol) {
this.Add(new StackExpression(this, bc));
this.Add(new ByteCodeExpression(this, bc));
}
}
@ -20,8 +20,8 @@ namespace Decompiler @@ -20,8 +20,8 @@ namespace Decompiler
{
for(int i = 1; i < this.Count; i++) {
if (i == 0) continue;
StackExpression prevExpr = this[i - 1];
StackExpression expr = this[i];
ByteCodeExpression prevExpr = this[i - 1];
ByteCodeExpression expr = this[i];
if (expr.PopCount > 0 && // This expr needs some more arguments
!expr.IsBranchTarget &&

6
src/ControlFlow/Nodes.cs

@ -7,12 +7,12 @@ namespace Decompiler.ControlFlow @@ -7,12 +7,12 @@ namespace Decompiler.ControlFlow
{
public class BasicBlock: Node
{
List<StackExpression> body = new List<StackExpression>();
List<ByteCodeExpression> body = new List<ByteCodeExpression>();
List<BasicBlock> basicBlockPredecessors = new List<BasicBlock>();
BasicBlock fallThroughBasicBlock;
BasicBlock branchBasicBlock;
public List<StackExpression> Body {
public List<ByteCodeExpression> Body {
get { return body; }
}
@ -117,7 +117,7 @@ namespace Decompiler.ControlFlow @@ -117,7 +117,7 @@ namespace Decompiler.ControlFlow
get { return methodEntry; }
}
public MethodBodyGraph(StackExpressionCollection exprs)
public MethodBodyGraph(ByteCodeExpressionCollection exprs)
{
if (exprs.Count == 0) throw new ArgumentException("Count == 0", "exprs");

Loading…
Cancel
Save