final class jdk.nashorn.internal.codegen.LocalVariableTypesCalculator extends jdk.nashorn.internal.ir.visitor.SimpleNodeVisitor
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator
super_class: jdk.nashorn.internal.ir.visitor.SimpleNodeVisitor
{
private static final java.util.Map<jdk.nashorn.internal.codegen.types.Type, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType> TO_LVAR_TYPE;
descriptor: Ljava/util/Map;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/Map<Ljdk/nashorn/internal/codegen/types/Type;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
private final jdk.nashorn.internal.codegen.Compiler compiler;
descriptor: Ljdk/nashorn/internal/codegen/Compiler;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.Map<jdk.nashorn.internal.codegen.Label, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget> jumpTargets;
descriptor: Ljava/util/Map;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Map<Ljdk/nashorn/internal/codegen/Label;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$JumpTarget;>;
private java.util.Map<jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType> localVariableTypes;
descriptor: Ljava/util/Map;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
private final java.util.Set<jdk.nashorn.internal.ir.Symbol> invalidatedSymbols;
descriptor: Ljava/util/Set;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Set<Ljdk/nashorn/internal/ir/Symbol;>;
private final java.util.Deque<jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType> typeStack;
descriptor: Ljava/util/Deque;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Deque<Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
private boolean reachable;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private jdk.nashorn.internal.codegen.types.Type returnType;
descriptor: Ljdk/nashorn/internal/codegen/types/Type;
flags: (0x0002) ACC_PRIVATE
private jdk.nashorn.internal.ir.ReturnNode syntheticReturn;
descriptor: Ljdk/nashorn/internal/ir/ReturnNode;
flags: (0x0002) ACC_PRIVATE
private boolean alreadyEnteredTopLevelFunction;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private final java.util.Map<jdk.nashorn.internal.ir.JoinPredecessor, jdk.nashorn.internal.ir.LocalVariableConversion> localVariableConversions;
descriptor: Ljava/util/Map;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Map<Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/ir/LocalVariableConversion;>;
private final java.util.Map<jdk.nashorn.internal.ir.IdentNode, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType> identifierLvarTypes;
descriptor: Ljava/util/Map;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Map<Ljdk/nashorn/internal/ir/IdentNode;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
private final java.util.Map<jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$SymbolConversions> symbolConversions;
descriptor: Ljava/util/Map;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$SymbolConversions;>;
private final java.util.Deque<jdk.nashorn.internal.codegen.Label> catchLabels;
descriptor: Ljava/util/Deque;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Deque<Ljdk/nashorn/internal/codegen/Label;>;
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=4, args_size=0
0: ldc Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
invokevirtual java.lang.Class.desiredAssertionStatus:()Z
ifne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: putstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
3: new java.util.IdentityHashMap
dup
invokespecial java.util.IdentityHashMap.<init>:()V
putstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.TO_LVAR_TYPE:Ljava/util/Map;
4: invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.values:()[Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
dup
astore 3
arraylength
istore 2
iconst_0
istore 1
goto 8
StackMap locals: top int int jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType[]
StackMap stack:
5: aload 3
iload 1
aaload
astore 0
start local 0 6: getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.TO_LVAR_TYPE:Ljava/util/Map;
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.type:Ljdk/nashorn/internal/codegen/types/Type;
aload 0
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 0 7: iinc 1 1
StackMap locals:
StackMap stack:
8: iload 1
iload 2
if_icmplt 5
9: return
LocalVariableTable:
Start End Slot Name Signature
6 7 0 lvarType Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
private static java.util.HashMap<jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType> cloneMap(java.util.Map<jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType>);
descriptor: (Ljava/util/Map;)Ljava/util/HashMap;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
checkcast java.util.HashMap
invokevirtual java.util.HashMap.clone:()Ljava/lang/Object;
checkcast java.util.HashMap
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 map Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
Signature: (Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;)Ljava/util/HashMap<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
MethodParameters:
Name Flags
map final
private jdk.nashorn.internal.ir.LocalVariableConversion createConversion(jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType, java.util.Map<jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType>, jdk.nashorn.internal.ir.LocalVariableConversion);
descriptor: (Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;Ljava/util/Map;Ljdk/nashorn/internal/ir/LocalVariableConversion;)Ljdk/nashorn/internal/ir/LocalVariableConversion;
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=6, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.invalidatedSymbols:Ljava/util/Set;
aload 1
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifeq 2
1: aload 4
areturn
2: StackMap locals:
StackMap stack:
aload 3
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
astore 5
start local 5 3: getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
ifne 4
aload 5
ifnonnull 4
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
4: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
StackMap stack:
aload 5
aload 2
if_acmpne 6
5: aload 4
areturn
6: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 2
aload 5
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.symbolIsConverted:(Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
7: new jdk.nashorn.internal.ir.LocalVariableConversion
dup
aload 1
aload 2
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.type:Ljdk/nashorn/internal/codegen/types/Type;
aload 5
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.type:Ljdk/nashorn/internal/codegen/types/Type;
aload 4
invokespecial jdk.nashorn.internal.ir.LocalVariableConversion.<init>:(Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/types/Type;Ljdk/nashorn/internal/codegen/types/Type;Ljdk/nashorn/internal/ir/LocalVariableConversion;)V
areturn
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 8 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 8 1 symbol Ljdk/nashorn/internal/ir/Symbol;
0 8 2 branchLvarType Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
0 8 3 joinLvarTypes Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
0 8 4 next Ljdk/nashorn/internal/ir/LocalVariableConversion;
3 8 5 targetType Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
Signature: (Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;Ljdk/nashorn/internal/ir/LocalVariableConversion;)Ljdk/nashorn/internal/ir/LocalVariableConversion;
MethodParameters:
Name Flags
symbol final
branchLvarType final
joinLvarTypes final
next final
private java.util.Map<jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType> getUnionTypes(java.util.Map<jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType>, java.util.Map<jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType>);
descriptor: (Ljava/util/Map;Ljava/util/Map;)Ljava/util/Map;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=15, args_size=3
start local 0 start local 1 start local 2 0: aload 1
aload 2
if_acmpeq 1
aload 1
invokeinterface java.util.Map.isEmpty:()Z
ifeq 2
1: StackMap locals:
StackMap stack:
aload 2
areturn
2: StackMap locals:
StackMap stack:
aload 2
invokeinterface java.util.Map.isEmpty:()Z
ifeq 4
3: aload 1
areturn
4: StackMap locals:
StackMap stack:
new java.util.HashSet
dup
aload 1
invokeinterface java.util.Map.keySet:()Ljava/util/Set;
invokespecial java.util.HashSet.<init>:(Ljava/util/Collection;)V
astore 3
start local 3 5: aload 3
aload 2
invokeinterface java.util.Map.keySet:()Ljava/util/Set;
invokeinterface java.util.Set.retainAll:(Ljava/util/Collection;)Z
pop
6: aload 3
invokeinterface java.util.Set.size:()I
istore 4
start local 4 7: aload 1
invokeinterface java.util.Map.size:()I
istore 5
start local 5 8: aload 2
invokeinterface java.util.Map.size:()I
istore 6
start local 6 9: iload 4
iload 5
if_icmpne 34
iload 4
iload 6
if_icmpne 34
10: iconst_1
istore 7
start local 7 11: iconst_1
istore 8
start local 8 12: aconst_null
astore 9
start local 9 13: aload 3
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 11
goto 29
StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator java.util.Map java.util.Map java.util.Set int int int int int java.util.Map top java.util.Iterator
StackMap stack:
14: aload 11
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast jdk.nashorn.internal.ir.Symbol
astore 10
start local 10 15: aload 1
aload 10
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
astore 12
start local 12 16: aload 2
aload 10
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
astore 13
start local 13 17: aload 12
aload 13
invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.widestLvarType:(Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
astore 14
start local 14 18: aload 14
aload 12
if_acmpeq 22
iload 7
ifeq 22
19: iconst_0
istore 7
20: iload 8
ifne 22
21: aload 1
invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.cloneMap:(Ljava/util/Map;)Ljava/util/HashMap;
astore 9
22: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator java.util.Map java.util.Map java.util.Set int int int int int java.util.Map jdk.nashorn.internal.ir.Symbol java.util.Iterator jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
StackMap stack:
aload 14
aload 13
if_acmpeq 26
iload 8
ifeq 26
23: iconst_0
istore 8
24: iload 7
ifne 26
25: aload 2
invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.cloneMap:(Ljava/util/Map;)Ljava/util/HashMap;
astore 9
26: StackMap locals:
StackMap stack:
iload 7
ifne 29
iload 8
ifne 29
27: getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
ifne 28
aload 9
ifnonnull 28
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
28: StackMap locals:
StackMap stack:
aload 9
aload 10
aload 14
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 14 end local 13 end local 12 end local 10 29: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator java.util.Map java.util.Map java.util.Set int int int int int java.util.Map top java.util.Iterator
StackMap stack:
aload 11
invokeinterface java.util.Iterator.hasNext:()Z
ifne 14
30: iload 7
ifeq 31
aload 1
goto 33
StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator java.util.Map java.util.Map java.util.Set int int int int int java.util.Map
StackMap stack:
31: iload 8
ifeq 32
aload 2
goto 33
StackMap locals:
StackMap stack:
32: aload 9
StackMap locals:
StackMap stack: java.util.Map
33: areturn
end local 9 end local 8 end local 7 34: StackMap locals:
StackMap stack:
iload 5
iload 6
if_icmple 38
35: aload 1
invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.cloneMap:(Ljava/util/Map;)Ljava/util/HashMap;
astore 7
start local 7 36: aload 7
aload 2
invokeinterface java.util.Map.putAll:(Ljava/util/Map;)V
37: goto 40
end local 7 38: StackMap locals:
StackMap stack:
aload 2
invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.cloneMap:(Ljava/util/Map;)Ljava/util/HashMap;
astore 7
start local 7 39: aload 7
aload 1
invokeinterface java.util.Map.putAll:(Ljava/util/Map;)V
40: StackMap locals: java.util.Map
StackMap stack:
aload 3
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 9
goto 45
StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator java.util.Map java.util.Map java.util.Set int int int java.util.Map top java.util.Iterator
StackMap stack:
41: aload 9
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast jdk.nashorn.internal.ir.Symbol
astore 8
start local 8 42: aload 1
aload 8
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
astore 10
start local 10 43: aload 2
aload 8
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
astore 11
start local 11 44: aload 7
aload 8
aload 10
aload 11
invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.widestLvarType:(Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 11 end local 10 end local 8 45: StackMap locals:
StackMap stack:
aload 9
invokeinterface java.util.Iterator.hasNext:()Z
ifne 41
46: aload 7
invokeinterface java.util.Map.keySet:()Ljava/util/Set;
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.invalidatedSymbols:Ljava/util/Set;
invokeinterface java.util.Set.removeAll:(Ljava/util/Collection;)Z
pop
47: aload 7
areturn
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 48 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 48 1 types1 Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
0 48 2 types2 Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
5 48 3 commonSymbols Ljava/util/Set<Ljdk/nashorn/internal/ir/Symbol;>;
7 48 4 commonSize I
8 48 5 types1Size I
9 48 6 types2Size I
11 34 7 matches1 Z
12 34 8 matches2 Z
13 34 9 union Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
15 29 10 symbol Ljdk/nashorn/internal/ir/Symbol;
16 29 12 type1 Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
17 29 13 type2 Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
18 29 14 widest Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
36 38 7 union Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
39 48 7 union Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
42 45 8 symbol Ljdk/nashorn/internal/ir/Symbol;
43 45 10 type1 Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
44 45 11 type2 Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
Signature: (Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;)Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
MethodParameters:
Name Flags
types1 final
types2 final
private static void symbolIsUsed(jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType);
descriptor: (Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.UNDEFINED:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
if_acmpeq 2
1: aload 0
aload 1
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.type:Ljdk/nashorn/internal/codegen/types/Type;
invokevirtual jdk.nashorn.internal.ir.Symbol.setHasSlotFor:(Ljdk/nashorn/internal/codegen/types/Type;)V
2: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 symbol Ljdk/nashorn/internal/ir/Symbol;
0 3 1 type Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
MethodParameters:
Name Flags
symbol final
type final
private void symbolIsConverted(jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType);
descriptor: (Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.symbolConversions:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$SymbolConversions
astore 4
start local 4 1: aload 4
ifnonnull 4
2: new jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$SymbolConversions
dup
invokespecial jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$SymbolConversions.<init>:()V
astore 4
3: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.symbolConversions:Ljava/util/Map;
aload 1
aload 4
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
4: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$SymbolConversions
StackMap stack:
aload 4
aload 2
aload 3
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$SymbolConversions.recordConversion:(Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
5: return
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 Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 6 1 symbol Ljdk/nashorn/internal/ir/Symbol;
0 6 2 from Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
0 6 3 to Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
1 6 4 conversions Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$SymbolConversions;
MethodParameters:
Name Flags
symbol final
from final
to final
private static jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType toLvarType(jdk.nashorn.internal.codegen.types.Type);
descriptor: (Ljdk/nashorn/internal/codegen/types/Type;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=2, args_size=1
start local 0 0: getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
ifne 1
aload 0
ifnonnull 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.TO_LVAR_TYPE:Ljava/util/Map;
aload 0
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
astore 1
start local 1 2: aload 1
ifnull 4
3: aload 1
areturn
4: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
StackMap stack:
getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
ifne 5
aload 0
invokevirtual jdk.nashorn.internal.codegen.types.Type.isObject:()Z
ifne 5
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "Unsupported primitive type: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
5: StackMap locals:
StackMap stack:
getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.OBJECT:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 type Ljdk/nashorn/internal/codegen/types/Type;
2 6 1 lvarType Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
MethodParameters:
Name Flags
type final
private static jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType widestLvarType(jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType);
descriptor: (Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
if_acmpne 2
1: aload 0
areturn
2: StackMap locals:
StackMap stack:
aload 0
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.ordinal:()I
getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.INT:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.ordinal:()I
if_icmplt 3
aload 1
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.ordinal:()I
getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.INT:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.ordinal:()I
if_icmpge 4
3: StackMap locals:
StackMap stack:
getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.OBJECT:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
areturn
4: StackMap locals:
StackMap stack:
invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.values:()[Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
aload 0
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.ordinal:()I
aload 1
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.ordinal:()I
invokestatic java.lang.Math.max:(II)I
aaload
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 t1 Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
0 5 1 t2 Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
MethodParameters:
Name Flags
t1 final
t2 final
private void <init>(jdk.nashorn.internal.codegen.Compiler);
descriptor: (Ljdk/nashorn/internal/codegen/Compiler;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial jdk.nashorn.internal.ir.visitor.SimpleNodeVisitor.<init>:()V
1: aload 0
new java.util.IdentityHashMap
dup
invokespecial java.util.IdentityHashMap.<init>:()V
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpTargets:Ljava/util/Map;
2: aload 0
invokestatic java.util.Collections.emptyMap:()Ljava/util/Map;
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
3: aload 0
new java.util.HashSet
dup
invokespecial java.util.HashSet.<init>:()V
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.invalidatedSymbols:Ljava/util/Set;
4: aload 0
new java.util.ArrayDeque
dup
invokespecial java.util.ArrayDeque.<init>:()V
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.typeStack:Ljava/util/Deque;
5: aload 0
iconst_1
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
6: aload 0
getstatic jdk.nashorn.internal.codegen.types.Type.UNKNOWN:Ljdk/nashorn/internal/codegen/types/Type;
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.returnType:Ljdk/nashorn/internal/codegen/types/Type;
7: aload 0
new java.util.IdentityHashMap
dup
invokespecial java.util.IdentityHashMap.<init>:()V
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableConversions:Ljava/util/Map;
8: aload 0
new java.util.IdentityHashMap
dup
invokespecial java.util.IdentityHashMap.<init>:()V
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.identifierLvarTypes:Ljava/util/Map;
9: aload 0
new java.util.IdentityHashMap
dup
invokespecial java.util.IdentityHashMap.<init>:()V
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.symbolConversions:Ljava/util/Map;
10: aload 0
new java.util.ArrayDeque
dup
invokespecial java.util.ArrayDeque.<init>:()V
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.catchLabels:Ljava/util/Deque;
11: aload 0
aload 1
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.compiler:Ljdk/nashorn/internal/codegen/Compiler;
12: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 13 1 compiler Ljdk/nashorn/internal/codegen/Compiler;
MethodParameters:
Name Flags
compiler final
void <init>(jdk.nashorn.internal.codegen.Compiler, jdk.nashorn.internal.codegen.types.Type);
descriptor: (Ljdk/nashorn/internal/codegen/Compiler;Ljdk/nashorn/internal/codegen/types/Type;)V
flags: (0x0000)
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
invokespecial jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.<init>:(Ljdk/nashorn/internal/codegen/Compiler;)V
1: aload 0
aload 2
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.returnType:Ljdk/nashorn/internal/codegen/types/Type;
2: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 3 1 compiler Ljdk/nashorn/internal/codegen/Compiler;
0 3 2 returnType Ljdk/nashorn/internal/codegen/types/Type;
MethodParameters:
Name Flags
compiler final
returnType final
private jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget createJumpTarget(jdk.nashorn.internal.codegen.Label);
descriptor: (Ljdk/nashorn/internal/codegen/Label;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$JumpTarget;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
ifne 1
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpTargets:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
ifeq 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
new jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget
dup
invokespecial jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget.<init>:()V
astore 2
start local 2 2: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpTargets:Ljava/util/Map;
aload 1
aload 2
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
3: aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 4 1 label Ljdk/nashorn/internal/codegen/Label;
2 4 2 jumpTarget Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$JumpTarget;
MethodParameters:
Name Flags
label final
private void doesNotContinueSequentially();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
iconst_0
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
1: aload 0
invokestatic java.util.Collections.emptyMap:()Ljava/util/Map;
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
2: aload 0
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.assertTypeStackIsEmpty:()V
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
private boolean pushExpressionType(jdk.nashorn.internal.ir.Expression);
descriptor: (Ljdk/nashorn/internal/ir/Expression;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.typeStack:Ljava/util/Deque;
aload 1
invokevirtual jdk.nashorn.internal.ir.Expression.getType:()Ljdk/nashorn/internal/codegen/types/Type;
invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.toLvarType:(Ljdk/nashorn/internal/codegen/types/Type;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
1: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 2 1 expr Ljdk/nashorn/internal/ir/Expression;
MethodParameters:
Name Flags
expr final
public boolean enterAccessNode(jdk.nashorn.internal.ir.AccessNode);
descriptor: (Ljdk/nashorn/internal/ir/AccessNode;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual jdk.nashorn.internal.ir.AccessNode.getBase:()Ljdk/nashorn/internal/ir/Expression;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
pop
1: aload 0
aload 1
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.pushExpressionType:(Ljdk/nashorn/internal/ir/Expression;)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 2 1 accessNode Ljdk/nashorn/internal/ir/AccessNode;
MethodParameters:
Name Flags
accessNode final
public boolean enterBinaryNode(jdk.nashorn.internal.ir.BinaryNode);
descriptor: (Ljdk/nashorn/internal/ir/BinaryNode;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=9, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual jdk.nashorn.internal.ir.BinaryNode.lhs:()Ljdk/nashorn/internal/ir/Expression;
astore 2
start local 2 1: aload 2
instanceof jdk.nashorn.internal.ir.IdentNode
ifeq 2
aload 1
getstatic jdk.nashorn.internal.parser.TokenType.ASSIGN:Ljdk/nashorn/internal/parser/TokenType;
invokevirtual jdk.nashorn.internal.ir.BinaryNode.isTokenType:(Ljdk/nashorn/internal/parser/TokenType;)Z
ifne 4
2: StackMap locals: jdk.nashorn.internal.ir.Expression
StackMap stack:
aload 0
aload 2
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
astore 3
start local 3 3: goto 5
end local 3 4: StackMap locals:
StackMap stack:
getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.UNDEFINED:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
astore 3
start local 3 5: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
StackMap stack:
aload 1
invokevirtual jdk.nashorn.internal.ir.BinaryNode.isLogical:()Z
istore 4
start local 4 6: iload 4
ifeq 7
new jdk.nashorn.internal.codegen.Label
dup
ldc ""
invokespecial jdk.nashorn.internal.codegen.Label.<init>:(Ljava/lang/String;)V
goto 8
StackMap locals: int
StackMap stack:
7: aconst_null
StackMap locals:
StackMap stack: jdk.nashorn.internal.codegen.Label
8: astore 5
start local 5 9: iload 4
ifeq 11
10: aload 0
aload 2
checkcast jdk.nashorn.internal.ir.JoinPredecessor
aload 5
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
11: StackMap locals: jdk.nashorn.internal.codegen.Label
StackMap stack:
aload 1
invokevirtual jdk.nashorn.internal.ir.BinaryNode.rhs:()Ljdk/nashorn/internal/ir/Expression;
astore 6
start local 6 12: aload 0
aload 6
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
astore 7
start local 7 13: iload 4
ifeq 15
14: aload 0
aload 6
checkcast jdk.nashorn.internal.ir.JoinPredecessor
aload 5
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
15: StackMap locals: jdk.nashorn.internal.ir.Expression jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
StackMap stack:
aload 0
aload 5
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.joinOnLabel:(Ljdk/nashorn/internal/codegen/Label;)V
16: aload 1
aload 3
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.typeExpression:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$TypeHolderExpression;
aload 7
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.typeExpression:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$TypeHolderExpression;
invokevirtual jdk.nashorn.internal.ir.BinaryNode.setOperands:(Ljdk/nashorn/internal/ir/Expression;Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/ir/BinaryNode;
invokevirtual jdk.nashorn.internal.ir.BinaryNode.getType:()Ljdk/nashorn/internal/codegen/types/Type;
invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.toLvarType:(Ljdk/nashorn/internal/codegen/types/Type;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
astore 8
start local 8 17: aload 1
invokevirtual jdk.nashorn.internal.ir.BinaryNode.isAssignment:()Z
ifeq 22
aload 2
instanceof jdk.nashorn.internal.ir.IdentNode
ifeq 22
18: aload 1
invokevirtual jdk.nashorn.internal.ir.BinaryNode.isSelfModifying:()Z
ifeq 21
19: aload 0
aload 2
checkcast jdk.nashorn.internal.ir.IdentNode
aload 8
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.onSelfAssignment:(Ljdk/nashorn/internal/ir/IdentNode;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
20: goto 22
21: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
StackMap stack:
aload 0
aload 2
checkcast jdk.nashorn.internal.ir.IdentNode
aload 8
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.onAssignment:(Ljdk/nashorn/internal/ir/IdentNode;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
22: StackMap locals:
StackMap stack:
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.typeStack:Ljava/util/Deque;
aload 8
invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
23: iconst_0
ireturn
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 24 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 24 1 binaryNode Ljdk/nashorn/internal/ir/BinaryNode;
1 24 2 lhs Ljdk/nashorn/internal/ir/Expression;
3 4 3 lhsType Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
5 24 3 lhsType Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
6 24 4 isLogical Z
9 24 5 joinLabel Ljdk/nashorn/internal/codegen/Label;
12 24 6 rhs Ljdk/nashorn/internal/ir/Expression;
13 24 7 rhsType Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
17 24 8 type Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
MethodParameters:
Name Flags
binaryNode final
public boolean enterBlock(jdk.nashorn.internal.ir.Block);
descriptor: (Ljdk/nashorn/internal/ir/Block;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=5, args_size=2
start local 0 start local 1 0: iconst_0
istore 2
start local 2 1: aload 1
invokevirtual jdk.nashorn.internal.ir.Block.getSymbols:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
goto 10
StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.Block int top java.util.Iterator
StackMap stack:
2: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast jdk.nashorn.internal.ir.Symbol
astore 3
start local 3 3: aload 3
invokevirtual jdk.nashorn.internal.ir.Symbol.isBytecodeLocal:()Z
ifeq 10
4: aload 0
aload 3
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.getLocalVariableTypeOrNull:(Ljdk/nashorn/internal/ir/Symbol;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
ifnonnull 9
5: iload 2
ifne 8
6: aload 0
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.cloneOrNewLocalVariableTypes:()V
7: iconst_1
istore 2
8: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.Block int jdk.nashorn.internal.ir.Symbol java.util.Iterator
StackMap stack:
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
aload 3
getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.UNDEFINED:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
9: StackMap locals:
StackMap stack:
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.invalidatedSymbols:Ljava/util/Set;
aload 3
invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
pop
end local 3 10: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.Block int top java.util.Iterator
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
11: iconst_1
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 12 1 block Ljdk/nashorn/internal/ir/Block;
1 12 2 cloned Z
3 10 3 symbol Ljdk/nashorn/internal/ir/Symbol;
MethodParameters:
Name Flags
block final
public boolean enterBreakNode(jdk.nashorn.internal.ir.BreakNode);
descriptor: (Ljdk/nashorn/internal/ir/BreakNode;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.enterJumpStatement:(Ljdk/nashorn/internal/ir/JumpStatement;)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 1 1 breakNode Ljdk/nashorn/internal/ir/BreakNode;
MethodParameters:
Name Flags
breakNode final
public boolean enterCallNode(jdk.nashorn.internal.ir.CallNode);
descriptor: (Ljdk/nashorn/internal/ir/CallNode;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual jdk.nashorn.internal.ir.CallNode.getFunction:()Ljdk/nashorn/internal/ir/Expression;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
pop
1: aload 0
aload 1
invokevirtual jdk.nashorn.internal.ir.CallNode.getArgs:()Ljava/util/List;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressions:(Ljava/util/List;)V
2: aload 1
invokevirtual jdk.nashorn.internal.ir.CallNode.getEvalArgs:()Ljdk/nashorn/internal/ir/CallNode$EvalArgs;
astore 2
start local 2 3: aload 2
ifnull 5
4: aload 0
aload 2
invokevirtual jdk.nashorn.internal.ir.CallNode$EvalArgs.getArgs:()Ljava/util/List;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressions:(Ljava/util/List;)V
5: StackMap locals: jdk.nashorn.internal.ir.CallNode$EvalArgs
StackMap stack:
aload 0
aload 1
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.pushExpressionType:(Ljdk/nashorn/internal/ir/Expression;)Z
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 6 1 callNode Ljdk/nashorn/internal/ir/CallNode;
3 6 2 evalArgs Ljdk/nashorn/internal/ir/CallNode$EvalArgs;
MethodParameters:
Name Flags
callNode final
public boolean enterContinueNode(jdk.nashorn.internal.ir.ContinueNode);
descriptor: (Ljdk/nashorn/internal/ir/ContinueNode;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.enterJumpStatement:(Ljdk/nashorn/internal/ir/JumpStatement;)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 1 1 continueNode Ljdk/nashorn/internal/ir/ContinueNode;
MethodParameters:
Name Flags
continueNode final
private boolean enterJumpStatement(jdk.nashorn.internal.ir.JumpStatement);
descriptor: (Ljdk/nashorn/internal/ir/JumpStatement;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
ifne 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 0
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.assertTypeStackIsEmpty:()V
3: aload 0
aload 1
aload 1
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.lc:Ljdk/nashorn/internal/ir/LexicalContext;
invokevirtual jdk.nashorn.internal.ir.JumpStatement.getTargetLabel:(Ljdk/nashorn/internal/ir/LexicalContext;)Ljdk/nashorn/internal/codegen/Label;
aload 0
aload 1
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.lc:Ljdk/nashorn/internal/ir/LexicalContext;
invokevirtual jdk.nashorn.internal.ir.JumpStatement.getPopScopeLimit:(Ljdk/nashorn/internal/ir/LexicalContext;)Ljdk/nashorn/internal/ir/LexicalContextNode;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.getBreakTargetTypes:(Ljdk/nashorn/internal/ir/LexicalContextNode;)Ljava/util/Map;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;Ljava/util/Map;)V
4: aload 0
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.doesNotContinueSequentially:()V
5: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 6 1 jump Ljdk/nashorn/internal/ir/JumpStatement;
MethodParameters:
Name Flags
jump final
protected boolean enterDefault(jdk.nashorn.internal.ir.Node);
descriptor: (Ljdk/nashorn/internal/ir/Node;)Z
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 1 1 node Ljdk/nashorn/internal/ir/Node;
MethodParameters:
Name Flags
node final
private void enterDoWhileLoop(jdk.nashorn.internal.ir.WhileNode);
descriptor: (Ljdk/nashorn/internal/ir/WhileNode;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=9, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.assertTypeStackIsEmpty:()V
1: aload 1
invokevirtual jdk.nashorn.internal.ir.WhileNode.getTest:()Ljdk/nashorn/internal/ir/JoinPredecessorExpression;
astore 2
start local 2 2: aload 1
invokevirtual jdk.nashorn.internal.ir.WhileNode.getBody:()Ljdk/nashorn/internal/ir/Block;
astore 3
start local 3 3: aload 1
invokevirtual jdk.nashorn.internal.ir.WhileNode.getContinueLabel:()Ljdk/nashorn/internal/codegen/Label;
astore 4
start local 4 4: aload 1
invokevirtual jdk.nashorn.internal.ir.WhileNode.getBreakLabel:()Ljdk/nashorn/internal/codegen/Label;
astore 5
start local 5 5: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
astore 6
start local 6 6: new jdk.nashorn.internal.codegen.Label
dup
ldc ""
invokespecial jdk.nashorn.internal.codegen.Label.<init>:(Ljava/lang/String;)V
astore 7
start local 7 7: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.WhileNode jdk.nashorn.internal.ir.JoinPredecessorExpression jdk.nashorn.internal.ir.Block jdk.nashorn.internal.codegen.Label jdk.nashorn.internal.codegen.Label java.util.Map jdk.nashorn.internal.codegen.Label
StackMap stack:
aload 0
aload 1
aload 7
aload 6
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;Ljava/util/Map;)V
8: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
astore 8
start local 8 9: aload 3
aload 0
invokevirtual jdk.nashorn.internal.ir.Block.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
pop
10: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
ifeq 12
11: aload 0
aload 3
aload 4
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
12: StackMap locals: java.util.Map
StackMap stack:
aload 0
aload 4
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.joinOnLabel:(Ljdk/nashorn/internal/codegen/Label;)V
13: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
ifne 15
14: goto 27
15: StackMap locals:
StackMap stack:
aload 0
aload 2
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressionOnEmptyStack:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
pop
16: aload 0
aload 2
aload 5
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
17: aload 2
invokestatic jdk.nashorn.internal.ir.Expression.isAlwaysFalse:(Ljdk/nashorn/internal/ir/Expression;)Z
ifeq 19
18: goto 27
19: StackMap locals:
StackMap stack:
aload 0
aload 2
aload 7
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
20: aload 0
aload 7
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.joinOnLabel:(Ljdk/nashorn/internal/codegen/Label;)V
21: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
aload 8
invokeinterface java.util.Map.equals:(Ljava/lang/Object;)Z
ifeq 23
22: goto 27
23: StackMap locals:
StackMap stack:
aload 0
aload 4
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.resetJoinPoint:(Ljdk/nashorn/internal/codegen/Label;)V
24: aload 0
aload 5
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.resetJoinPoint:(Ljdk/nashorn/internal/codegen/Label;)V
25: aload 0
aload 7
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.resetJoinPoint:(Ljdk/nashorn/internal/codegen/Label;)V
end local 8 26: goto 7
27: StackMap locals:
StackMap stack:
aload 2
invokestatic jdk.nashorn.internal.ir.Expression.isAlwaysTrue:(Ljdk/nashorn/internal/ir/Expression;)Z
ifeq 29
28: aload 0
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.doesNotContinueSequentially:()V
29: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.leaveBreakable:(Ljdk/nashorn/internal/ir/BreakableNode;)V
30: return
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 31 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 31 1 loopNode Ljdk/nashorn/internal/ir/WhileNode;
2 31 2 test Ljdk/nashorn/internal/ir/JoinPredecessorExpression;
3 31 3 body Ljdk/nashorn/internal/ir/Block;
4 31 4 continueLabel Ljdk/nashorn/internal/codegen/Label;
5 31 5 breakLabel Ljdk/nashorn/internal/codegen/Label;
6 31 6 beforeLoopTypes Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
7 31 7 repeatLabel Ljdk/nashorn/internal/codegen/Label;
9 26 8 beforeRepeatTypes Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
MethodParameters:
Name Flags
loopNode final
public boolean enterExpressionStatement(jdk.nashorn.internal.ir.ExpressionStatement);
descriptor: (Ljdk/nashorn/internal/ir/ExpressionStatement;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
ifeq 2
1: aload 0
aload 1
invokevirtual jdk.nashorn.internal.ir.ExpressionStatement.getExpression:()Ljdk/nashorn/internal/ir/Expression;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressionOnEmptyStack:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
pop
2: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 3 1 expressionStatement Ljdk/nashorn/internal/ir/ExpressionStatement;
MethodParameters:
Name Flags
expressionStatement final
private void assertTypeStackIsEmpty();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
ifne 1
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.typeStack:Ljava/util/Deque;
invokeinterface java.util.Deque.isEmpty:()Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
protected jdk.nashorn.internal.ir.Node leaveDefault(jdk.nashorn.internal.ir.Node);
descriptor: (Ljdk/nashorn/internal/ir/Node;)Ljdk/nashorn/internal/ir/Node;
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
ifne 1
aload 1
instanceof jdk.nashorn.internal.ir.Expression
ifeq 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
ifne 2
aload 1
instanceof jdk.nashorn.internal.ir.Statement
ifeq 2
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.typeStack:Ljava/util/Deque;
invokeinterface java.util.Deque.isEmpty:()Z
ifne 2
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 3 1 node Ljdk/nashorn/internal/ir/Node;
MethodParameters:
Name Flags
node final
private jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType visitExpressionOnEmptyStack(jdk.nashorn.internal.ir.Expression);
descriptor: (Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.assertTypeStackIsEmpty:()V
1: aload 0
aload 1
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 2 1 expr Ljdk/nashorn/internal/ir/Expression;
MethodParameters:
Name Flags
expr final
private jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType visitExpression(jdk.nashorn.internal.ir.Expression);
descriptor: (Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.typeStack:Ljava/util/Deque;
invokeinterface java.util.Deque.size:()I
istore 2
start local 2 1: aload 1
aload 0
invokevirtual jdk.nashorn.internal.ir.Expression.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
pop
2: getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
ifne 3
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.typeStack:Ljava/util/Deque;
invokeinterface java.util.Deque.size:()I
iload 2
iconst_1
iadd
if_icmpeq 3
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
3: StackMap locals: int
StackMap stack:
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.typeStack:Ljava/util/Deque;
invokeinterface java.util.Deque.pop:()Ljava/lang/Object;
checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 4 1 expr Ljdk/nashorn/internal/ir/Expression;
1 4 2 stackSize I
MethodParameters:
Name Flags
expr final
private void visitExpressions(java.util.List<jdk.nashorn.internal.ir.Expression>);
descriptor: (Ljava/util/List;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: aload 1
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 3
goto 4
StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator java.util.List top java.util.Iterator
StackMap stack:
1: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast jdk.nashorn.internal.ir.Expression
astore 2
start local 2 2: aload 2
ifnull 4
3: aload 0
aload 2
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
pop
end local 2 4: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 1
5: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 6 1 exprs Ljava/util/List<Ljdk/nashorn/internal/ir/Expression;>;
2 4 2 expr Ljdk/nashorn/internal/ir/Expression;
Signature: (Ljava/util/List<Ljdk/nashorn/internal/ir/Expression;>;)V
MethodParameters:
Name Flags
exprs final
public boolean enterForNode(jdk.nashorn.internal.ir.ForNode);
descriptor: (Ljdk/nashorn/internal/ir/ForNode;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=4, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
ifne 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 1
invokevirtual jdk.nashorn.internal.ir.ForNode.getInit:()Ljdk/nashorn/internal/ir/Expression;
astore 2
start local 2 3: aload 1
invokevirtual jdk.nashorn.internal.ir.ForNode.isForInOrOf:()Z
ifeq 12
4: aload 1
invokevirtual jdk.nashorn.internal.ir.ForNode.getModify:()Ljdk/nashorn/internal/ir/JoinPredecessorExpression;
astore 3
start local 3 5: aload 0
aload 3
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
pop
6: aload 0
aload 1
aconst_null
aload 2
7: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.compiler:Ljdk/nashorn/internal/codegen/Compiler;
invokevirtual jdk.nashorn.internal.codegen.Compiler.useOptimisticTypes:()Z
ifeq 9
aload 1
invokevirtual jdk.nashorn.internal.ir.ForNode.isForEach:()Z
ifne 8
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.compiler:Ljdk/nashorn/internal/codegen/Compiler;
aload 3
invokevirtual jdk.nashorn.internal.ir.JoinPredecessorExpression.getExpression:()Ljdk/nashorn/internal/ir/Expression;
invokevirtual jdk.nashorn.internal.codegen.Compiler.hasStringPropertyIterator:(Ljdk/nashorn/internal/ir/Expression;)Z
ifne 9
StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.ForNode jdk.nashorn.internal.ir.Expression jdk.nashorn.internal.ir.JoinPredecessorExpression
StackMap stack: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.ForNode null jdk.nashorn.internal.ir.Expression
8: iconst_0
goto 10
StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.ForNode jdk.nashorn.internal.ir.Expression jdk.nashorn.internal.ir.JoinPredecessorExpression
StackMap stack: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.ForNode null jdk.nashorn.internal.ir.Expression
9: iconst_1
10: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.ForNode jdk.nashorn.internal.ir.Expression jdk.nashorn.internal.ir.JoinPredecessorExpression
StackMap stack: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.ForNode null jdk.nashorn.internal.ir.Expression int
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.enterTestFirstLoop:(Ljdk/nashorn/internal/ir/LoopNode;Ljdk/nashorn/internal/ir/JoinPredecessorExpression;Ljdk/nashorn/internal/ir/Expression;Z)V
end local 3 11: goto 15
12: StackMap locals:
StackMap stack:
aload 2
ifnull 14
13: aload 0
aload 2
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressionOnEmptyStack:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
pop
14: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 1
invokevirtual jdk.nashorn.internal.ir.ForNode.getModify:()Ljdk/nashorn/internal/ir/JoinPredecessorExpression;
aconst_null
iconst_0
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.enterTestFirstLoop:(Ljdk/nashorn/internal/ir/LoopNode;Ljdk/nashorn/internal/ir/JoinPredecessorExpression;Ljdk/nashorn/internal/ir/Expression;Z)V
15: StackMap locals:
StackMap stack:
aload 0
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.assertTypeStackIsEmpty:()V
16: iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 17 1 forNode Ljdk/nashorn/internal/ir/ForNode;
3 17 2 init Ljdk/nashorn/internal/ir/Expression;
5 11 3 iterable Ljdk/nashorn/internal/ir/JoinPredecessorExpression;
MethodParameters:
Name Flags
forNode final
public boolean enterFunctionNode(jdk.nashorn.internal.ir.FunctionNode);
descriptor: (Ljdk/nashorn/internal/ir/FunctionNode;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=8, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.alreadyEnteredTopLevelFunction:Z
ifeq 3
1: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.typeStack:Ljava/util/Deque;
getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.OBJECT:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
2: iconst_0
ireturn
3: StackMap locals:
StackMap stack:
iconst_0
istore 2
start local 2 4: aload 1
invokevirtual jdk.nashorn.internal.ir.FunctionNode.isVarArg:()Z
ifne 18
5: aload 1
invokevirtual jdk.nashorn.internal.ir.FunctionNode.getParameters:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
goto 17
StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.FunctionNode int top java.util.Iterator
StackMap stack:
6: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast jdk.nashorn.internal.ir.IdentNode
astore 3
start local 3 7: aload 3
invokevirtual jdk.nashorn.internal.ir.IdentNode.getSymbol:()Ljdk/nashorn/internal/ir/Symbol;
astore 5
start local 5 8: getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
ifne 9
aload 5
invokevirtual jdk.nashorn.internal.ir.Symbol.hasSlot:()Z
ifne 9
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
9: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.FunctionNode int jdk.nashorn.internal.ir.IdentNode java.util.Iterator jdk.nashorn.internal.ir.Symbol
StackMap stack:
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.compiler:Ljdk/nashorn/internal/codegen/Compiler;
aload 1
iload 2
invokevirtual jdk.nashorn.internal.codegen.Compiler.getParamType:(Ljdk/nashorn/internal/ir/FunctionNode;I)Ljdk/nashorn/internal/codegen/types/Type;
astore 6
start local 6 10: aload 6
ifnonnull 11
getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.OBJECT:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
goto 12
StackMap locals: jdk.nashorn.internal.codegen.types.Type
StackMap stack:
11: aload 6
invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.toLvarType:(Ljdk/nashorn/internal/codegen/types/Type;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
StackMap locals:
StackMap stack: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
12: astore 7
start local 7 13: aload 0
aload 5
aload 7
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setType:(Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
14: aload 0
aload 5
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.symbolIsUsed:(Ljdk/nashorn/internal/ir/Symbol;)V
15: aload 0
aload 3
aload 7
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setIdentifierLvarType:(Ljdk/nashorn/internal/ir/IdentNode;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
16: iinc 2 1
end local 7 end local 6 end local 5 end local 3 17: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.FunctionNode int top java.util.Iterator
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 6
18: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.FunctionNode int
StackMap stack:
aload 0
aload 1
getstatic jdk.nashorn.internal.codegen.CompilerConstants.THIS:Ljdk/nashorn/internal/codegen/CompilerConstants;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setCompilerConstantAsObject:(Ljdk/nashorn/internal/ir/FunctionNode;Ljdk/nashorn/internal/codegen/CompilerConstants;)V
19: aload 1
invokevirtual jdk.nashorn.internal.ir.FunctionNode.hasScopeBlock:()Z
ifne 20
aload 1
invokevirtual jdk.nashorn.internal.ir.FunctionNode.needsParentScope:()Z
ifeq 21
20: StackMap locals:
StackMap stack:
aload 0
aload 1
getstatic jdk.nashorn.internal.codegen.CompilerConstants.SCOPE:Ljdk/nashorn/internal/codegen/CompilerConstants;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setCompilerConstantAsObject:(Ljdk/nashorn/internal/ir/FunctionNode;Ljdk/nashorn/internal/codegen/CompilerConstants;)V
21: StackMap locals:
StackMap stack:
aload 1
invokevirtual jdk.nashorn.internal.ir.FunctionNode.needsCallee:()Z
ifeq 23
22: aload 0
aload 1
getstatic jdk.nashorn.internal.codegen.CompilerConstants.CALLEE:Ljdk/nashorn/internal/codegen/CompilerConstants;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setCompilerConstantAsObject:(Ljdk/nashorn/internal/ir/FunctionNode;Ljdk/nashorn/internal/codegen/CompilerConstants;)V
23: StackMap locals:
StackMap stack:
aload 1
invokevirtual jdk.nashorn.internal.ir.FunctionNode.needsArguments:()Z
ifeq 25
24: aload 0
aload 1
getstatic jdk.nashorn.internal.codegen.CompilerConstants.ARGUMENTS:Ljdk/nashorn/internal/codegen/CompilerConstants;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setCompilerConstantAsObject:(Ljdk/nashorn/internal/ir/FunctionNode;Ljdk/nashorn/internal/codegen/CompilerConstants;)V
25: StackMap locals:
StackMap stack:
aload 0
iconst_1
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.alreadyEnteredTopLevelFunction:Z
26: iconst_1
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 27 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 27 1 functionNode Ljdk/nashorn/internal/ir/FunctionNode;
4 27 2 pos I
7 17 3 param Ljdk/nashorn/internal/ir/IdentNode;
8 17 5 symbol Ljdk/nashorn/internal/ir/Symbol;
10 17 6 callSiteParamType Ljdk/nashorn/internal/codegen/types/Type;
13 17 7 paramType Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
MethodParameters:
Name Flags
functionNode final
public boolean enterGetSplitState(jdk.nashorn.internal.ir.GetSplitState);
descriptor: (Ljdk/nashorn/internal/ir/GetSplitState;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.pushExpressionType:(Ljdk/nashorn/internal/ir/Expression;)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 1 1 getSplitState Ljdk/nashorn/internal/ir/GetSplitState;
MethodParameters:
Name Flags
getSplitState final
public boolean enterIdentNode(jdk.nashorn.internal.ir.IdentNode);
descriptor: (Ljdk/nashorn/internal/ir/IdentNode;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual jdk.nashorn.internal.ir.IdentNode.getSymbol:()Ljdk/nashorn/internal/ir/Symbol;
astore 2
start local 2 1: aload 2
invokevirtual jdk.nashorn.internal.ir.Symbol.isBytecodeLocal:()Z
ifeq 7
2: aload 0
aload 2
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.symbolIsUsed:(Ljdk/nashorn/internal/ir/Symbol;)V
3: aload 0
aload 2
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.getLocalVariableType:(Ljdk/nashorn/internal/ir/Symbol;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
astore 3
start local 3 4: aload 0
aload 1
aload 3
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setIdentifierLvarType:(Ljdk/nashorn/internal/ir/IdentNode;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
5: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.typeStack:Ljava/util/Deque;
aload 3
invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
end local 3 6: goto 8
7: StackMap locals: jdk.nashorn.internal.ir.Symbol
StackMap stack:
aload 0
aload 1
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.pushExpressionType:(Ljdk/nashorn/internal/ir/Expression;)Z
pop
8: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 9 1 identNode Ljdk/nashorn/internal/ir/IdentNode;
1 9 2 symbol Ljdk/nashorn/internal/ir/Symbol;
4 6 3 type Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
MethodParameters:
Name Flags
identNode final
public boolean enterIfNode(jdk.nashorn.internal.ir.IfNode);
descriptor: (Ljdk/nashorn/internal/ir/IfNode;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.processIfNode:(Ljdk/nashorn/internal/ir/IfNode;)V
1: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 2 1 ifNode Ljdk/nashorn/internal/ir/IfNode;
MethodParameters:
Name Flags
ifNode final
private void processIfNode(jdk.nashorn.internal.ir.IfNode);
descriptor: (Ljdk/nashorn/internal/ir/IfNode;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=9, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
ifne 2
1: return
2: StackMap locals:
StackMap stack:
aload 1
invokevirtual jdk.nashorn.internal.ir.IfNode.getTest:()Ljdk/nashorn/internal/ir/Expression;
astore 2
start local 2 3: aload 1
invokevirtual jdk.nashorn.internal.ir.IfNode.getPass:()Ljdk/nashorn/internal/ir/Block;
astore 3
start local 3 4: aload 1
invokevirtual jdk.nashorn.internal.ir.IfNode.getFail:()Ljdk/nashorn/internal/ir/Block;
astore 4
start local 4 5: aload 0
aload 2
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressionOnEmptyStack:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
pop
6: aload 2
invokestatic jdk.nashorn.internal.ir.Expression.isAlwaysTrue:(Ljdk/nashorn/internal/ir/Expression;)Z
istore 7
start local 7 7: aload 2
invokestatic jdk.nashorn.internal.ir.Expression.isAlwaysFalse:(Ljdk/nashorn/internal/ir/Expression;)Z
ifeq 11
8: aconst_null
astore 5
start local 5 9: iconst_0
istore 6
start local 6 10: goto 20
end local 6 end local 5 11: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.IfNode jdk.nashorn.internal.ir.Expression jdk.nashorn.internal.ir.Block jdk.nashorn.internal.ir.Block top top int
StackMap stack:
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
astore 8
start local 8 12: aload 3
aload 0
invokevirtual jdk.nashorn.internal.ir.Block.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
pop
13: aload 0
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.assertTypeStackIsEmpty:()V
14: iload 7
ifeq 16
15: return
16: StackMap locals: java.util.Map
StackMap stack:
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
astore 5
start local 5 17: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
istore 6
start local 6 18: aload 0
aload 8
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
19: aload 0
iconst_1
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
end local 8 20: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.IfNode jdk.nashorn.internal.ir.Expression jdk.nashorn.internal.ir.Block jdk.nashorn.internal.ir.Block java.util.Map int int
StackMap stack:
getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
ifne 21
iload 7
ifeq 21
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
21: StackMap locals:
StackMap stack:
aload 4
ifnull 24
22: aload 4
aload 0
invokevirtual jdk.nashorn.internal.ir.Block.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
pop
23: aload 0
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.assertTypeStackIsEmpty:()V
24: StackMap locals:
StackMap stack:
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
ifeq 33
25: iload 6
ifeq 37
26: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
astore 8
start local 8 27: aload 0
aload 0
aload 5
aload 8
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.getUnionTypes:(Ljava/util/Map;Ljava/util/Map;)Ljava/util/Map;
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
28: aload 0
aload 3
aload 5
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setConversion:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljava/util/Map;Ljava/util/Map;)V
29: aload 0
aload 4
ifnull 30
aload 4
goto 31
StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.IfNode jdk.nashorn.internal.ir.Expression jdk.nashorn.internal.ir.Block jdk.nashorn.internal.ir.Block java.util.Map int int java.util.Map
StackMap stack: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator
30: aload 1
StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.IfNode jdk.nashorn.internal.ir.Expression jdk.nashorn.internal.ir.Block jdk.nashorn.internal.ir.Block java.util.Map int int java.util.Map
StackMap stack: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.Node
31: aload 8
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setConversion:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljava/util/Map;Ljava/util/Map;)V
end local 8 32: goto 37
StackMap locals:
StackMap stack:
33: iload 6
ifeq 37
34: getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
ifne 35
aload 5
ifnonnull 35
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
35: StackMap locals:
StackMap stack:
aload 0
aload 5
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
36: aload 0
iconst_1
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
37: StackMap locals:
StackMap stack:
return
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 38 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 38 1 ifNode Ljdk/nashorn/internal/ir/IfNode;
3 38 2 test Ljdk/nashorn/internal/ir/Expression;
4 38 3 pass Ljdk/nashorn/internal/ir/Block;
5 38 4 fail Ljdk/nashorn/internal/ir/Block;
9 11 5 passLvarTypes Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
17 38 5 passLvarTypes Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
10 11 6 reachableFromPass Z
18 38 6 reachableFromPass Z
7 38 7 isTestAlwaysTrue Z
12 20 8 afterTestLvarTypes Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
27 32 8 failLvarTypes Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
MethodParameters:
Name Flags
ifNode final
public boolean enterIndexNode(jdk.nashorn.internal.ir.IndexNode);
descriptor: (Ljdk/nashorn/internal/ir/IndexNode;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual jdk.nashorn.internal.ir.IndexNode.getBase:()Ljdk/nashorn/internal/ir/Expression;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
pop
1: aload 0
aload 1
invokevirtual jdk.nashorn.internal.ir.IndexNode.getIndex:()Ljdk/nashorn/internal/ir/Expression;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
pop
2: aload 0
aload 1
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.pushExpressionType:(Ljdk/nashorn/internal/ir/Expression;)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 3 1 indexNode Ljdk/nashorn/internal/ir/IndexNode;
MethodParameters:
Name Flags
indexNode final
public boolean enterJoinPredecessorExpression(jdk.nashorn.internal.ir.JoinPredecessorExpression);
descriptor: (Ljdk/nashorn/internal/ir/JoinPredecessorExpression;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual jdk.nashorn.internal.ir.JoinPredecessorExpression.getExpression:()Ljdk/nashorn/internal/ir/Expression;
astore 2
start local 2 1: aload 2
ifnull 4
2: aload 2
aload 0
invokevirtual jdk.nashorn.internal.ir.Expression.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
pop
3: goto 5
4: StackMap locals: jdk.nashorn.internal.ir.Expression
StackMap stack:
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.typeStack:Ljava/util/Deque;
getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.UNDEFINED:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
5: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 6 1 joinExpr Ljdk/nashorn/internal/ir/JoinPredecessorExpression;
1 6 2 expr Ljdk/nashorn/internal/ir/Expression;
MethodParameters:
Name Flags
joinExpr final
public boolean enterJumpToInlinedFinally(jdk.nashorn.internal.ir.JumpToInlinedFinally);
descriptor: (Ljdk/nashorn/internal/ir/JumpToInlinedFinally;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.enterJumpStatement:(Ljdk/nashorn/internal/ir/JumpStatement;)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 1 1 jumpToInlinedFinally Ljdk/nashorn/internal/ir/JumpToInlinedFinally;
MethodParameters:
Name Flags
jumpToInlinedFinally final
public boolean enterLiteralNode(jdk.nashorn.internal.ir.LiteralNode<?>);
descriptor: (Ljdk/nashorn/internal/ir/LiteralNode;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 1
instanceof jdk.nashorn.internal.ir.LiteralNode$ArrayLiteralNode
ifeq 4
1: aload 1
checkcast jdk.nashorn.internal.ir.LiteralNode$ArrayLiteralNode
invokevirtual jdk.nashorn.internal.ir.LiteralNode$ArrayLiteralNode.getElementExpressions:()Ljava/util/List;
astore 2
start local 2 2: aload 2
ifnull 4
3: aload 0
aload 2
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressions:(Ljava/util/List;)V
end local 2 4: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.pushExpressionType:(Ljdk/nashorn/internal/ir/Expression;)Z
pop
5: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 6 1 literalNode Ljdk/nashorn/internal/ir/LiteralNode<*>;
2 4 2 expressions Ljava/util/List<Ljdk/nashorn/internal/ir/Expression;>;
Signature: (Ljdk/nashorn/internal/ir/LiteralNode<*>;)Z
MethodParameters:
Name Flags
literalNode final
public boolean enterObjectNode(jdk.nashorn.internal.ir.ObjectNode);
descriptor: (Ljdk/nashorn/internal/ir/ObjectNode;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=5, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual jdk.nashorn.internal.ir.ObjectNode.getElements:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 3
goto 5
StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.ObjectNode top java.util.Iterator
StackMap stack:
1: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast jdk.nashorn.internal.ir.PropertyNode
astore 2
start local 2 2: aload 2
invokevirtual jdk.nashorn.internal.ir.PropertyNode.getValue:()Ljdk/nashorn/internal/ir/Expression;
astore 4
start local 4 3: aload 4
ifnull 5
4: aload 0
aload 4
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
pop
end local 4 end local 2 5: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 1
6: aload 0
aload 1
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.pushExpressionType:(Ljdk/nashorn/internal/ir/Expression;)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 7 1 objectNode Ljdk/nashorn/internal/ir/ObjectNode;
2 5 2 propertyNode Ljdk/nashorn/internal/ir/PropertyNode;
3 5 4 value Ljdk/nashorn/internal/ir/Expression;
MethodParameters:
Name Flags
objectNode final
public boolean enterPropertyNode(jdk.nashorn.internal.ir.PropertyNode);
descriptor: (Ljdk/nashorn/internal/ir/PropertyNode;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 1 1 propertyNode Ljdk/nashorn/internal/ir/PropertyNode;
MethodParameters:
Name Flags
propertyNode final
public boolean enterReturnNode(jdk.nashorn.internal.ir.ReturnNode);
descriptor: (Ljdk/nashorn/internal/ir/ReturnNode;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
ifne 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 1
invokevirtual jdk.nashorn.internal.ir.ReturnNode.getExpression:()Ljdk/nashorn/internal/ir/Expression;
astore 2
start local 2 3: aload 2
ifnull 6
4: aload 0
aload 2
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressionOnEmptyStack:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.type:Ljdk/nashorn/internal/codegen/types/Type;
astore 3
start local 3 5: goto 8
end local 3 6: StackMap locals: jdk.nashorn.internal.ir.Expression
StackMap stack:
aload 0
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.assertTypeStackIsEmpty:()V
7: getstatic jdk.nashorn.internal.codegen.types.Type.UNDEFINED:Ljdk/nashorn/internal/codegen/types/Type;
astore 3
start local 3 8: StackMap locals: jdk.nashorn.internal.codegen.types.Type
StackMap stack:
aload 0
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.returnType:Ljdk/nashorn/internal/codegen/types/Type;
aload 3
invokestatic jdk.nashorn.internal.codegen.types.Type.widestReturnType:(Ljdk/nashorn/internal/codegen/types/Type;Ljdk/nashorn/internal/codegen/types/Type;)Ljdk/nashorn/internal/codegen/types/Type;
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.returnType:Ljdk/nashorn/internal/codegen/types/Type;
9: aload 0
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.doesNotContinueSequentially:()V
10: iconst_0
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 11 1 returnNode Ljdk/nashorn/internal/ir/ReturnNode;
3 11 2 returnExpr Ljdk/nashorn/internal/ir/Expression;
5 6 3 returnExprType Ljdk/nashorn/internal/codegen/types/Type;
8 11 3 returnExprType Ljdk/nashorn/internal/codegen/types/Type;
MethodParameters:
Name Flags
returnNode final
public boolean enterRuntimeNode(jdk.nashorn.internal.ir.RuntimeNode);
descriptor: (Ljdk/nashorn/internal/ir/RuntimeNode;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual jdk.nashorn.internal.ir.RuntimeNode.getArgs:()Ljava/util/List;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressions:(Ljava/util/List;)V
1: aload 0
aload 1
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.pushExpressionType:(Ljdk/nashorn/internal/ir/Expression;)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 2 1 runtimeNode Ljdk/nashorn/internal/ir/RuntimeNode;
MethodParameters:
Name Flags
runtimeNode final
public boolean enterSplitReturn(jdk.nashorn.internal.ir.SplitReturn);
descriptor: (Ljdk/nashorn/internal/ir/SplitReturn;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.doesNotContinueSequentially:()V
1: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 2 1 splitReturn Ljdk/nashorn/internal/ir/SplitReturn;
MethodParameters:
Name Flags
splitReturn final
public boolean enterSwitchNode(jdk.nashorn.internal.ir.SwitchNode);
descriptor: (Ljdk/nashorn/internal/ir/SwitchNode;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=12, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
ifne 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual jdk.nashorn.internal.ir.SwitchNode.getExpression:()Ljdk/nashorn/internal/ir/Expression;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressionOnEmptyStack:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
pop
3: aload 1
invokevirtual jdk.nashorn.internal.ir.SwitchNode.getCases:()Ljava/util/List;
astore 2
start local 2 4: aload 2
invokeinterface java.util.List.isEmpty:()Z
ifeq 6
5: iconst_0
ireturn
6: StackMap locals: java.util.List
StackMap stack:
aload 1
invokevirtual jdk.nashorn.internal.ir.SwitchNode.isUniqueInteger:()Z
istore 3
start local 3 7: aload 1
invokevirtual jdk.nashorn.internal.ir.SwitchNode.getBreakLabel:()Ljdk/nashorn/internal/codegen/Label;
astore 4
start local 4 8: aload 1
invokevirtual jdk.nashorn.internal.ir.SwitchNode.getDefaultCase:()Ljdk/nashorn/internal/ir/CaseNode;
ifnull 9
iconst_1
goto 10
StackMap locals: int jdk.nashorn.internal.codegen.Label
StackMap stack:
9: iconst_0
StackMap locals:
StackMap stack: int
10: istore 5
start local 5 11: iconst_0
istore 6
start local 6 12: aload 2
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 8
goto 21
StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.SwitchNode java.util.List int jdk.nashorn.internal.codegen.Label int int top java.util.Iterator
StackMap stack:
13: aload 8
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast jdk.nashorn.internal.ir.CaseNode
astore 7
start local 7 14: aload 7
invokevirtual jdk.nashorn.internal.ir.CaseNode.getTest:()Ljdk/nashorn/internal/ir/Expression;
astore 9
start local 9 15: iload 3
ifne 20
aload 9
ifnull 20
16: aload 0
aload 9
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressionOnEmptyStack:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
pop
17: iload 6
ifne 20
18: aload 1
invokevirtual jdk.nashorn.internal.ir.SwitchNode.getTag:()Ljdk/nashorn/internal/ir/Symbol;
getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.OBJECT:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.symbolIsUsed:(Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
19: iconst_1
istore 6
20: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.SwitchNode java.util.List int jdk.nashorn.internal.codegen.Label int int jdk.nashorn.internal.ir.CaseNode java.util.Iterator jdk.nashorn.internal.ir.Expression
StackMap stack:
aload 0
aload 7
aload 7
invokevirtual jdk.nashorn.internal.ir.CaseNode.getBody:()Ljdk/nashorn/internal/ir/Block;
invokevirtual jdk.nashorn.internal.ir.Block.getEntryLabel:()Ljdk/nashorn/internal/codegen/Label;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
end local 9 end local 7 21: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.SwitchNode java.util.List int jdk.nashorn.internal.codegen.Label int int top java.util.Iterator
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 13
22: iload 5
ifne 24
23: aload 0
aload 1
aload 4
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
24: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.SwitchNode java.util.List int jdk.nashorn.internal.codegen.Label int int
StackMap stack:
aload 0
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.doesNotContinueSequentially:()V
25: aconst_null
astore 7
start local 7 26: aload 2
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 9
goto 36
StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.SwitchNode java.util.List int jdk.nashorn.internal.codegen.Label int int jdk.nashorn.internal.ir.Block top java.util.Iterator
StackMap stack:
27: aload 9
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast jdk.nashorn.internal.ir.CaseNode
astore 8
start local 8 28: aload 8
invokevirtual jdk.nashorn.internal.ir.CaseNode.getBody:()Ljdk/nashorn/internal/ir/Block;
astore 10
start local 10 29: aload 10
invokevirtual jdk.nashorn.internal.ir.Block.getEntryLabel:()Ljdk/nashorn/internal/codegen/Label;
astore 11
start local 11 30: aload 7
ifnull 32
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
ifeq 32
31: aload 0
aload 7
aload 11
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
32: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.SwitchNode java.util.List int jdk.nashorn.internal.codegen.Label int int jdk.nashorn.internal.ir.Block jdk.nashorn.internal.ir.CaseNode java.util.Iterator jdk.nashorn.internal.ir.Block jdk.nashorn.internal.codegen.Label
StackMap stack:
aload 0
aload 11
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.joinOnLabel:(Ljdk/nashorn/internal/codegen/Label;)V
33: getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
ifne 34
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
ifne 34
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
34: StackMap locals:
StackMap stack:
aload 10
aload 0
invokevirtual jdk.nashorn.internal.ir.Block.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
pop
35: aload 10
astore 7
end local 11 end local 10 end local 8 36: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.SwitchNode java.util.List int jdk.nashorn.internal.codegen.Label int int jdk.nashorn.internal.ir.Block top java.util.Iterator
StackMap stack:
aload 9
invokeinterface java.util.Iterator.hasNext:()Z
ifne 27
37: aload 7
ifnull 39
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
ifeq 39
38: aload 0
aload 7
aload 4
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
39: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.SwitchNode java.util.List int jdk.nashorn.internal.codegen.Label int int jdk.nashorn.internal.ir.Block
StackMap stack:
aload 0
aload 1
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.leaveBreakable:(Ljdk/nashorn/internal/ir/BreakableNode;)V
40: iconst_0
ireturn
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 41 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 41 1 switchNode Ljdk/nashorn/internal/ir/SwitchNode;
4 41 2 cases Ljava/util/List<Ljdk/nashorn/internal/ir/CaseNode;>;
7 41 3 isInteger Z
8 41 4 breakLabel Ljdk/nashorn/internal/codegen/Label;
11 41 5 hasDefault Z
12 41 6 tagUsed Z
14 21 7 caseNode Ljdk/nashorn/internal/ir/CaseNode;
15 21 9 test Ljdk/nashorn/internal/ir/Expression;
26 41 7 previousBlock Ljdk/nashorn/internal/ir/Block;
28 36 8 caseNode Ljdk/nashorn/internal/ir/CaseNode;
29 36 10 body Ljdk/nashorn/internal/ir/Block;
30 36 11 entryLabel Ljdk/nashorn/internal/codegen/Label;
MethodParameters:
Name Flags
switchNode final
public boolean enterTernaryNode(jdk.nashorn.internal.ir.TernaryNode);
descriptor: (Ljdk/nashorn/internal/ir/TernaryNode;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=10, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual jdk.nashorn.internal.ir.TernaryNode.getTest:()Ljdk/nashorn/internal/ir/Expression;
astore 2
start local 2 1: aload 1
invokevirtual jdk.nashorn.internal.ir.TernaryNode.getTrueExpression:()Ljdk/nashorn/internal/ir/JoinPredecessorExpression;
astore 3
start local 3 2: aload 1
invokevirtual jdk.nashorn.internal.ir.TernaryNode.getFalseExpression:()Ljdk/nashorn/internal/ir/JoinPredecessorExpression;
astore 4
start local 4 3: aload 0
aload 2
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
pop
4: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
astore 5
start local 5 5: aload 2
invokestatic jdk.nashorn.internal.ir.Expression.isAlwaysFalse:(Ljdk/nashorn/internal/ir/Expression;)Z
ifne 8
6: aload 0
aload 3
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
astore 6
start local 6 7: goto 9
end local 6 8: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.TernaryNode jdk.nashorn.internal.ir.Expression jdk.nashorn.internal.ir.Expression jdk.nashorn.internal.ir.Expression java.util.Map
StackMap stack:
aconst_null
astore 6
start local 6 9: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
StackMap stack:
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
astore 7
start local 7 10: aload 0
aload 5
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
11: aload 2
invokestatic jdk.nashorn.internal.ir.Expression.isAlwaysTrue:(Ljdk/nashorn/internal/ir/Expression;)Z
ifne 14
12: aload 0
aload 4
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
astore 8
start local 8 13: goto 15
end local 8 14: StackMap locals: java.util.Map
StackMap stack:
aconst_null
astore 8
start local 8 15: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
StackMap stack:
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
astore 9
start local 9 16: aload 0
aload 0
aload 7
aload 9
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.getUnionTypes:(Ljava/util/Map;Ljava/util/Map;)Ljava/util/Map;
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
17: aload 0
aload 3
checkcast jdk.nashorn.internal.ir.JoinPredecessor
aload 7
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setConversion:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljava/util/Map;Ljava/util/Map;)V
18: aload 0
aload 4
checkcast jdk.nashorn.internal.ir.JoinPredecessor
aload 9
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setConversion:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljava/util/Map;Ljava/util/Map;)V
19: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.typeStack:Ljava/util/Deque;
aload 6
ifnull 21
aload 8
ifnull 20
aload 6
aload 8
invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.widestLvarType:(Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
goto 22
StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.TernaryNode jdk.nashorn.internal.ir.Expression jdk.nashorn.internal.ir.Expression jdk.nashorn.internal.ir.Expression java.util.Map jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType java.util.Map jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType java.util.Map
StackMap stack: java.util.Deque
20: aload 6
goto 22
StackMap locals:
StackMap stack: java.util.Deque
21: aload 8
invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.assertNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.TernaryNode jdk.nashorn.internal.ir.Expression jdk.nashorn.internal.ir.Expression jdk.nashorn.internal.ir.Expression java.util.Map jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType java.util.Map jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType java.util.Map
StackMap stack: java.util.Deque jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
22: invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
23: iconst_0
ireturn
end local 9 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 24 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 24 1 ternaryNode Ljdk/nashorn/internal/ir/TernaryNode;
1 24 2 test Ljdk/nashorn/internal/ir/Expression;
2 24 3 trueExpr Ljdk/nashorn/internal/ir/Expression;
3 24 4 falseExpr Ljdk/nashorn/internal/ir/Expression;
5 24 5 testExitLvarTypes Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
7 8 6 trueType Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
9 24 6 trueType Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
10 24 7 trueExitLvarTypes Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
13 14 8 falseType Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
15 24 8 falseType Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
16 24 9 falseExitLvarTypes Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
MethodParameters:
Name Flags
ternaryNode final
private static <T> T assertNotNull();
descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
ifne 1
aload 0
ifnonnull 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 t TT;
Signature: <T:Ljava/lang/Object;>(TT;)TT;
MethodParameters:
Name Flags
t final
private void enterTestFirstLoop(jdk.nashorn.internal.ir.LoopNode, jdk.nashorn.internal.ir.JoinPredecessorExpression, jdk.nashorn.internal.ir.Expression, boolean);
descriptor: (Ljdk/nashorn/internal/ir/LoopNode;Ljdk/nashorn/internal/ir/JoinPredecessorExpression;Ljdk/nashorn/internal/ir/Expression;Z)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=12, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 1
invokevirtual jdk.nashorn.internal.ir.LoopNode.getTest:()Ljdk/nashorn/internal/ir/JoinPredecessorExpression;
astore 5
start local 5 1: aload 5
invokestatic jdk.nashorn.internal.ir.Expression.isAlwaysFalse:(Ljdk/nashorn/internal/ir/Expression;)Z
ifeq 4
2: aload 0
aload 5
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressionOnEmptyStack:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
pop
3: return
4: StackMap locals: jdk.nashorn.internal.ir.JoinPredecessorExpression
StackMap stack:
aload 1
invokevirtual jdk.nashorn.internal.ir.LoopNode.getContinueLabel:()Ljdk/nashorn/internal/codegen/Label;
astore 6
start local 6 5: aload 1
invokevirtual jdk.nashorn.internal.ir.LoopNode.getBreakLabel:()Ljdk/nashorn/internal/codegen/Label;
astore 7
start local 7 6: aload 2
ifnonnull 7
aload 6
goto 8
StackMap locals: jdk.nashorn.internal.codegen.Label jdk.nashorn.internal.codegen.Label
StackMap stack:
7: new jdk.nashorn.internal.codegen.Label
dup
ldc ""
invokespecial jdk.nashorn.internal.codegen.Label.<init>:(Ljava/lang/String;)V
StackMap locals:
StackMap stack: jdk.nashorn.internal.codegen.Label
8: astore 8
start local 8 9: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
astore 9
start local 9 10: StackMap locals: jdk.nashorn.internal.codegen.Label java.util.Map
StackMap stack:
aload 0
aload 1
aload 8
aload 9
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;Ljava/util/Map;)V
11: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
astore 10
start local 10 12: aload 5
ifnull 14
13: aload 0
aload 5
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressionOnEmptyStack:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
pop
14: StackMap locals: java.util.Map
StackMap stack:
aload 5
invokestatic jdk.nashorn.internal.ir.Expression.isAlwaysTrue:(Ljdk/nashorn/internal/ir/Expression;)Z
ifne 16
15: aload 0
aload 5
aload 7
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
16: StackMap locals:
StackMap stack:
aload 3
instanceof jdk.nashorn.internal.ir.IdentNode
ifeq 21
17: aload 3
checkcast jdk.nashorn.internal.ir.IdentNode
astore 11
start local 11 18: aload 0
aload 11
iload 4
ifeq 19
getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.OBJECT:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
goto 20
19: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.LoopNode jdk.nashorn.internal.ir.JoinPredecessorExpression jdk.nashorn.internal.ir.Expression int jdk.nashorn.internal.ir.JoinPredecessorExpression jdk.nashorn.internal.codegen.Label jdk.nashorn.internal.codegen.Label jdk.nashorn.internal.codegen.Label java.util.Map java.util.Map jdk.nashorn.internal.ir.IdentNode
StackMap stack: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.IdentNode
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.compiler:Ljdk/nashorn/internal/codegen/Compiler;
aload 11
invokevirtual jdk.nashorn.internal.codegen.Compiler.getOptimisticType:(Ljdk/nashorn/internal/ir/Optimistic;)Ljdk/nashorn/internal/codegen/types/Type;
invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.toLvarType:(Ljdk/nashorn/internal/codegen/types/Type;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
20: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.LoopNode jdk.nashorn.internal.ir.JoinPredecessorExpression jdk.nashorn.internal.ir.Expression int jdk.nashorn.internal.ir.JoinPredecessorExpression jdk.nashorn.internal.codegen.Label jdk.nashorn.internal.codegen.Label jdk.nashorn.internal.codegen.Label java.util.Map java.util.Map jdk.nashorn.internal.ir.IdentNode
StackMap stack: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.IdentNode jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.onAssignment:(Ljdk/nashorn/internal/ir/IdentNode;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
end local 11 21: StackMap locals:
StackMap stack:
aload 1
invokevirtual jdk.nashorn.internal.ir.LoopNode.getBody:()Ljdk/nashorn/internal/ir/Block;
astore 11
start local 11 22: aload 11
aload 0
invokevirtual jdk.nashorn.internal.ir.Block.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
pop
23: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
ifeq 25
24: aload 0
aload 11
aload 6
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
25: StackMap locals: jdk.nashorn.internal.ir.Block
StackMap stack:
aload 0
aload 6
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.joinOnLabel:(Ljdk/nashorn/internal/codegen/Label;)V
26: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
ifne 28
27: goto 38
28: StackMap locals:
StackMap stack:
aload 2
ifnull 32
29: aload 0
aload 2
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressionOnEmptyStack:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
pop
30: aload 0
aload 2
aload 8
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
31: aload 0
aload 8
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.joinOnLabel:(Ljdk/nashorn/internal/codegen/Label;)V
32: StackMap locals:
StackMap stack:
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
aload 10
invokeinterface java.util.Map.equals:(Ljava/lang/Object;)Z
ifeq 34
33: goto 38
34: StackMap locals:
StackMap stack:
aload 0
aload 6
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.resetJoinPoint:(Ljdk/nashorn/internal/codegen/Label;)V
35: aload 0
aload 7
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.resetJoinPoint:(Ljdk/nashorn/internal/codegen/Label;)V
36: aload 0
aload 8
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.resetJoinPoint:(Ljdk/nashorn/internal/codegen/Label;)V
end local 11 end local 10 37: goto 10
38: StackMap locals:
StackMap stack:
aload 5
invokestatic jdk.nashorn.internal.ir.Expression.isAlwaysTrue:(Ljdk/nashorn/internal/ir/Expression;)Z
ifeq 40
aload 3
ifnonnull 40
39: aload 0
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.doesNotContinueSequentially:()V
40: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.leaveBreakable:(Ljdk/nashorn/internal/ir/BreakableNode;)V
41: return
end local 9 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 42 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 42 1 loopNode Ljdk/nashorn/internal/ir/LoopNode;
0 42 2 modify Ljdk/nashorn/internal/ir/JoinPredecessorExpression;
0 42 3 iteratorValues Ljdk/nashorn/internal/ir/Expression;
0 42 4 iteratorValuesAreObject Z
1 42 5 test Ljdk/nashorn/internal/ir/JoinPredecessorExpression;
5 42 6 continueLabel Ljdk/nashorn/internal/codegen/Label;
6 42 7 breakLabel Ljdk/nashorn/internal/codegen/Label;
9 42 8 repeatLabel Ljdk/nashorn/internal/codegen/Label;
10 42 9 beforeLoopTypes Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
12 37 10 beforeRepeatTypes Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
18 21 11 ident Ljdk/nashorn/internal/ir/IdentNode;
22 37 11 body Ljdk/nashorn/internal/ir/Block;
MethodParameters:
Name Flags
loopNode final
modify final
iteratorValues final
iteratorValuesAreObject final
public boolean enterThrowNode(jdk.nashorn.internal.ir.ThrowNode);
descriptor: (Ljdk/nashorn/internal/ir/ThrowNode;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
ifne 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual jdk.nashorn.internal.ir.ThrowNode.getExpression:()Ljdk/nashorn/internal/ir/Expression;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpressionOnEmptyStack:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
pop
3: aload 0
aload 1
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToCatchBlock:(Ljdk/nashorn/internal/ir/JoinPredecessor;)V
4: aload 0
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.doesNotContinueSequentially:()V
5: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 6 1 throwNode Ljdk/nashorn/internal/ir/ThrowNode;
MethodParameters:
Name Flags
throwNode final
public boolean enterTryNode(jdk.nashorn.internal.ir.TryNode);
descriptor: (Ljdk/nashorn/internal/ir/TryNode;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=12, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
ifne 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
new jdk.nashorn.internal.codegen.Label
dup
ldc ""
invokespecial jdk.nashorn.internal.codegen.Label.<init>:(Ljava/lang/String;)V
astore 2
start local 2 3: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.catchLabels:Ljava/util/Deque;
aload 2
invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
4: aload 0
aload 1
aload 2
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
5: aload 1
invokevirtual jdk.nashorn.internal.ir.TryNode.getBody:()Ljdk/nashorn/internal/ir/Block;
astore 3
start local 3 6: aload 3
aload 0
invokevirtual jdk.nashorn.internal.ir.Block.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
pop
7: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.catchLabels:Ljava/util/Deque;
invokeinterface java.util.Deque.pop:()Ljava/lang/Object;
pop
8: new jdk.nashorn.internal.codegen.Label
dup
ldc ""
invokespecial jdk.nashorn.internal.codegen.Label.<init>:(Ljava/lang/String;)V
astore 4
start local 4 9: iconst_0
istore 5
start local 5 10: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
ifeq 13
11: aload 0
aload 3
aload 4
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
12: iconst_1
istore 5
13: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.TryNode jdk.nashorn.internal.codegen.Label jdk.nashorn.internal.ir.Block jdk.nashorn.internal.codegen.Label int
StackMap stack:
aload 0
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.doesNotContinueSequentially:()V
14: aload 1
invokevirtual jdk.nashorn.internal.ir.TryNode.getInlinedFinallies:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 7
goto 21
StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.TryNode jdk.nashorn.internal.codegen.Label jdk.nashorn.internal.ir.Block jdk.nashorn.internal.codegen.Label int top java.util.Iterator
StackMap stack:
15: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast jdk.nashorn.internal.ir.Block
astore 6
start local 6 16: aload 6
invokestatic jdk.nashorn.internal.ir.TryNode.getLabelledInlinedFinallyBlock:(Ljdk/nashorn/internal/ir/Block;)Ljdk/nashorn/internal/ir/Block;
astore 8
start local 8 17: aload 0
aload 8
invokevirtual jdk.nashorn.internal.ir.Block.getEntryLabel:()Ljdk/nashorn/internal/codegen/Label;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.joinOnLabel:(Ljdk/nashorn/internal/codegen/Label;)V
18: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
ifeq 21
19: aload 8
aload 0
invokevirtual jdk.nashorn.internal.ir.Block.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
pop
20: getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
ifne 21
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
ifeq 21
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
end local 8 end local 6 21: StackMap locals:
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 15
22: aload 0
aload 2
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.joinOnLabel:(Ljdk/nashorn/internal/codegen/Label;)V
23: aload 1
invokevirtual jdk.nashorn.internal.ir.TryNode.getCatches:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 7
goto 38
StackMap locals:
StackMap stack:
24: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast jdk.nashorn.internal.ir.CatchNode
astore 6
start local 6 25: aload 6
invokevirtual jdk.nashorn.internal.ir.CatchNode.getExceptionIdentifier:()Ljdk/nashorn/internal/ir/IdentNode;
astore 8
start local 8 26: aload 0
aload 8
getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.OBJECT:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.onAssignment:(Ljdk/nashorn/internal/ir/IdentNode;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
27: aload 6
invokevirtual jdk.nashorn.internal.ir.CatchNode.getExceptionCondition:()Ljdk/nashorn/internal/ir/Expression;
astore 9
start local 9 28: aload 9
ifnull 30
29: aload 0
aload 9
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
pop
30: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.TryNode jdk.nashorn.internal.codegen.Label jdk.nashorn.internal.ir.Block jdk.nashorn.internal.codegen.Label int jdk.nashorn.internal.ir.CatchNode java.util.Iterator jdk.nashorn.internal.ir.IdentNode jdk.nashorn.internal.ir.Expression
StackMap stack:
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
astore 10
start local 10 31: aload 6
invokevirtual jdk.nashorn.internal.ir.CatchNode.getBody:()Ljdk/nashorn/internal/ir/Block;
astore 11
start local 11 32: aload 0
iconst_1
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
33: aload 11
aload 0
invokevirtual jdk.nashorn.internal.ir.Block.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
pop
34: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
ifeq 37
35: aload 0
aload 11
aload 4
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
36: iconst_1
istore 5
37: StackMap locals: java.util.Map jdk.nashorn.internal.ir.Block
StackMap stack:
aload 0
aload 10
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
end local 11 end local 10 end local 9 end local 8 end local 6 38: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.TryNode jdk.nashorn.internal.codegen.Label jdk.nashorn.internal.ir.Block jdk.nashorn.internal.codegen.Label int top java.util.Iterator
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 24
39: aload 0
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.doesNotContinueSequentially:()V
40: iload 5
ifeq 42
41: aload 0
aload 4
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.joinOnLabel:(Ljdk/nashorn/internal/codegen/Label;)V
42: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.TryNode jdk.nashorn.internal.codegen.Label jdk.nashorn.internal.ir.Block jdk.nashorn.internal.codegen.Label int
StackMap stack:
iconst_0
ireturn
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 43 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 43 1 tryNode Ljdk/nashorn/internal/ir/TryNode;
3 43 2 catchLabel Ljdk/nashorn/internal/codegen/Label;
6 43 3 body Ljdk/nashorn/internal/ir/Block;
9 43 4 endLabel Ljdk/nashorn/internal/codegen/Label;
10 43 5 canExit Z
16 21 6 inlinedFinally Ljdk/nashorn/internal/ir/Block;
17 21 8 finallyBody Ljdk/nashorn/internal/ir/Block;
25 38 6 catchNode Ljdk/nashorn/internal/ir/CatchNode;
26 38 8 exception Ljdk/nashorn/internal/ir/IdentNode;
28 38 9 condition Ljdk/nashorn/internal/ir/Expression;
31 38 10 afterConditionTypes Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
32 38 11 catchBody Ljdk/nashorn/internal/ir/Block;
MethodParameters:
Name Flags
tryNode final
public boolean enterUnaryNode(jdk.nashorn.internal.ir.UnaryNode);
descriptor: (Ljdk/nashorn/internal/ir/UnaryNode;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual jdk.nashorn.internal.ir.UnaryNode.getExpression:()Ljdk/nashorn/internal/ir/Expression;
astore 2
start local 2 1: aload 1
invokevirtual jdk.nashorn.internal.ir.UnaryNode.tokenType:()Ljdk/nashorn/internal/parser/TokenType;
getstatic jdk.nashorn.internal.parser.TokenType.DELETE:Ljdk/nashorn/internal/parser/TokenType;
if_acmpne 4
aload 2
instanceof jdk.nashorn.internal.ir.IdentNode
ifeq 4
2: aload 1
invokevirtual jdk.nashorn.internal.ir.UnaryNode.getType:()Ljdk/nashorn/internal/codegen/types/Type;
invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.toLvarType:(Ljdk/nashorn/internal/codegen/types/Type;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
astore 3
start local 3 3: goto 7
end local 3 4: StackMap locals: jdk.nashorn.internal.ir.Expression
StackMap stack:
aload 1
aload 0
aload 2
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.typeExpression:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$TypeHolderExpression;
invokevirtual jdk.nashorn.internal.ir.UnaryNode.setExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/ir/UnaryNode;
invokevirtual jdk.nashorn.internal.ir.UnaryNode.getType:()Ljdk/nashorn/internal/codegen/types/Type;
invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.toLvarType:(Ljdk/nashorn/internal/codegen/types/Type;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
astore 3
start local 3 5: aload 1
invokevirtual jdk.nashorn.internal.ir.UnaryNode.isSelfModifying:()Z
ifeq 7
aload 2
instanceof jdk.nashorn.internal.ir.IdentNode
ifeq 7
6: aload 0
aload 2
checkcast jdk.nashorn.internal.ir.IdentNode
aload 3
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.onSelfAssignment:(Ljdk/nashorn/internal/ir/IdentNode;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
7: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
StackMap stack:
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.typeStack:Ljava/util/Deque;
aload 3
invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
8: iconst_0
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 9 1 unaryNode Ljdk/nashorn/internal/ir/UnaryNode;
1 9 2 expr Ljdk/nashorn/internal/ir/Expression;
3 4 3 unaryType Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
5 9 3 unaryType Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
MethodParameters:
Name Flags
unaryNode final
public boolean enterVarNode(jdk.nashorn.internal.ir.VarNode);
descriptor: (Ljdk/nashorn/internal/ir/VarNode;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
ifne 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 1
invokevirtual jdk.nashorn.internal.ir.VarNode.getInit:()Ljdk/nashorn/internal/ir/Expression;
astore 2
start local 2 3: aload 2
ifnull 5
4: aload 0
aload 1
invokevirtual jdk.nashorn.internal.ir.VarNode.getName:()Ljdk/nashorn/internal/ir/IdentNode;
aload 0
aload 2
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.onAssignment:(Ljdk/nashorn/internal/ir/IdentNode;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
5: StackMap locals: jdk.nashorn.internal.ir.Expression
StackMap stack:
iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 6 1 varNode Ljdk/nashorn/internal/ir/VarNode;
3 6 2 init Ljdk/nashorn/internal/ir/Expression;
MethodParameters:
Name Flags
varNode final
public boolean enterWhileNode(jdk.nashorn.internal.ir.WhileNode);
descriptor: (Ljdk/nashorn/internal/ir/WhileNode;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
ifne 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 1
invokevirtual jdk.nashorn.internal.ir.WhileNode.isDoWhile:()Z
ifeq 5
3: aload 0
aload 1
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.enterDoWhileLoop:(Ljdk/nashorn/internal/ir/WhileNode;)V
4: goto 6
5: StackMap locals:
StackMap stack:
aload 0
aload 1
aconst_null
aconst_null
iconst_0
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.enterTestFirstLoop:(Ljdk/nashorn/internal/ir/LoopNode;Ljdk/nashorn/internal/ir/JoinPredecessorExpression;Ljdk/nashorn/internal/ir/Expression;Z)V
6: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 7 1 whileNode Ljdk/nashorn/internal/ir/WhileNode;
MethodParameters:
Name Flags
whileNode final
public boolean enterWithNode(jdk.nashorn.internal.ir.WithNode);
descriptor: (Ljdk/nashorn/internal/ir/WithNode;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
ifeq 3
1: aload 0
aload 1
invokevirtual jdk.nashorn.internal.ir.WithNode.getExpression:()Ljdk/nashorn/internal/ir/Expression;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.visitExpression:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
pop
2: aload 1
invokevirtual jdk.nashorn.internal.ir.WithNode.getBody:()Ljdk/nashorn/internal/ir/Block;
aload 0
invokevirtual jdk.nashorn.internal.ir.Block.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
pop
3: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 4 1 withNode Ljdk/nashorn/internal/ir/WithNode;
MethodParameters:
Name Flags
withNode final
private java.util.Map<jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType> getBreakTargetTypes(jdk.nashorn.internal.ir.LexicalContextNode);
descriptor: (Ljdk/nashorn/internal/ir/LexicalContextNode;)Ljava/util/Map;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=7, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
astore 2
start local 2 1: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.lc:Ljdk/nashorn/internal/ir/LexicalContext;
invokevirtual jdk.nashorn.internal.ir.LexicalContext.getAllNodes:()Ljava/util/Iterator;
astore 3
start local 3 2: goto 14
3: StackMap locals: java.util.Map java.util.Iterator
StackMap stack:
aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast jdk.nashorn.internal.ir.LexicalContextNode
astore 4
start local 4 4: aload 4
instanceof jdk.nashorn.internal.ir.Block
ifeq 12
5: aload 4
checkcast jdk.nashorn.internal.ir.Block
invokevirtual jdk.nashorn.internal.ir.Block.getSymbols:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 6
goto 11
StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.LexicalContextNode java.util.Map java.util.Iterator jdk.nashorn.internal.ir.LexicalContextNode top java.util.Iterator
StackMap stack:
6: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast jdk.nashorn.internal.ir.Symbol
astore 5
start local 5 7: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
aload 5
invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
ifeq 11
8: aload 2
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
if_acmpne 10
9: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.cloneMap:(Ljava/util/Map;)Ljava/util/HashMap;
astore 2
10: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.LexicalContextNode java.util.Map java.util.Iterator jdk.nashorn.internal.ir.LexicalContextNode jdk.nashorn.internal.ir.Symbol java.util.Iterator
StackMap stack:
aload 2
aload 5
invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 5 11: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.LexicalContextNode java.util.Map java.util.Iterator jdk.nashorn.internal.ir.LexicalContextNode top java.util.Iterator
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 6
12: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.LexicalContextNode java.util.Map java.util.Iterator jdk.nashorn.internal.ir.LexicalContextNode
StackMap stack:
aload 4
aload 1
if_acmpne 14
13: goto 15
end local 4 14: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 3
end local 3 15: StackMap locals:
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 16 1 target Ljdk/nashorn/internal/ir/LexicalContextNode;
1 16 2 types Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
2 15 3 it Ljava/util/Iterator<Ljdk/nashorn/internal/ir/LexicalContextNode;>;
4 14 4 node Ljdk/nashorn/internal/ir/LexicalContextNode;
7 11 5 symbol Ljdk/nashorn/internal/ir/Symbol;
Signature: (Ljdk/nashorn/internal/ir/LexicalContextNode;)Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
MethodParameters:
Name Flags
target final
private jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType getLocalVariableType(jdk.nashorn.internal.ir.Symbol);
descriptor: (Ljdk/nashorn/internal/ir/Symbol;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.getLocalVariableTypeOrNull:(Ljdk/nashorn/internal/ir/Symbol;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
astore 2
start local 2 1: getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
ifne 2
aload 2
ifnonnull 2
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
2: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 3 1 symbol Ljdk/nashorn/internal/ir/Symbol;
1 3 2 type Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
MethodParameters:
Name Flags
symbol final
private jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType getLocalVariableTypeOrNull(jdk.nashorn.internal.ir.Symbol);
descriptor: (Ljdk/nashorn/internal/ir/Symbol;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 1 1 symbol Ljdk/nashorn/internal/ir/Symbol;
MethodParameters:
Name Flags
symbol final
private jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget getOrCreateJumpTarget(jdk.nashorn.internal.codegen.Label);
descriptor: (Ljdk/nashorn/internal/codegen/Label;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$JumpTarget;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpTargets:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget
astore 2
start local 2 1: aload 2
ifnonnull 3
2: aload 0
aload 1
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.createJumpTarget:(Ljdk/nashorn/internal/codegen/Label;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$JumpTarget;
astore 2
3: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 4 1 label Ljdk/nashorn/internal/codegen/Label;
1 4 2 jumpTarget Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$JumpTarget;
MethodParameters:
Name Flags
label final
private void joinOnLabel(jdk.nashorn.internal.codegen.Label);
descriptor: (Ljdk/nashorn/internal/codegen/Label;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=5, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpTargets:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget
astore 2
start local 2 1: aload 2
ifnonnull 3
2: return
3: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget
StackMap stack:
getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
ifne 4
aload 2
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget.origins:Ljava/util/List;
invokeinterface java.util.List.isEmpty:()Z
ifeq 4
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
4: StackMap locals:
StackMap stack:
aload 0
iconst_1
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
5: aload 0
aload 0
aload 2
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget.types:Ljava/util/Map;
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.getUnionTypes:(Ljava/util/Map;Ljava/util/Map;)Ljava/util/Map;
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
6: aload 2
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget.origins:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
goto 9
StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.codegen.Label jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget top java.util.Iterator
StackMap stack:
7: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpOrigin
astore 3
start local 3 8: aload 0
aload 3
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpOrigin.node:Ljdk/nashorn/internal/ir/JoinPredecessor;
aload 3
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpOrigin.types:Ljava/util/Map;
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setConversion:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljava/util/Map;Ljava/util/Map;)V
end local 3 9: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 7
10: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 11 1 label Ljdk/nashorn/internal/codegen/Label;
1 11 2 jumpTarget Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$JumpTarget;
8 9 3 jumpOrigin Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$JumpOrigin;
MethodParameters:
Name Flags
label final
private void jumpToCatchBlock(jdk.nashorn.internal.ir.JoinPredecessor);
descriptor: (Ljdk/nashorn/internal/ir/JoinPredecessor;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.catchLabels:Ljava/util/Deque;
invokeinterface java.util.Deque.peek:()Ljava/lang/Object;
checkcast jdk.nashorn.internal.codegen.Label
astore 2
start local 2 1: aload 2
ifnull 3
2: aload 0
aload 1
aload 2
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
3: StackMap locals: jdk.nashorn.internal.codegen.Label
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 4 1 jumpOrigin Ljdk/nashorn/internal/ir/JoinPredecessor;
1 4 2 currentCatchLabel Ljdk/nashorn/internal/codegen/Label;
MethodParameters:
Name Flags
jumpOrigin final
private void jumpToLabel(jdk.nashorn.internal.ir.JoinPredecessor, jdk.nashorn.internal.codegen.Label);
descriptor: (Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
aload 2
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;Ljava/util/Map;)V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 2 1 jumpOrigin Ljdk/nashorn/internal/ir/JoinPredecessor;
0 2 2 label Ljdk/nashorn/internal/codegen/Label;
MethodParameters:
Name Flags
jumpOrigin final
label final
private void jumpToLabel(jdk.nashorn.internal.ir.JoinPredecessor, jdk.nashorn.internal.codegen.Label, java.util.Map<jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType>);
descriptor: (Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;Ljava/util/Map;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 2
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.getOrCreateJumpTarget:(Ljdk/nashorn/internal/codegen/Label;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$JumpTarget;
aload 1
aload 3
aload 0
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget.addOrigin:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljava/util/Map;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;)V
1: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 2 1 jumpOrigin Ljdk/nashorn/internal/ir/JoinPredecessor;
0 2 2 label Ljdk/nashorn/internal/codegen/Label;
0 2 3 types Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
Signature: (Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;)V
MethodParameters:
Name Flags
jumpOrigin final
label final
types final
public jdk.nashorn.internal.ir.Node leaveBlock(jdk.nashorn.internal.ir.Block);
descriptor: (Ljdk/nashorn/internal/ir/Block;)Ljdk/nashorn/internal/ir/Node;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=6, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.lc:Ljdk/nashorn/internal/ir/LexicalContext;
invokevirtual jdk.nashorn.internal.ir.LexicalContext.isFunctionBody:()Z
ifeq 5
1: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
ifeq 4
2: aload 0
aload 1
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.createSyntheticReturn:(Ljdk/nashorn/internal/ir/Block;)V
3: getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
ifne 4
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
ifeq 4
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
4: StackMap locals:
StackMap stack:
aload 0
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.calculateReturnType:()V
5: StackMap locals:
StackMap stack:
iconst_0
istore 2
start local 2 6: aload 1
invokevirtual jdk.nashorn.internal.ir.Block.getSymbols:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
goto 20
StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.Block int top java.util.Iterator
StackMap stack:
7: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast jdk.nashorn.internal.ir.Symbol
astore 3
start local 3 8: aload 3
invokevirtual jdk.nashorn.internal.ir.Symbol.hasSlot:()Z
ifeq 20
9: aload 3
invokevirtual jdk.nashorn.internal.ir.Symbol.isBytecodeLocal:()Z
ifeq 15
10: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
aload 3
invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
ifeq 14
11: iload 2
ifne 14
12: aload 0
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.cloneMap:(Ljava/util/Map;)Ljava/util/HashMap;
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
13: iconst_1
istore 2
14: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.Block int jdk.nashorn.internal.ir.Symbol java.util.Iterator
StackMap stack:
aload 0
aload 3
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.invalidateSymbol:(Ljdk/nashorn/internal/ir/Symbol;)V
15: StackMap locals:
StackMap stack:
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.symbolConversions:Ljava/util/Map;
aload 3
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$SymbolConversions
astore 5
start local 5 16: aload 5
ifnull 18
17: aload 5
aload 3
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$SymbolConversions.calculateTypeLiveness:(Ljdk/nashorn/internal/ir/Symbol;)V
18: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$SymbolConversions
StackMap stack:
aload 3
invokevirtual jdk.nashorn.internal.ir.Symbol.slotCount:()I
ifne 20
19: aload 3
iconst_0
invokevirtual jdk.nashorn.internal.ir.Symbol.setNeedsSlot:(Z)Ljdk/nashorn/internal/ir/Symbol;
pop
end local 5 end local 3 20: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.Block int top java.util.Iterator
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 7
21: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.reachable:Z
ifeq 25
22: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.lc:Ljdk/nashorn/internal/ir/LexicalContext;
invokevirtual jdk.nashorn.internal.ir.LexicalContext.getCurrentBlockLabelNode:()Ljdk/nashorn/internal/ir/LabelNode;
astore 3
start local 3 23: aload 3
ifnull 25
24: aload 0
aload 3
aload 1
invokevirtual jdk.nashorn.internal.ir.Block.getBreakLabel:()Ljdk/nashorn/internal/codegen/Label;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToLabel:(Ljdk/nashorn/internal/ir/JoinPredecessor;Ljdk/nashorn/internal/codegen/Label;)V
end local 3 25: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.Block int
StackMap stack:
aload 0
aload 1
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.leaveBreakable:(Ljdk/nashorn/internal/ir/BreakableNode;)V
26: aload 1
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 27 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 27 1 block Ljdk/nashorn/internal/ir/Block;
6 27 2 cloned Z
8 20 3 symbol Ljdk/nashorn/internal/ir/Symbol;
16 20 5 conversions Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$SymbolConversions;
23 25 3 labelNode Ljdk/nashorn/internal/ir/LabelNode;
MethodParameters:
Name Flags
block final
private void calculateReturnType();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.returnType:Ljdk/nashorn/internal/codegen/types/Type;
invokevirtual jdk.nashorn.internal.codegen.types.Type.isUnknown:()Z
ifeq 2
1: aload 0
getstatic jdk.nashorn.internal.codegen.types.Type.OBJECT:Ljdk/nashorn/internal/codegen/types/Type;
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.returnType:Ljdk/nashorn/internal/codegen/types/Type;
2: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
private void createSyntheticReturn(jdk.nashorn.internal.ir.Block);
descriptor: (Ljdk/nashorn/internal/ir/Block;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=8, locals=9, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.lc:Ljdk/nashorn/internal/ir/LexicalContext;
invokevirtual jdk.nashorn.internal.ir.LexicalContext.getCurrentFunction:()Ljdk/nashorn/internal/ir/FunctionNode;
astore 2
start local 2 1: aload 2
invokevirtual jdk.nashorn.internal.ir.FunctionNode.getToken:()J
lstore 3
start local 3 2: aload 2
invokevirtual jdk.nashorn.internal.ir.FunctionNode.getFinish:()I
istore 5
start local 5 3: aload 1
invokevirtual jdk.nashorn.internal.ir.Block.getStatements:()Ljava/util/List;
astore 6
start local 6 4: aload 6
invokeinterface java.util.List.isEmpty:()Z
ifeq 5
aload 2
invokevirtual jdk.nashorn.internal.ir.FunctionNode.getLineNumber:()I
goto 6
StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.Block jdk.nashorn.internal.ir.FunctionNode long int java.util.List
StackMap stack:
5: aload 6
aload 6
invokeinterface java.util.List.size:()I
iconst_1
isub
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast jdk.nashorn.internal.ir.Statement
invokevirtual jdk.nashorn.internal.ir.Statement.getLineNumber:()I
StackMap locals:
StackMap stack: int
6: istore 7
start local 7 7: aload 2
invokevirtual jdk.nashorn.internal.ir.FunctionNode.isProgram:()Z
ifeq 10
8: new jdk.nashorn.internal.ir.IdentNode
dup
lload 3
iload 5
getstatic jdk.nashorn.internal.codegen.CompilerConstants.RETURN:Ljdk/nashorn/internal/codegen/CompilerConstants;
invokevirtual jdk.nashorn.internal.codegen.CompilerConstants.symbolName:()Ljava/lang/String;
invokespecial jdk.nashorn.internal.ir.IdentNode.<init>:(JILjava/lang/String;)V
aload 2
getstatic jdk.nashorn.internal.codegen.CompilerConstants.RETURN:Ljdk/nashorn/internal/codegen/CompilerConstants;
invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.getCompilerConstantSymbol:(Ljdk/nashorn/internal/ir/FunctionNode;Ljdk/nashorn/internal/codegen/CompilerConstants;)Ljdk/nashorn/internal/ir/Symbol;
invokevirtual jdk.nashorn.internal.ir.IdentNode.setSymbol:(Ljdk/nashorn/internal/ir/Symbol;)Ljdk/nashorn/internal/ir/IdentNode;
astore 8
start local 8 9: goto 11
end local 8 10: StackMap locals: int
StackMap stack:
aconst_null
astore 8
start local 8 11: StackMap locals: jdk.nashorn.internal.ir.IdentNode
StackMap stack:
aload 0
new jdk.nashorn.internal.ir.ReturnNode
dup
iload 7
lload 3
iload 5
aload 8
invokespecial jdk.nashorn.internal.ir.ReturnNode.<init>:(IJILjdk/nashorn/internal/ir/Expression;)V
putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.syntheticReturn:Ljdk/nashorn/internal/ir/ReturnNode;
12: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.syntheticReturn:Ljdk/nashorn/internal/ir/ReturnNode;
aload 0
invokevirtual jdk.nashorn.internal.ir.ReturnNode.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
pop
13: return
end local 8 end local 7 end local 6 end local 5 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 14 1 body Ljdk/nashorn/internal/ir/Block;
1 14 2 functionNode Ljdk/nashorn/internal/ir/FunctionNode;
2 14 3 token J
3 14 5 finish I
4 14 6 statements Ljava/util/List<Ljdk/nashorn/internal/ir/Statement;>;
7 14 7 lineNumber I
9 10 8 returnExpr Ljdk/nashorn/internal/ir/IdentNode;
11 14 8 returnExpr Ljdk/nashorn/internal/ir/IdentNode;
MethodParameters:
Name Flags
body final
private void leaveBreakable(jdk.nashorn.internal.ir.BreakableNode);
descriptor: (Ljdk/nashorn/internal/ir/BreakableNode;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokeinterface jdk.nashorn.internal.ir.BreakableNode.getBreakLabel:()Ljdk/nashorn/internal/codegen/Label;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.joinOnLabel:(Ljdk/nashorn/internal/codegen/Label;)V
1: aload 0
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.assertTypeStackIsEmpty:()V
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 3 1 breakable Ljdk/nashorn/internal/ir/BreakableNode;
MethodParameters:
Name Flags
breakable final
public jdk.nashorn.internal.ir.Node leaveFunctionNode(jdk.nashorn.internal.ir.FunctionNode);
descriptor: (Ljdk/nashorn/internal/ir/FunctionNode;)Ljdk/nashorn/internal/ir/Node;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: aload 1
astore 2
start local 2 1: new jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$1
dup
aload 0
invokespecial jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$1.<init>:(Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;)V
astore 3
start local 3 2: aload 2
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.lc:Ljdk/nashorn/internal/ir/LexicalContext;
aload 2
invokevirtual jdk.nashorn.internal.ir.FunctionNode.getBody:()Ljdk/nashorn/internal/ir/Block;
aload 3
invokevirtual jdk.nashorn.internal.ir.Block.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
checkcast jdk.nashorn.internal.ir.Block
invokevirtual jdk.nashorn.internal.ir.FunctionNode.setBody:(Ljdk/nashorn/internal/ir/LexicalContext;Ljdk/nashorn/internal/ir/Block;)Ljdk/nashorn/internal/ir/FunctionNode;
astore 2
3: aload 2
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.lc:Ljdk/nashorn/internal/ir/LexicalContext;
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.returnType:Ljdk/nashorn/internal/codegen/types/Type;
invokevirtual jdk.nashorn.internal.ir.FunctionNode.setReturnType:(Ljdk/nashorn/internal/ir/LexicalContext;Ljdk/nashorn/internal/codegen/types/Type;)Ljdk/nashorn/internal/ir/FunctionNode;
astore 2
4: aload 2
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.lc:Ljdk/nashorn/internal/ir/LexicalContext;
aload 2
aload 3
invokevirtual jdk.nashorn.internal.ir.FunctionNode.visitParameters:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljava/util/List;
invokevirtual jdk.nashorn.internal.ir.FunctionNode.setParameters:(Ljdk/nashorn/internal/ir/LexicalContext;Ljava/util/List;)Ljdk/nashorn/internal/ir/FunctionNode;
astore 2
5: aload 2
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 6 1 functionNode Ljdk/nashorn/internal/ir/FunctionNode;
1 6 2 newFunction Ljdk/nashorn/internal/ir/FunctionNode;
2 6 3 applyChangesVisitor Ljdk/nashorn/internal/ir/visitor/SimpleNodeVisitor;
MethodParameters:
Name Flags
functionNode final
private static jdk.nashorn.internal.ir.Expression createIsUndefined(jdk.nashorn.internal.ir.Expression, jdk.nashorn.internal.ir.Expression, jdk.nashorn.internal.ir.Expression, jdk.nashorn.internal.ir.RuntimeNode$Request);
descriptor: (Ljdk/nashorn/internal/ir/Expression;Ljdk/nashorn/internal/ir/Expression;Ljdk/nashorn/internal/ir/Expression;Ljdk/nashorn/internal/ir/RuntimeNode$Request;)Ljdk/nashorn/internal/ir/Expression;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=8, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.isUndefinedIdent:(Ljdk/nashorn/internal/ir/Expression;)Z
ifne 1
aload 2
invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.isUndefinedIdent:(Ljdk/nashorn/internal/ir/Expression;)Z
ifeq 2
1: StackMap locals:
StackMap stack:
new jdk.nashorn.internal.ir.RuntimeNode
dup
aload 0
aload 3
iconst_2
anewarray jdk.nashorn.internal.ir.Expression
dup
iconst_0
aload 1
aastore
dup
iconst_1
aload 2
aastore
invokespecial jdk.nashorn.internal.ir.RuntimeNode.<init>:(Ljdk/nashorn/internal/ir/Expression;Ljdk/nashorn/internal/ir/RuntimeNode$Request;[Ljdk/nashorn/internal/ir/Expression;)V
areturn
2: StackMap locals:
StackMap stack:
aload 0
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 parent Ljdk/nashorn/internal/ir/Expression;
0 3 1 lhs Ljdk/nashorn/internal/ir/Expression;
0 3 2 rhs Ljdk/nashorn/internal/ir/Expression;
0 3 3 request Ljdk/nashorn/internal/ir/RuntimeNode$Request;
MethodParameters:
Name Flags
parent final
lhs final
rhs final
request final
private static boolean isUndefinedIdent(jdk.nashorn.internal.ir.Expression);
descriptor: (Ljdk/nashorn/internal/ir/Expression;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
instanceof jdk.nashorn.internal.ir.IdentNode
ifeq 1
ldc "undefined"
aload 0
checkcast jdk.nashorn.internal.ir.IdentNode
invokevirtual jdk.nashorn.internal.ir.IdentNode.getName:()Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 expr Ljdk/nashorn/internal/ir/Expression;
MethodParameters:
Name Flags
expr final
private boolean identIsDeadAndHasNoLiveConversions(jdk.nashorn.internal.ir.IdentNode);
descriptor: (Ljdk/nashorn/internal/ir/IdentNode;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableConversions:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast jdk.nashorn.internal.ir.LocalVariableConversion
astore 2
start local 2 1: aload 2
ifnull 2
aload 2
invokevirtual jdk.nashorn.internal.ir.LocalVariableConversion.isLive:()Z
ifeq 2
iconst_0
ireturn
StackMap locals: jdk.nashorn.internal.ir.LocalVariableConversion
StackMap stack:
2: iconst_1
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 3 1 identNode Ljdk/nashorn/internal/ir/IdentNode;
1 3 2 conv Ljdk/nashorn/internal/ir/LocalVariableConversion;
MethodParameters:
Name Flags
identNode final
private void onAssignment(jdk.nashorn.internal.ir.IdentNode, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType);
descriptor: (Ljdk/nashorn/internal/ir/IdentNode;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual jdk.nashorn.internal.ir.IdentNode.getSymbol:()Ljdk/nashorn/internal/ir/Symbol;
astore 3
start local 3 1: getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
ifne 2
aload 3
ifnonnull 2
new java.lang.AssertionError
dup
aload 1
invokevirtual jdk.nashorn.internal.ir.IdentNode.getName:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
2: StackMap locals: jdk.nashorn.internal.ir.Symbol
StackMap stack:
aload 3
invokevirtual jdk.nashorn.internal.ir.Symbol.isBytecodeLocal:()Z
ifne 4
3: return
4: StackMap locals:
StackMap stack:
getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
ifne 5
aload 2
ifnonnull 5
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
5: StackMap locals:
StackMap stack:
aload 2
getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.UNDEFINED:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
if_acmpne 9
aload 0
aload 3
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.getLocalVariableType:(Ljdk/nashorn/internal/ir/Symbol;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.UNDEFINED:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
if_acmpeq 9
6: getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.OBJECT:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
astore 4
start local 4 7: aload 3
sipush 8192
invokevirtual jdk.nashorn.internal.ir.Symbol.setFlag:(I)Ljdk/nashorn/internal/ir/Symbol;
pop
8: goto 10
end local 4 9: StackMap locals:
StackMap stack:
aload 2
astore 4
start local 4 10: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
StackMap stack:
aload 0
aload 3
aload 4
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setType:(Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
11: aload 0
aload 1
aload 4
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setIdentifierLvarType:(Ljdk/nashorn/internal/ir/IdentNode;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
12: aload 0
aload 1
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToCatchBlock:(Ljdk/nashorn/internal/ir/JoinPredecessor;)V
13: return
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 Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 14 1 identNode Ljdk/nashorn/internal/ir/IdentNode;
0 14 2 type Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
1 14 3 symbol Ljdk/nashorn/internal/ir/Symbol;
7 9 4 finalType Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
10 14 4 finalType Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
MethodParameters:
Name Flags
identNode final
type final
private void onSelfAssignment(jdk.nashorn.internal.ir.IdentNode, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType);
descriptor: (Ljdk/nashorn/internal/ir/IdentNode;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual jdk.nashorn.internal.ir.IdentNode.getSymbol:()Ljdk/nashorn/internal/ir/Symbol;
astore 3
start local 3 1: getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
ifne 2
aload 3
ifnonnull 2
new java.lang.AssertionError
dup
aload 1
invokevirtual jdk.nashorn.internal.ir.IdentNode.getName:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
2: StackMap locals: jdk.nashorn.internal.ir.Symbol
StackMap stack:
aload 3
invokevirtual jdk.nashorn.internal.ir.Symbol.isBytecodeLocal:()Z
ifne 4
3: return
4: StackMap locals:
StackMap stack:
getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
ifne 6
aload 2
ifnull 5
aload 2
getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.UNDEFINED:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
if_acmpeq 5
aload 2
getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.BOOLEAN:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
if_acmpne 6
StackMap locals:
StackMap stack:
5: new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
6: StackMap locals:
StackMap stack:
aload 0
aload 3
aload 2
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setType:(Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
7: aload 0
aload 1
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpToCatchBlock:(Ljdk/nashorn/internal/ir/JoinPredecessor;)V
8: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 9 1 identNode Ljdk/nashorn/internal/ir/IdentNode;
0 9 2 type Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
1 9 3 symbol Ljdk/nashorn/internal/ir/Symbol;
MethodParameters:
Name Flags
identNode final
type final
private void resetJoinPoint(jdk.nashorn.internal.codegen.Label);
descriptor: (Ljdk/nashorn/internal/codegen/Label;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.jumpTargets:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 2 1 label Ljdk/nashorn/internal/codegen/Label;
MethodParameters:
Name Flags
label final
private void setCompilerConstantAsObject(jdk.nashorn.internal.ir.FunctionNode, jdk.nashorn.internal.codegen.CompilerConstants);
descriptor: (Ljdk/nashorn/internal/ir/FunctionNode;Ljdk/nashorn/internal/codegen/CompilerConstants;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 1
aload 2
invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.getCompilerConstantSymbol:(Ljdk/nashorn/internal/ir/FunctionNode;Ljdk/nashorn/internal/codegen/CompilerConstants;)Ljdk/nashorn/internal/ir/Symbol;
astore 3
start local 3 1: aload 0
aload 3
getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType.OBJECT:Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.setType:(Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
2: aload 0
aload 3
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.symbolIsUsed:(Ljdk/nashorn/internal/ir/Symbol;)V
3: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 4 1 functionNode Ljdk/nashorn/internal/ir/FunctionNode;
0 4 2 cc Ljdk/nashorn/internal/codegen/CompilerConstants;
1 4 3 symbol Ljdk/nashorn/internal/ir/Symbol;
MethodParameters:
Name Flags
functionNode final
cc final
private static jdk.nashorn.internal.ir.Symbol getCompilerConstantSymbol(jdk.nashorn.internal.ir.FunctionNode, jdk.nashorn.internal.codegen.CompilerConstants);
descriptor: (Ljdk/nashorn/internal/ir/FunctionNode;Ljdk/nashorn/internal/codegen/CompilerConstants;)Ljdk/nashorn/internal/ir/Symbol;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual jdk.nashorn.internal.ir.FunctionNode.getBody:()Ljdk/nashorn/internal/ir/Block;
aload 1
invokevirtual jdk.nashorn.internal.codegen.CompilerConstants.symbolName:()Ljava/lang/String;
invokevirtual jdk.nashorn.internal.ir.Block.getExistingSymbol:(Ljava/lang/String;)Ljdk/nashorn/internal/ir/Symbol;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 functionNode Ljdk/nashorn/internal/ir/FunctionNode;
0 1 1 cc Ljdk/nashorn/internal/codegen/CompilerConstants;
MethodParameters:
Name Flags
functionNode final
cc final
private void setConversion(jdk.nashorn.internal.ir.JoinPredecessor, java.util.Map<jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType>, java.util.Map<jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType>);
descriptor: (Ljdk/nashorn/internal/ir/JoinPredecessor;Ljava/util/Map;Ljava/util/Map;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=9, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
ifnonnull 2
1: return
2: StackMap locals:
StackMap stack:
aload 2
invokeinterface java.util.Map.isEmpty:()Z
ifne 3
aload 3
invokeinterface java.util.Map.isEmpty:()Z
ifeq 4
3: StackMap locals:
StackMap stack:
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableConversions:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
4: StackMap locals:
StackMap stack:
aconst_null
astore 4
start local 4 5: aload 1
instanceof jdk.nashorn.internal.ir.IdentNode
ifeq 9
6: aload 1
checkcast jdk.nashorn.internal.ir.IdentNode
invokevirtual jdk.nashorn.internal.ir.IdentNode.getSymbol:()Ljdk/nashorn/internal/ir/Symbol;
astore 5
start local 5 7: aload 0
aload 5
aload 2
aload 5
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
aload 3
aconst_null
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.createConversion:(Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;Ljava/util/Map;Ljdk/nashorn/internal/ir/LocalVariableConversion;)Ljdk/nashorn/internal/ir/LocalVariableConversion;
astore 4
end local 5 8: goto 15
9: StackMap locals: jdk.nashorn.internal.ir.LocalVariableConversion
StackMap stack:
aload 2
invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 6
goto 14
StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.JoinPredecessor java.util.Map java.util.Map jdk.nashorn.internal.ir.LocalVariableConversion top java.util.Iterator
StackMap stack:
10: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.util.Map$Entry
astore 5
start local 5 11: aload 5
invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
checkcast jdk.nashorn.internal.ir.Symbol
astore 7
start local 7 12: aload 5
invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
checkcast jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType
astore 8
start local 8 13: aload 0
aload 7
aload 8
aload 3
aload 4
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.createConversion:(Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;Ljava/util/Map;Ljdk/nashorn/internal/ir/LocalVariableConversion;)Ljdk/nashorn/internal/ir/LocalVariableConversion;
astore 4
end local 8 end local 7 end local 5 14: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 10
15: StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator jdk.nashorn.internal.ir.JoinPredecessor java.util.Map java.util.Map jdk.nashorn.internal.ir.LocalVariableConversion
StackMap stack:
aload 4
ifnull 18
16: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableConversions:Ljava/util/Map;
aload 1
aload 4
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
17: goto 19
18: StackMap locals:
StackMap stack:
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableConversions:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
19: StackMap locals:
StackMap stack:
return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 20 1 node Ljdk/nashorn/internal/ir/JoinPredecessor;
0 20 2 branchLvarTypes Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
0 20 3 joinLvarTypes Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
5 20 4 conversion Ljdk/nashorn/internal/ir/LocalVariableConversion;
7 8 5 symbol Ljdk/nashorn/internal/ir/Symbol;
11 14 5 entry Ljava/util/Map$Entry<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;
12 14 7 symbol Ljdk/nashorn/internal/ir/Symbol;
13 14 8 branchLvarType Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
Signature: (Ljdk/nashorn/internal/ir/JoinPredecessor;Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;Ljava/util/Map<Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;>;)V
MethodParameters:
Name Flags
node final
branchLvarTypes final
joinLvarTypes final
private void setIdentifierLvarType(jdk.nashorn.internal.ir.IdentNode, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType);
descriptor: (Ljdk/nashorn/internal/ir/IdentNode;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
ifne 1
aload 2
ifnonnull 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.identifierLvarTypes:Ljava/util/Map;
aload 1
aload 2
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
2: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 3 1 identNode Ljdk/nashorn/internal/ir/IdentNode;
0 3 2 type Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
MethodParameters:
Name Flags
identNode final
type final
private void setType(jdk.nashorn.internal.ir.Symbol, jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType);
descriptor: (Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.getLocalVariableTypeOrNull:(Ljdk/nashorn/internal/ir/Symbol;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
aload 2
if_acmpne 2
1: return
2: StackMap locals:
StackMap stack:
getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
ifne 3
aload 1
invokevirtual jdk.nashorn.internal.ir.Symbol.hasSlot:()Z
ifne 3
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
3: StackMap locals:
StackMap stack:
getstatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.$assertionsDisabled:Z
ifne 4
aload 1
invokevirtual jdk.nashorn.internal.ir.Symbol.isGlobal:()Z
ifeq 4
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
4: StackMap locals:
StackMap stack:
aload 0
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.cloneOrNewLocalVariableTypes:()V
5: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
aload 1
aload 2
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
6: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 7 1 symbol Ljdk/nashorn/internal/ir/Symbol;
0 7 2 type Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
MethodParameters:
Name Flags
symbol final
type final
private void cloneOrNewLocalVariableTypes();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
invokeinterface java.util.Map.isEmpty:()Z
ifeq 1
new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
goto 2
StackMap locals:
StackMap stack: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator
1: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.cloneMap:(Ljava/util/Map;)Ljava/util/HashMap;
StackMap locals: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator
StackMap stack: jdk.nashorn.internal.codegen.LocalVariableTypesCalculator java.util.HashMap
2: putfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
private void invalidateSymbol(jdk.nashorn.internal.ir.Symbol);
descriptor: (Ljdk/nashorn/internal/ir/Symbol;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.localVariableTypes:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
1: aload 0
getfield jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.invalidatedSymbols:Ljava/util/Set;
aload 1
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 3 1 symbol Ljdk/nashorn/internal/ir/Symbol;
MethodParameters:
Name Flags
symbol final
private void symbolIsUsed(jdk.nashorn.internal.ir.Symbol);
descriptor: (Ljdk/nashorn/internal/ir/Symbol;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 1
aload 0
aload 1
invokevirtual jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.getLocalVariableType:(Ljdk/nashorn/internal/ir/Symbol;)Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;
invokestatic jdk.nashorn.internal.codegen.LocalVariableTypesCalculator.symbolIsUsed:(Ljdk/nashorn/internal/ir/Symbol;Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator$LvarType;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljdk/nashorn/internal/codegen/LocalVariableTypesCalculator;
0 2 1 symbol Ljdk/nashorn/internal/ir/Symbol;
MethodParameters:
Name Flags
symbol final
}
SourceFile: "LocalVariableTypesCalculator.java"
NestMembers:
jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$1 jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpOrigin jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$SymbolConversions jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$TypeHolderExpression
InnerClasses:
public abstract Entry = java.util.Map$Entry of java.util.Map
jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$1
private JumpOrigin = jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpOrigin of jdk.nashorn.internal.codegen.LocalVariableTypesCalculator
private JumpTarget = jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$JumpTarget of jdk.nashorn.internal.codegen.LocalVariableTypesCalculator
private final LvarType = jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$LvarType of jdk.nashorn.internal.codegen.LocalVariableTypesCalculator
private SymbolConversions = jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$SymbolConversions of jdk.nashorn.internal.codegen.LocalVariableTypesCalculator
private TypeHolderExpression = jdk.nashorn.internal.codegen.LocalVariableTypesCalculator$TypeHolderExpression of jdk.nashorn.internal.codegen.LocalVariableTypesCalculator
public EvalArgs = jdk.nashorn.internal.ir.CallNode$EvalArgs of jdk.nashorn.internal.ir.CallNode
public final ArrayLiteralNode = jdk.nashorn.internal.ir.LiteralNode$ArrayLiteralNode of jdk.nashorn.internal.ir.LiteralNode
public final Request = jdk.nashorn.internal.ir.RuntimeNode$Request of jdk.nashorn.internal.ir.RuntimeNode