home *** CD-ROM | disk | FTP | other *** search
- package sun.tools.tree;
-
- import java.io.PrintStream;
- import java.util.Hashtable;
- import sun.tools.asm.Assembler;
- import sun.tools.java.Environment;
-
- public class CompoundStatement extends Statement {
- Statement[] args;
-
- public CompoundStatement(int var1, Statement[] var2) {
- super(105, var1);
- this.args = var2;
-
- for(int var3 = 0; var3 < var2.length; ++var3) {
- if (var2[var3] == null) {
- var2[var3] = new CompoundStatement(var1, new Statement[0]);
- }
- }
-
- }
-
- public void insertStatement(Statement var1) {
- Statement[] var2 = new Statement[1 + this.args.length];
- var2[0] = var1;
-
- for(int var3 = 0; var3 < this.args.length; ++var3) {
- var2[var3 + 1] = this.args[var3];
- }
-
- this.args = var2;
- }
-
- Vset check(Environment var1, Context var2, Vset var3, Hashtable var4) {
- if (this.args.length > 0) {
- var3 = ((Statement)this).reach(var1, var3);
- CheckContext var5 = new CheckContext(var2, this);
-
- for(int var6 = 0; var6 < this.args.length; ++var6) {
- var3 = this.args[var6].checkBlockStatement(var1, var5, var3, var4);
- }
-
- var3 = var3.join(var5.vsBreak);
- }
-
- return var2.removeAdditionalVars(var3);
- }
-
- public Statement inline(Environment var1, Context var2) {
- var2 = new Context(var2, this);
- boolean var3 = false;
- int var4 = 0;
-
- for(int var5 = 0; var5 < this.args.length; ++var5) {
- Statement var6 = this.args[var5];
- if (var6 != null) {
- if ((var6 = var6.inline(var1, var2)) != null) {
- if (var6.op == 105 && var6.labels == null) {
- var4 += ((CompoundStatement)var6).args.length;
- } else {
- ++var4;
- }
-
- var3 = true;
- }
-
- this.args[var5] = var6;
- }
- }
-
- switch (var4) {
- case 0:
- return null;
- case 1:
- int var13 = this.args.length;
-
- while(var13-- > 0) {
- if (this.args[var13] != null) {
- return ((Statement)this).eliminate(var1, this.args[var13]);
- }
- }
- default:
- if (var3 || var4 != this.args.length) {
- Statement[] var14 = new Statement[var4];
- int var7 = this.args.length;
-
- while(var7-- > 0) {
- Statement var8 = this.args[var7];
- if (var8 != null) {
- if (var8.op == 105 && var8.labels == null) {
- Statement[] var9 = ((CompoundStatement)var8).args;
-
- for(int var10 = var9.length; var10-- > 0; var14[var4] = var9[var10]) {
- --var4;
- }
- } else {
- --var4;
- var14[var4] = var8;
- }
- }
- }
-
- this.args = var14;
- }
-
- return this;
- }
- }
-
- public Statement copyInline(Context var1, boolean var2) {
- CompoundStatement var3 = (CompoundStatement)((Node)this).clone();
- var3.args = new Statement[this.args.length];
-
- for(int var4 = 0; var4 < this.args.length; ++var4) {
- var3.args[var4] = this.args[var4].copyInline(var1, var2);
- }
-
- return var3;
- }
-
- public int costInline(int var1, Environment var2, Context var3) {
- int var4 = 0;
-
- for(int var5 = 0; var5 < this.args.length && var4 < var1; ++var5) {
- var4 += this.args[var5].costInline(var1, var2, var3);
- }
-
- return var4;
- }
-
- public void code(Environment var1, Context var2, Assembler var3) {
- CodeContext var4 = new CodeContext(var2, this);
-
- for(int var5 = 0; var5 < this.args.length; ++var5) {
- this.args[var5].code(var1, var4, var3);
- }
-
- var3.add(var4.breakLabel);
- }
-
- public Expression firstConstructor() {
- return this.args.length > 0 ? this.args[0].firstConstructor() : null;
- }
-
- public void print(PrintStream var1, int var2) {
- super.print(var1, var2);
- var1.print("{\n");
-
- for(int var3 = 0; var3 < this.args.length; ++var3) {
- ((Statement)this).printIndent(var1, var2 + 1);
- if (this.args[var3] != null) {
- this.args[var3].print(var1, var2 + 1);
- } else {
- var1.print("<empty>");
- }
-
- var1.print("\n");
- }
-
- ((Statement)this).printIndent(var1, var2);
- var1.print("}");
- }
- }
-