public class sun.tools.tree.IfStatement extends sun.tools.tree.Statement
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: sun.tools.tree.IfStatement
super_class: sun.tools.tree.Statement
{
sun.tools.tree.Expression cond;
descriptor: Lsun/tools/tree/Expression;
flags: (0x0000)
sun.tools.tree.Statement ifTrue;
descriptor: Lsun/tools/tree/Statement;
flags: (0x0000)
sun.tools.tree.Statement ifFalse;
descriptor: Lsun/tools/tree/Statement;
flags: (0x0000)
public void <init>(long, sun.tools.tree.Expression, sun.tools.tree.Statement, sun.tools.tree.Statement);
descriptor: (JLsun/tools/tree/Expression;Lsun/tools/tree/Statement;Lsun/tools/tree/Statement;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=6, args_size=5
start local 0 start local 1 start local 3 start local 4 start local 5 0: aload 0
bipush 90
lload 1
invokespecial sun.tools.tree.Statement.<init>:(IJ)V
1: aload 0
aload 3
putfield sun.tools.tree.IfStatement.cond:Lsun/tools/tree/Expression;
2: aload 0
aload 4
putfield sun.tools.tree.IfStatement.ifTrue:Lsun/tools/tree/Statement;
3: aload 0
aload 5
putfield sun.tools.tree.IfStatement.ifFalse:Lsun/tools/tree/Statement;
4: return
end local 5 end local 4 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lsun/tools/tree/IfStatement;
0 5 1 where J
0 5 3 cond Lsun/tools/tree/Expression;
0 5 4 ifTrue Lsun/tools/tree/Statement;
0 5 5 ifFalse Lsun/tools/tree/Statement;
MethodParameters:
Name Flags
where
cond
ifTrue
ifFalse
sun.tools.tree.Vset check(sun.tools.java.Environment, sun.tools.tree.Context, sun.tools.tree.Vset, java.util.Hashtable<java.lang.Object, java.lang.Object>);
descriptor: (Lsun/tools/java/Environment;Lsun/tools/tree/Context;Lsun/tools/tree/Vset;Ljava/util/Hashtable;)Lsun/tools/tree/Vset;
flags: (0x0000)
Code:
stack=6, locals=9, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
aload 1
aload 2
invokevirtual sun.tools.tree.IfStatement.checkLabel:(Lsun/tools/java/Environment;Lsun/tools/tree/Context;)V
1: new sun.tools.tree.CheckContext
dup
aload 2
aload 0
invokespecial sun.tools.tree.CheckContext.<init>:(Lsun/tools/tree/Context;Lsun/tools/tree/Statement;)V
astore 5
start local 5 2: aload 0
getfield sun.tools.tree.IfStatement.cond:Lsun/tools/tree/Expression;
aload 1
aload 5
aload 0
aload 1
aload 3
invokevirtual sun.tools.tree.IfStatement.reach:(Lsun/tools/java/Environment;Lsun/tools/tree/Vset;)Lsun/tools/tree/Vset;
aload 4
invokevirtual sun.tools.tree.Expression.checkCondition:(Lsun/tools/java/Environment;Lsun/tools/tree/Context;Lsun/tools/tree/Vset;Ljava/util/Hashtable;)Lsun/tools/tree/ConditionVars;
3: astore 6
start local 6 4: aload 0
aload 0
aload 1
aload 5
getstatic sun.tools.java.Type.tBoolean:Lsun/tools/java/Type;
aload 0
getfield sun.tools.tree.IfStatement.cond:Lsun/tools/tree/Expression;
invokevirtual sun.tools.tree.IfStatement.convert:(Lsun/tools/java/Environment;Lsun/tools/tree/Context;Lsun/tools/java/Type;Lsun/tools/tree/Expression;)Lsun/tools/tree/Expression;
putfield sun.tools.tree.IfStatement.cond:Lsun/tools/tree/Expression;
5: aload 6
getfield sun.tools.tree.ConditionVars.vsTrue:Lsun/tools/tree/Vset;
invokevirtual sun.tools.tree.Vset.clearDeadEnd:()Lsun/tools/tree/Vset;
astore 7
start local 7 6: aload 6
getfield sun.tools.tree.ConditionVars.vsFalse:Lsun/tools/tree/Vset;
invokevirtual sun.tools.tree.Vset.clearDeadEnd:()Lsun/tools/tree/Vset;
astore 8
start local 8 7: aload 0
getfield sun.tools.tree.IfStatement.ifTrue:Lsun/tools/tree/Statement;
aload 1
aload 5
aload 7
aload 4
invokevirtual sun.tools.tree.Statement.check:(Lsun/tools/java/Environment;Lsun/tools/tree/Context;Lsun/tools/tree/Vset;Ljava/util/Hashtable;)Lsun/tools/tree/Vset;
astore 7
8: aload 0
getfield sun.tools.tree.IfStatement.ifFalse:Lsun/tools/tree/Statement;
ifnull 10
9: aload 0
getfield sun.tools.tree.IfStatement.ifFalse:Lsun/tools/tree/Statement;
aload 1
aload 5
aload 8
aload 4
invokevirtual sun.tools.tree.Statement.check:(Lsun/tools/java/Environment;Lsun/tools/tree/Context;Lsun/tools/tree/Vset;Ljava/util/Hashtable;)Lsun/tools/tree/Vset;
astore 8
10: StackMap locals: sun.tools.tree.IfStatement sun.tools.java.Environment sun.tools.tree.Context sun.tools.tree.Vset java.util.Hashtable sun.tools.tree.CheckContext sun.tools.tree.ConditionVars sun.tools.tree.Vset sun.tools.tree.Vset
StackMap stack:
aload 7
aload 8
aload 5
getfield sun.tools.tree.CheckContext.vsBreak:Lsun/tools/tree/Vset;
invokevirtual sun.tools.tree.Vset.join:(Lsun/tools/tree/Vset;)Lsun/tools/tree/Vset;
invokevirtual sun.tools.tree.Vset.join:(Lsun/tools/tree/Vset;)Lsun/tools/tree/Vset;
astore 3
11: aload 2
aload 3
invokevirtual sun.tools.tree.Context.removeAdditionalVars:(Lsun/tools/tree/Vset;)Lsun/tools/tree/Vset;
areturn
end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lsun/tools/tree/IfStatement;
0 12 1 env Lsun/tools/java/Environment;
0 12 2 ctx Lsun/tools/tree/Context;
0 12 3 vset Lsun/tools/tree/Vset;
0 12 4 exp Ljava/util/Hashtable<Ljava/lang/Object;Ljava/lang/Object;>;
2 12 5 newctx Lsun/tools/tree/CheckContext;
4 12 6 cvars Lsun/tools/tree/ConditionVars;
6 12 7 vsTrue Lsun/tools/tree/Vset;
7 12 8 vsFalse Lsun/tools/tree/Vset;
Signature: (Lsun/tools/java/Environment;Lsun/tools/tree/Context;Lsun/tools/tree/Vset;Ljava/util/Hashtable<Ljava/lang/Object;Ljava/lang/Object;>;)Lsun/tools/tree/Vset;
MethodParameters:
Name Flags
env
ctx
vset
exp
public sun.tools.tree.Statement inline(sun.tools.java.Environment, sun.tools.tree.Context);
descriptor: (Lsun/tools/java/Environment;Lsun/tools/tree/Context;)Lsun/tools/tree/Statement;
flags: (0x0001) ACC_PUBLIC
Code:
stack=9, locals=3, args_size=3
start local 0 start local 1 start local 2 0: new sun.tools.tree.Context
dup
aload 2
aload 0
invokespecial sun.tools.tree.Context.<init>:(Lsun/tools/tree/Context;Lsun/tools/tree/Node;)V
astore 2
1: aload 0
aload 0
getfield sun.tools.tree.IfStatement.cond:Lsun/tools/tree/Expression;
aload 1
aload 2
invokevirtual sun.tools.tree.Expression.inlineValue:(Lsun/tools/java/Environment;Lsun/tools/tree/Context;)Lsun/tools/tree/Expression;
putfield sun.tools.tree.IfStatement.cond:Lsun/tools/tree/Expression;
2: aload 0
getfield sun.tools.tree.IfStatement.ifTrue:Lsun/tools/tree/Statement;
ifnull 4
3: aload 0
aload 0
getfield sun.tools.tree.IfStatement.ifTrue:Lsun/tools/tree/Statement;
aload 1
aload 2
invokevirtual sun.tools.tree.Statement.inline:(Lsun/tools/java/Environment;Lsun/tools/tree/Context;)Lsun/tools/tree/Statement;
putfield sun.tools.tree.IfStatement.ifTrue:Lsun/tools/tree/Statement;
4: StackMap locals:
StackMap stack:
aload 0
getfield sun.tools.tree.IfStatement.ifFalse:Lsun/tools/tree/Statement;
ifnull 6
5: aload 0
aload 0
getfield sun.tools.tree.IfStatement.ifFalse:Lsun/tools/tree/Statement;
aload 1
aload 2
invokevirtual sun.tools.tree.Statement.inline:(Lsun/tools/java/Environment;Lsun/tools/tree/Context;)Lsun/tools/tree/Statement;
putfield sun.tools.tree.IfStatement.ifFalse:Lsun/tools/tree/Statement;
6: StackMap locals:
StackMap stack:
aload 0
getfield sun.tools.tree.IfStatement.cond:Lsun/tools/tree/Expression;
iconst_1
invokevirtual sun.tools.tree.Expression.equals:(Z)Z
ifeq 8
7: aload 0
aload 1
aload 0
getfield sun.tools.tree.IfStatement.ifTrue:Lsun/tools/tree/Statement;
invokevirtual sun.tools.tree.IfStatement.eliminate:(Lsun/tools/java/Environment;Lsun/tools/tree/Statement;)Lsun/tools/tree/Statement;
areturn
8: StackMap locals:
StackMap stack:
aload 0
getfield sun.tools.tree.IfStatement.cond:Lsun/tools/tree/Expression;
iconst_0
invokevirtual sun.tools.tree.Expression.equals:(Z)Z
ifeq 10
9: aload 0
aload 1
aload 0
getfield sun.tools.tree.IfStatement.ifFalse:Lsun/tools/tree/Statement;
invokevirtual sun.tools.tree.IfStatement.eliminate:(Lsun/tools/java/Environment;Lsun/tools/tree/Statement;)Lsun/tools/tree/Statement;
areturn
10: StackMap locals:
StackMap stack:
aload 0
getfield sun.tools.tree.IfStatement.ifTrue:Lsun/tools/tree/Statement;
ifnonnull 12
aload 0
getfield sun.tools.tree.IfStatement.ifFalse:Lsun/tools/tree/Statement;
ifnonnull 12
11: aload 0
aload 1
new sun.tools.tree.ExpressionStatement
dup
aload 0
getfield sun.tools.tree.IfStatement.where:J
aload 0
getfield sun.tools.tree.IfStatement.cond:Lsun/tools/tree/Expression;
invokespecial sun.tools.tree.ExpressionStatement.<init>:(JLsun/tools/tree/Expression;)V
aload 1
aload 2
invokevirtual sun.tools.tree.ExpressionStatement.inline:(Lsun/tools/java/Environment;Lsun/tools/tree/Context;)Lsun/tools/tree/Statement;
invokevirtual sun.tools.tree.IfStatement.eliminate:(Lsun/tools/java/Environment;Lsun/tools/tree/Statement;)Lsun/tools/tree/Statement;
areturn
12: StackMap locals:
StackMap stack:
aload 0
getfield sun.tools.tree.IfStatement.ifTrue:Lsun/tools/tree/Statement;
ifnonnull 15
13: aload 0
new sun.tools.tree.NotExpression
dup
aload 0
getfield sun.tools.tree.IfStatement.cond:Lsun/tools/tree/Expression;
getfield sun.tools.tree.Expression.where:J
aload 0
getfield sun.tools.tree.IfStatement.cond:Lsun/tools/tree/Expression;
invokespecial sun.tools.tree.NotExpression.<init>:(JLsun/tools/tree/Expression;)V
aload 1
aload 2
invokevirtual sun.tools.tree.NotExpression.inlineValue:(Lsun/tools/java/Environment;Lsun/tools/tree/Context;)Lsun/tools/tree/Expression;
putfield sun.tools.tree.IfStatement.cond:Lsun/tools/tree/Expression;
14: aload 0
aload 1
new sun.tools.tree.IfStatement
dup
aload 0
getfield sun.tools.tree.IfStatement.where:J
aload 0
getfield sun.tools.tree.IfStatement.cond:Lsun/tools/tree/Expression;
aload 0
getfield sun.tools.tree.IfStatement.ifFalse:Lsun/tools/tree/Statement;
aconst_null
invokespecial sun.tools.tree.IfStatement.<init>:(JLsun/tools/tree/Expression;Lsun/tools/tree/Statement;Lsun/tools/tree/Statement;)V
invokevirtual sun.tools.tree.IfStatement.eliminate:(Lsun/tools/java/Environment;Lsun/tools/tree/Statement;)Lsun/tools/tree/Statement;
areturn
15: StackMap locals:
StackMap stack:
aload 0
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lsun/tools/tree/IfStatement;
0 16 1 env Lsun/tools/java/Environment;
0 16 2 ctx Lsun/tools/tree/Context;
MethodParameters:
Name Flags
env
ctx
public sun.tools.tree.Statement copyInline(sun.tools.tree.Context, boolean);
descriptor: (Lsun/tools/tree/Context;Z)Lsun/tools/tree/Statement;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual sun.tools.tree.IfStatement.clone:()Ljava/lang/Object;
checkcast sun.tools.tree.IfStatement
astore 3
start local 3 1: aload 3
aload 0
getfield sun.tools.tree.IfStatement.cond:Lsun/tools/tree/Expression;
aload 1
invokevirtual sun.tools.tree.Expression.copyInline:(Lsun/tools/tree/Context;)Lsun/tools/tree/Expression;
putfield sun.tools.tree.IfStatement.cond:Lsun/tools/tree/Expression;
2: aload 0
getfield sun.tools.tree.IfStatement.ifTrue:Lsun/tools/tree/Statement;
ifnull 4
3: aload 3
aload 0
getfield sun.tools.tree.IfStatement.ifTrue:Lsun/tools/tree/Statement;
aload 1
iload 2
invokevirtual sun.tools.tree.Statement.copyInline:(Lsun/tools/tree/Context;Z)Lsun/tools/tree/Statement;
putfield sun.tools.tree.IfStatement.ifTrue:Lsun/tools/tree/Statement;
4: StackMap locals: sun.tools.tree.IfStatement
StackMap stack:
aload 0
getfield sun.tools.tree.IfStatement.ifFalse:Lsun/tools/tree/Statement;
ifnull 6
5: aload 3
aload 0
getfield sun.tools.tree.IfStatement.ifFalse:Lsun/tools/tree/Statement;
aload 1
iload 2
invokevirtual sun.tools.tree.Statement.copyInline:(Lsun/tools/tree/Context;Z)Lsun/tools/tree/Statement;
putfield sun.tools.tree.IfStatement.ifFalse:Lsun/tools/tree/Statement;
6: StackMap locals:
StackMap stack:
aload 3
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lsun/tools/tree/IfStatement;
0 7 1 ctx Lsun/tools/tree/Context;
0 7 2 valNeeded Z
1 7 3 s Lsun/tools/tree/IfStatement;
MethodParameters:
Name Flags
ctx
valNeeded
public int costInline(int, sun.tools.java.Environment, sun.tools.tree.Context);
descriptor: (ILsun/tools/java/Environment;Lsun/tools/tree/Context;)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iconst_1
aload 0
getfield sun.tools.tree.IfStatement.cond:Lsun/tools/tree/Expression;
iload 1
aload 2
aload 3
invokevirtual sun.tools.tree.Expression.costInline:(ILsun/tools/java/Environment;Lsun/tools/tree/Context;)I
iadd
istore 4
start local 4 1: aload 0
getfield sun.tools.tree.IfStatement.ifTrue:Lsun/tools/tree/Statement;
ifnull 3
2: iload 4
aload 0
getfield sun.tools.tree.IfStatement.ifTrue:Lsun/tools/tree/Statement;
iload 1
aload 2
aload 3
invokevirtual sun.tools.tree.Statement.costInline:(ILsun/tools/java/Environment;Lsun/tools/tree/Context;)I
iadd
istore 4
3: StackMap locals: int
StackMap stack:
aload 0
getfield sun.tools.tree.IfStatement.ifFalse:Lsun/tools/tree/Statement;
ifnull 5
4: iload 4
aload 0
getfield sun.tools.tree.IfStatement.ifFalse:Lsun/tools/tree/Statement;
iload 1
aload 2
aload 3
invokevirtual sun.tools.tree.Statement.costInline:(ILsun/tools/java/Environment;Lsun/tools/tree/Context;)I
iadd
istore 4
5: StackMap locals:
StackMap stack:
iload 4
ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lsun/tools/tree/IfStatement;
0 6 1 thresh I
0 6 2 env Lsun/tools/java/Environment;
0 6 3 ctx Lsun/tools/tree/Context;
1 6 4 cost I
MethodParameters:
Name Flags
thresh
env
ctx
public void code(sun.tools.java.Environment, sun.tools.tree.Context, sun.tools.asm.Assembler);
descriptor: (Lsun/tools/java/Environment;Lsun/tools/tree/Context;Lsun/tools/asm/Assembler;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 3 0: new sun.tools.tree.CodeContext
dup
aload 2
aload 0
invokespecial sun.tools.tree.CodeContext.<init>:(Lsun/tools/tree/Context;Lsun/tools/tree/Node;)V
astore 4
start local 4 1: new sun.tools.asm.Label
dup
invokespecial sun.tools.asm.Label.<init>:()V
astore 5
start local 5 2: aload 0
getfield sun.tools.tree.IfStatement.cond:Lsun/tools/tree/Expression;
aload 1
aload 4
aload 3
aload 5
iconst_0
invokevirtual sun.tools.tree.Expression.codeBranch:(Lsun/tools/java/Environment;Lsun/tools/tree/Context;Lsun/tools/asm/Assembler;Lsun/tools/asm/Label;Z)V
3: aload 0
getfield sun.tools.tree.IfStatement.ifTrue:Lsun/tools/tree/Statement;
aload 1
aload 4
aload 3
invokevirtual sun.tools.tree.Statement.code:(Lsun/tools/java/Environment;Lsun/tools/tree/Context;Lsun/tools/asm/Assembler;)V
4: aload 0
getfield sun.tools.tree.IfStatement.ifFalse:Lsun/tools/tree/Statement;
ifnull 11
5: new sun.tools.asm.Label
dup
invokespecial sun.tools.asm.Label.<init>:()V
astore 6
start local 6 6: aload 3
iconst_1
aload 0
getfield sun.tools.tree.IfStatement.where:J
sipush 167
aload 6
invokevirtual sun.tools.asm.Assembler.add:(ZJILjava/lang/Object;)V
7: aload 3
aload 5
invokevirtual sun.tools.asm.Assembler.add:(Lsun/tools/asm/Instruction;)V
8: aload 0
getfield sun.tools.tree.IfStatement.ifFalse:Lsun/tools/tree/Statement;
aload 1
aload 4
aload 3
invokevirtual sun.tools.tree.Statement.code:(Lsun/tools/java/Environment;Lsun/tools/tree/Context;Lsun/tools/asm/Assembler;)V
9: aload 3
aload 6
invokevirtual sun.tools.asm.Assembler.add:(Lsun/tools/asm/Instruction;)V
end local 6 10: goto 12
11: StackMap locals: sun.tools.tree.CodeContext sun.tools.asm.Label
StackMap stack:
aload 3
aload 5
invokevirtual sun.tools.asm.Assembler.add:(Lsun/tools/asm/Instruction;)V
12: StackMap locals:
StackMap stack:
aload 3
aload 4
getfield sun.tools.tree.CodeContext.breakLabel:Lsun/tools/asm/Label;
invokevirtual sun.tools.asm.Assembler.add:(Lsun/tools/asm/Instruction;)V
13: return
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lsun/tools/tree/IfStatement;
0 14 1 env Lsun/tools/java/Environment;
0 14 2 ctx Lsun/tools/tree/Context;
0 14 3 asm Lsun/tools/asm/Assembler;
1 14 4 newctx Lsun/tools/tree/CodeContext;
2 14 5 l1 Lsun/tools/asm/Label;
6 10 6 l2 Lsun/tools/asm/Label;
MethodParameters:
Name Flags
env
ctx
asm
public void print(java.io.PrintStream, int);
descriptor: (Ljava/io/PrintStream;I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
iload 2
invokespecial sun.tools.tree.Statement.print:(Ljava/io/PrintStream;I)V
1: aload 1
ldc "if "
invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
2: aload 0
getfield sun.tools.tree.IfStatement.cond:Lsun/tools/tree/Expression;
aload 1
invokevirtual sun.tools.tree.Expression.print:(Ljava/io/PrintStream;)V
3: aload 1
ldc " "
invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
4: aload 0
getfield sun.tools.tree.IfStatement.ifTrue:Lsun/tools/tree/Statement;
aload 1
iload 2
invokevirtual sun.tools.tree.Statement.print:(Ljava/io/PrintStream;I)V
5: aload 0
getfield sun.tools.tree.IfStatement.ifFalse:Lsun/tools/tree/Statement;
ifnull 8
6: aload 1
ldc " else "
invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
7: aload 0
getfield sun.tools.tree.IfStatement.ifFalse:Lsun/tools/tree/Statement;
aload 1
iload 2
invokevirtual sun.tools.tree.Statement.print:(Ljava/io/PrintStream;I)V
8: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lsun/tools/tree/IfStatement;
0 9 1 out Ljava/io/PrintStream;
0 9 2 indent I
MethodParameters:
Name Flags
out
indent
}
SourceFile: "IfStatement.java"