final class jdk.nashorn.internal.codegen.SplitIntoFunctions extends jdk.nashorn.internal.ir.visitor.NodeVisitor<jdk.nashorn.internal.ir.BlockLexicalContext>
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: jdk.nashorn.internal.codegen.SplitIntoFunctions
super_class: jdk.nashorn.internal.ir.visitor.NodeVisitor
{
private static final int FALLTHROUGH_STATE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: -1
private static final int RETURN_STATE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 0
private static final int BREAK_STATE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1
private static final int FIRST_JUMP_STATE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 2
private static final java.lang.String THIS_NAME;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.lang.String RETURN_NAME;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.lang.String RETURN_PARAM_NAME;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final java.util.Deque<jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState> functionStates;
descriptor: Ljava/util/Deque;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Deque<Ljdk/nashorn/internal/codegen/SplitIntoFunctions$FunctionState;>;
private final java.util.Deque<jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState> splitStates;
descriptor: Ljava/util/Deque;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Deque<Ljdk/nashorn/internal/codegen/SplitIntoFunctions$SplitState;>;
private final jdk.nashorn.internal.codegen.Namespace namespace;
descriptor: Ljdk/nashorn/internal/codegen/Namespace;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private boolean artificialBlock;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private int nextFunctionId;
descriptor: I
flags: (0x0002) ACC_PRIVATE
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=0, args_size=0
0: ldc Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
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.SplitIntoFunctions.$assertionsDisabled:Z
3: getstatic jdk.nashorn.internal.codegen.CompilerConstants.THIS:Ljdk/nashorn/internal/codegen/CompilerConstants;
invokevirtual jdk.nashorn.internal.codegen.CompilerConstants.symbolName:()Ljava/lang/String;
putstatic jdk.nashorn.internal.codegen.SplitIntoFunctions.THIS_NAME:Ljava/lang/String;
4: getstatic jdk.nashorn.internal.codegen.CompilerConstants.RETURN:Ljdk/nashorn/internal/codegen/CompilerConstants;
invokevirtual jdk.nashorn.internal.codegen.CompilerConstants.symbolName:()Ljava/lang/String;
putstatic jdk.nashorn.internal.codegen.SplitIntoFunctions.RETURN_NAME:Ljava/lang/String;
5: new java.lang.StringBuilder
dup
getstatic jdk.nashorn.internal.codegen.SplitIntoFunctions.RETURN_NAME:Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "-in"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
putstatic jdk.nashorn.internal.codegen.SplitIntoFunctions.RETURN_PARAM_NAME:Ljava/lang/String;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(jdk.nashorn.internal.codegen.Compiler);
descriptor: (Ljdk/nashorn/internal/codegen/Compiler;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
new jdk.nashorn.internal.codegen.SplitIntoFunctions$1
dup
invokespecial jdk.nashorn.internal.codegen.SplitIntoFunctions$1.<init>:()V
invokespecial jdk.nashorn.internal.ir.visitor.NodeVisitor.<init>:(Ljdk/nashorn/internal/ir/LexicalContext;)V
1: aload 0
new java.util.ArrayDeque
dup
invokespecial java.util.ArrayDeque.<init>:()V
putfield jdk.nashorn.internal.codegen.SplitIntoFunctions.functionStates:Ljava/util/Deque;
2: aload 0
new java.util.ArrayDeque
dup
invokespecial java.util.ArrayDeque.<init>:()V
putfield jdk.nashorn.internal.codegen.SplitIntoFunctions.splitStates:Ljava/util/Deque;
3: aload 0
iconst_0
putfield jdk.nashorn.internal.codegen.SplitIntoFunctions.artificialBlock:Z
4: aload 0
bipush -2
putfield jdk.nashorn.internal.codegen.SplitIntoFunctions.nextFunctionId:I
5: aload 0
new jdk.nashorn.internal.codegen.Namespace
dup
aload 1
invokevirtual jdk.nashorn.internal.codegen.Compiler.getScriptEnvironment:()Ljdk/nashorn/internal/runtime/ScriptEnvironment;
invokevirtual jdk.nashorn.internal.runtime.ScriptEnvironment.getNamespace:()Ljdk/nashorn/internal/codegen/Namespace;
invokespecial jdk.nashorn.internal.codegen.Namespace.<init>:(Ljdk/nashorn/internal/codegen/Namespace;)V
putfield jdk.nashorn.internal.codegen.SplitIntoFunctions.namespace:Ljdk/nashorn/internal/codegen/Namespace;
6: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
0 7 1 compiler Ljdk/nashorn/internal/codegen/Compiler;
MethodParameters:
Name Flags
compiler final
public boolean enterFunctionNode(jdk.nashorn.internal.ir.FunctionNode);
descriptor: (Ljdk/nashorn/internal/ir/FunctionNode;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.functionStates:Ljava/util/Deque;
new jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState
dup
aload 1
invokespecial jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState.<init>:(Ljdk/nashorn/internal/ir/FunctionNode;)V
invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
1: iconst_1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
0 2 1 functionNode Ljdk/nashorn/internal/ir/FunctionNode;
MethodParameters:
Name Flags
functionNode 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=1, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.functionStates:Ljava/util/Deque;
invokeinterface java.util.Deque.pop:()Ljava/lang/Object;
pop
1: aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
0 2 1 functionNode Ljdk/nashorn/internal/ir/FunctionNode;
MethodParameters:
Name Flags
functionNode final
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: aload 1
instanceof jdk.nashorn.internal.ir.Statement
ifeq 2
1: aload 0
aload 1
checkcast jdk.nashorn.internal.ir.Statement
invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.appendStatement:(Ljdk/nashorn/internal/ir/Statement;)V
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/SplitIntoFunctions;
0 3 1 node Ljdk/nashorn/internal/ir/Node;
MethodParameters:
Name Flags
node final
public boolean enterSplitNode(jdk.nashorn.internal.ir.SplitNode);
descriptor: (Ljdk/nashorn/internal/ir/SplitNode;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.getCurrentFunctionState:()Ljdk/nashorn/internal/codegen/SplitIntoFunctions$FunctionState;
dup
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState.splitDepth:I
iconst_1
iadd
putfield jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState.splitDepth:I
1: aload 0
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.splitStates:Ljava/util/Deque;
new jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState
dup
aload 1
invokespecial jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState.<init>:(Ljdk/nashorn/internal/ir/SplitNode;)V
invokeinterface java.util.Deque.push:(Ljava/lang/Object;)V
2: iconst_1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
0 3 1 splitNode Ljdk/nashorn/internal/ir/SplitNode;
MethodParameters:
Name Flags
splitNode final
public jdk.nashorn.internal.ir.Node leaveSplitNode(jdk.nashorn.internal.ir.SplitNode);
descriptor: (Ljdk/nashorn/internal/ir/SplitNode;)Ljdk/nashorn/internal/ir/Node;
flags: (0x0001) ACC_PUBLIC
Code:
stack=22, locals=26, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.getCurrentFunctionState:()Ljdk/nashorn/internal/codegen/SplitIntoFunctions$FunctionState;
astore 2
start local 2 1: aload 1
invokevirtual jdk.nashorn.internal.ir.SplitNode.getName:()Ljava/lang/String;
astore 3
start local 3 2: aload 1
invokevirtual jdk.nashorn.internal.ir.SplitNode.getBody:()Ljdk/nashorn/internal/ir/Block;
astore 4
start local 4 3: aload 4
invokevirtual jdk.nashorn.internal.ir.Block.getFirstStatementLineNumber:()I
istore 5
start local 5 4: aload 4
invokevirtual jdk.nashorn.internal.ir.Block.getToken:()J
lstore 6
start local 6 5: aload 4
invokevirtual jdk.nashorn.internal.ir.Block.getFinish:()I
istore 8
start local 8 6: aload 2
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState.fn:Ljdk/nashorn/internal/ir/FunctionNode;
astore 9
start local 9 7: getstatic jdk.nashorn.internal.codegen.SplitIntoFunctions.$assertionsDisabled:Z
ifne 8
aload 9
aload 0
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.lc:Ljdk/nashorn/internal/ir/LexicalContext;
checkcast jdk.nashorn.internal.ir.BlockLexicalContext
invokevirtual jdk.nashorn.internal.ir.BlockLexicalContext.getCurrentFunction:()Ljdk/nashorn/internal/ir/FunctionNode;
if_acmpeq 8
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
8: StackMap locals: jdk.nashorn.internal.codegen.SplitIntoFunctions jdk.nashorn.internal.ir.SplitNode jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState java.lang.String jdk.nashorn.internal.ir.Block int long int jdk.nashorn.internal.ir.FunctionNode
StackMap stack:
aload 9
invokevirtual jdk.nashorn.internal.ir.FunctionNode.isProgram:()Z
istore 10
start local 10 9: getstatic jdk.nashorn.internal.parser.TokenType.FUNCTION:Ljdk/nashorn/internal/parser/TokenType;
aload 0
dup
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.nextFunctionId:I
dup_x1
iconst_1
isub
putfield jdk.nashorn.internal.codegen.SplitIntoFunctions.nextFunctionId:I
iconst_0
invokestatic jdk.nashorn.internal.parser.Token.toDesc:(Ljdk/nashorn/internal/parser/TokenType;II)J
lstore 11
start local 11 10: new jdk.nashorn.internal.ir.FunctionNode
dup
11: aload 9
invokevirtual jdk.nashorn.internal.ir.FunctionNode.getSource:()Ljdk/nashorn/internal/runtime/Source;
12: aload 4
invokevirtual jdk.nashorn.internal.ir.Block.getFirstStatementLineNumber:()I
13: lload 11
14: iload 8
15: lload 11
16: lconst_0
17: aload 0
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.namespace:Ljdk/nashorn/internal/codegen/Namespace;
18: aload 3
invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.createIdent:(Ljava/lang/String;)Ljdk/nashorn/internal/ir/IdentNode;
19: new java.lang.StringBuilder
dup
aload 9
invokevirtual jdk.nashorn.internal.ir.FunctionNode.getName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "$"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
20: iload 10
ifeq 21
invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.createReturnParamIdent:()Ljdk/nashorn/internal/ir/IdentNode;
invokestatic java.util.Collections.singletonList:(Ljava/lang/Object;)Ljava/util/List;
goto 22
StackMap locals: jdk.nashorn.internal.codegen.SplitIntoFunctions jdk.nashorn.internal.ir.SplitNode jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState java.lang.String jdk.nashorn.internal.ir.Block int long int jdk.nashorn.internal.ir.FunctionNode int long
StackMap stack: new 10 new 10 jdk.nashorn.internal.runtime.Source int long int long long jdk.nashorn.internal.codegen.Namespace jdk.nashorn.internal.ir.IdentNode java.lang.String
21: invokestatic java.util.Collections.emptyList:()Ljava/util/List;
22: StackMap locals: jdk.nashorn.internal.codegen.SplitIntoFunctions jdk.nashorn.internal.ir.SplitNode jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState java.lang.String jdk.nashorn.internal.ir.Block int long int jdk.nashorn.internal.ir.FunctionNode int long
StackMap stack: new 10 new 10 jdk.nashorn.internal.runtime.Source int long int long long jdk.nashorn.internal.codegen.Namespace jdk.nashorn.internal.ir.IdentNode java.lang.String java.util.List
aconst_null
23: getstatic jdk.nashorn.internal.ir.FunctionNode$Kind.NORMAL:Ljdk/nashorn/internal/ir/FunctionNode$Kind;
24: sipush 529
25: aload 4
26: aconst_null
27: aload 9
invokevirtual jdk.nashorn.internal.ir.FunctionNode.getModule:()Ljdk/nashorn/internal/ir/Module;
28: aload 9
invokevirtual jdk.nashorn.internal.ir.FunctionNode.getDebugFlags:()I
29: invokespecial jdk.nashorn.internal.ir.FunctionNode.<init>:(Ljdk/nashorn/internal/runtime/Source;IJIJJLjdk/nashorn/internal/codegen/Namespace;Ljdk/nashorn/internal/ir/IdentNode;Ljava/lang/String;Ljava/util/List;Ljava/util/Map;Ljdk/nashorn/internal/ir/FunctionNode$Kind;ILjdk/nashorn/internal/ir/Block;Ljava/lang/Object;Ljdk/nashorn/internal/ir/Module;I)V
30: aload 0
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.lc:Ljdk/nashorn/internal/ir/LexicalContext;
aload 1
invokevirtual jdk.nashorn.internal.ir.SplitNode.getCompileUnit:()Ljdk/nashorn/internal/codegen/CompileUnit;
invokevirtual jdk.nashorn.internal.ir.FunctionNode.setCompileUnit:(Ljdk/nashorn/internal/ir/LexicalContext;Ljdk/nashorn/internal/codegen/CompileUnit;)Ljdk/nashorn/internal/ir/FunctionNode;
31: astore 13
start local 13 32: getstatic jdk.nashorn.internal.codegen.SplitIntoFunctions.THIS_NAME:Ljava/lang/String;
invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.createIdent:(Ljava/lang/String;)Ljdk/nashorn/internal/ir/IdentNode;
astore 14
start local 14 33: new jdk.nashorn.internal.ir.CallNode
dup
iload 5
lload 6
iload 8
new jdk.nashorn.internal.ir.AccessNode
dup
lconst_0
iconst_0
aload 13
ldc "call"
invokespecial jdk.nashorn.internal.ir.AccessNode.<init>:(JILjdk/nashorn/internal/ir/Expression;Ljava/lang/String;)V
34: iload 10
ifeq 35
iconst_2
anewarray jdk.nashorn.internal.ir.Expression
dup
iconst_0
aload 14
aastore
dup
iconst_1
invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.createReturnIdent:()Ljdk/nashorn/internal/ir/IdentNode;
aastore
invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
goto 36
35: StackMap locals: jdk.nashorn.internal.codegen.SplitIntoFunctions jdk.nashorn.internal.ir.SplitNode jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState java.lang.String jdk.nashorn.internal.ir.Block int long int jdk.nashorn.internal.ir.FunctionNode int long jdk.nashorn.internal.ir.FunctionNode jdk.nashorn.internal.ir.IdentNode
StackMap stack: new 33 new 33 int long int jdk.nashorn.internal.ir.AccessNode
aload 14
invokestatic java.util.Collections.singletonList:(Ljava/lang/Object;)Ljava/util/List;
36: StackMap locals: jdk.nashorn.internal.codegen.SplitIntoFunctions jdk.nashorn.internal.ir.SplitNode jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState java.lang.String jdk.nashorn.internal.ir.Block int long int jdk.nashorn.internal.ir.FunctionNode int long jdk.nashorn.internal.ir.FunctionNode jdk.nashorn.internal.ir.IdentNode
StackMap stack: new 33 new 33 int long int jdk.nashorn.internal.ir.AccessNode java.util.List
iconst_0
37: invokespecial jdk.nashorn.internal.ir.CallNode.<init>:(IJILjdk/nashorn/internal/ir/Expression;Ljava/util/List;Z)V
astore 15
start local 15 38: aload 0
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.splitStates:Ljava/util/Deque;
invokeinterface java.util.Deque.pop:()Ljava/lang/Object;
checkcast jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState
astore 16
start local 16 39: aload 2
dup
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState.splitDepth:I
iconst_1
isub
putfield jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState.splitDepth:I
40: aload 16
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState.hasReturn:Z
istore 18
start local 18 41: iload 18
ifeq 45
aload 2
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState.splitDepth:I
ifle 45
42: aload 0
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.splitStates:Ljava/util/Deque;
invokeinterface java.util.Deque.peek:()Ljava/lang/Object;
checkcast jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState
astore 19
start local 19 43: aload 19
ifnull 45
44: aload 19
iconst_1
putfield jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState.hasReturn:Z
end local 19 45: StackMap locals: jdk.nashorn.internal.codegen.SplitIntoFunctions jdk.nashorn.internal.ir.SplitNode jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState java.lang.String jdk.nashorn.internal.ir.Block int long int jdk.nashorn.internal.ir.FunctionNode int long jdk.nashorn.internal.ir.FunctionNode jdk.nashorn.internal.ir.IdentNode jdk.nashorn.internal.ir.CallNode jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState top int
StackMap stack:
iload 18
ifne 46
iload 10
ifeq 48
46: StackMap locals:
StackMap stack:
new jdk.nashorn.internal.ir.BinaryNode
dup
lload 6
getstatic jdk.nashorn.internal.parser.TokenType.ASSIGN:Ljdk/nashorn/internal/parser/TokenType;
invokestatic jdk.nashorn.internal.parser.Token.recast:(JLjdk/nashorn/internal/parser/TokenType;)J
invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.createReturnIdent:()Ljdk/nashorn/internal/ir/IdentNode;
aload 15
invokespecial jdk.nashorn.internal.ir.BinaryNode.<init>:(JLjdk/nashorn/internal/ir/Expression;Ljdk/nashorn/internal/ir/Expression;)V
astore 17
start local 17 47: goto 49
end local 17 48: StackMap locals:
StackMap stack:
aload 15
astore 17
start local 17 49: StackMap locals: jdk.nashorn.internal.codegen.SplitIntoFunctions jdk.nashorn.internal.ir.SplitNode jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState java.lang.String jdk.nashorn.internal.ir.Block int long int jdk.nashorn.internal.ir.FunctionNode int long jdk.nashorn.internal.ir.FunctionNode jdk.nashorn.internal.ir.IdentNode jdk.nashorn.internal.ir.CallNode jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState jdk.nashorn.internal.ir.Expression int
StackMap stack:
aload 0
new jdk.nashorn.internal.ir.ExpressionStatement
dup
iload 5
lload 6
iload 8
aload 17
invokespecial jdk.nashorn.internal.ir.ExpressionStatement.<init>:(IJILjdk/nashorn/internal/ir/Expression;)V
invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.appendStatement:(Ljdk/nashorn/internal/ir/Statement;)V
50: aload 16
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState.jumpStatements:Ljava/util/List;
astore 20
start local 20 51: aload 20
invokeinterface java.util.List.size:()I
istore 21
start local 21 52: iload 21
ifle 65
53: new java.util.ArrayList
dup
iload 21
iload 18
ifeq 54
iconst_1
goto 55
StackMap locals: jdk.nashorn.internal.codegen.SplitIntoFunctions jdk.nashorn.internal.ir.SplitNode jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState java.lang.String jdk.nashorn.internal.ir.Block int long int jdk.nashorn.internal.ir.FunctionNode int long jdk.nashorn.internal.ir.FunctionNode jdk.nashorn.internal.ir.IdentNode jdk.nashorn.internal.ir.CallNode jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState jdk.nashorn.internal.ir.Expression int top java.util.List int
StackMap stack: new 53 new 53 int
54: iconst_0
StackMap locals: jdk.nashorn.internal.codegen.SplitIntoFunctions jdk.nashorn.internal.ir.SplitNode jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState java.lang.String jdk.nashorn.internal.ir.Block int long int jdk.nashorn.internal.ir.FunctionNode int long jdk.nashorn.internal.ir.FunctionNode jdk.nashorn.internal.ir.IdentNode jdk.nashorn.internal.ir.CallNode jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState jdk.nashorn.internal.ir.Expression int top java.util.List int
StackMap stack: new 53 new 53 int int
55: iadd
invokespecial java.util.ArrayList.<init>:(I)V
astore 22
start local 22 56: iload 18
ifeq 58
57: aload 22
iconst_0
invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.createReturnFromSplit:()Ljdk/nashorn/internal/ir/Block;
invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.addCase:(Ljava/util/List;ILjdk/nashorn/internal/ir/Block;)V
58: StackMap locals: java.util.List
StackMap stack:
iconst_2
istore 23
start local 23 59: aload 20
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 25
goto 62
StackMap locals: jdk.nashorn.internal.codegen.SplitIntoFunctions jdk.nashorn.internal.ir.SplitNode jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState java.lang.String jdk.nashorn.internal.ir.Block int long int jdk.nashorn.internal.ir.FunctionNode int long jdk.nashorn.internal.ir.FunctionNode jdk.nashorn.internal.ir.IdentNode jdk.nashorn.internal.ir.CallNode jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState jdk.nashorn.internal.ir.Expression int top java.util.List int java.util.List int top java.util.Iterator
StackMap stack:
60: aload 25
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast jdk.nashorn.internal.ir.JumpStatement
astore 24
start local 24 61: aload 22
iload 23
iinc 23 1
aload 0
aload 24
invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.enblockAndVisit:(Ljdk/nashorn/internal/ir/JumpStatement;)Ljdk/nashorn/internal/ir/Block;
invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.addCase:(Ljava/util/List;ILjdk/nashorn/internal/ir/Block;)V
end local 24 62: StackMap locals:
StackMap stack:
aload 25
invokeinterface java.util.Iterator.hasNext:()Z
ifne 60
63: new jdk.nashorn.internal.ir.SwitchNode
dup
iconst_m1
lload 6
iload 8
getstatic jdk.nashorn.internal.ir.GetSplitState.INSTANCE:Ljdk/nashorn/internal/ir/GetSplitState;
aload 22
aconst_null
invokespecial jdk.nashorn.internal.ir.SwitchNode.<init>:(IJILjdk/nashorn/internal/ir/Expression;Ljava/util/List;Ljdk/nashorn/internal/ir/CaseNode;)V
astore 19
end local 23 end local 22 start local 19 64: goto 66
end local 19 65: StackMap locals: jdk.nashorn.internal.codegen.SplitIntoFunctions jdk.nashorn.internal.ir.SplitNode jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState java.lang.String jdk.nashorn.internal.ir.Block int long int jdk.nashorn.internal.ir.FunctionNode int long jdk.nashorn.internal.ir.FunctionNode jdk.nashorn.internal.ir.IdentNode jdk.nashorn.internal.ir.CallNode jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState jdk.nashorn.internal.ir.Expression int top java.util.List int
StackMap stack:
aconst_null
astore 19
start local 19 66: StackMap locals: jdk.nashorn.internal.codegen.SplitIntoFunctions jdk.nashorn.internal.ir.SplitNode jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState java.lang.String jdk.nashorn.internal.ir.Block int long int jdk.nashorn.internal.ir.FunctionNode int long jdk.nashorn.internal.ir.FunctionNode jdk.nashorn.internal.ir.IdentNode jdk.nashorn.internal.ir.CallNode jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState jdk.nashorn.internal.ir.Expression int jdk.nashorn.internal.ir.Statement java.util.List int
StackMap stack:
aload 16
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState.hasBreak:Z
ifeq 70
67: iload 5
lload 6
iload 8
iconst_1
68: aload 0
new jdk.nashorn.internal.ir.BreakNode
dup
iconst_m1
lload 6
iload 8
aconst_null
invokespecial jdk.nashorn.internal.ir.BreakNode.<init>:(IJILjava/lang/String;)V
invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.enblockAndVisit:(Ljdk/nashorn/internal/ir/JumpStatement;)Ljdk/nashorn/internal/ir/Block;
aload 19
69: invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.makeIfStateEquals:(IJIILjdk/nashorn/internal/ir/Block;Ljdk/nashorn/internal/ir/Statement;)Ljdk/nashorn/internal/ir/IfNode;
astore 19
70: StackMap locals:
StackMap stack:
iload 18
ifeq 74
iload 21
ifne 74
71: iconst_m1
lload 6
iload 8
iconst_0
72: invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.createReturnFromSplit:()Ljdk/nashorn/internal/ir/Block;
aload 19
73: invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.makeIfStateEquals:(IJIILjdk/nashorn/internal/ir/Block;Ljdk/nashorn/internal/ir/Statement;)Ljdk/nashorn/internal/ir/IfNode;
astore 19
74: StackMap locals:
StackMap stack:
aload 19
ifnull 76
75: aload 0
aload 19
invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.appendStatement:(Ljdk/nashorn/internal/ir/Statement;)V
76: StackMap locals:
StackMap stack:
aload 1
areturn
end local 21 end local 20 end local 19 end local 18 end local 17 end local 16 end local 15 end local 14 end local 13 end local 11 end local 10 end local 9 end local 8 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 77 0 this Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
0 77 1 splitNode Ljdk/nashorn/internal/ir/SplitNode;
1 77 2 fnState Ljdk/nashorn/internal/codegen/SplitIntoFunctions$FunctionState;
2 77 3 name Ljava/lang/String;
3 77 4 body Ljdk/nashorn/internal/ir/Block;
4 77 5 firstLineNumber I
5 77 6 token J
6 77 8 finish I
7 77 9 originalFn Ljdk/nashorn/internal/ir/FunctionNode;
9 77 10 isProgram Z
10 77 11 newFnToken J
32 77 13 fn Ljdk/nashorn/internal/ir/FunctionNode;
33 77 14 thisIdent Ljdk/nashorn/internal/ir/IdentNode;
38 77 15 callNode Ljdk/nashorn/internal/ir/CallNode;
39 77 16 splitState Ljdk/nashorn/internal/codegen/SplitIntoFunctions$SplitState;
47 48 17 callWithReturn Ljdk/nashorn/internal/ir/Expression;
49 77 17 callWithReturn Ljdk/nashorn/internal/ir/Expression;
41 77 18 hasReturn Z
43 45 19 parentSplit Ljdk/nashorn/internal/codegen/SplitIntoFunctions$SplitState;
64 65 19 splitStateHandler Ljdk/nashorn/internal/ir/Statement;
66 77 19 splitStateHandler Ljdk/nashorn/internal/ir/Statement;
51 77 20 jumpStatements Ljava/util/List<Ljdk/nashorn/internal/ir/JumpStatement;>;
52 77 21 jumpCount I
56 64 22 cases Ljava/util/List<Ljdk/nashorn/internal/ir/CaseNode;>;
59 64 23 i I
61 62 24 jump Ljdk/nashorn/internal/ir/JumpStatement;
MethodParameters:
Name Flags
splitNode final
private static void addCase(java.util.List<jdk.nashorn.internal.ir.CaseNode>, int, jdk.nashorn.internal.ir.Block);
descriptor: (Ljava/util/List;ILjdk/nashorn/internal/ir/Block;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=8, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
new jdk.nashorn.internal.ir.CaseNode
dup
lconst_0
iconst_0
iload 1
invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.intLiteral:(I)Ljdk/nashorn/internal/ir/LiteralNode;
aload 2
invokespecial jdk.nashorn.internal.ir.CaseNode.<init>:(JILjdk/nashorn/internal/ir/Expression;Ljdk/nashorn/internal/ir/Block;)V
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 cases Ljava/util/List<Ljdk/nashorn/internal/ir/CaseNode;>;
0 2 1 i I
0 2 2 body Ljdk/nashorn/internal/ir/Block;
Signature: (Ljava/util/List<Ljdk/nashorn/internal/ir/CaseNode;>;ILjdk/nashorn/internal/ir/Block;)V
MethodParameters:
Name Flags
cases final
i final
body final
private static jdk.nashorn.internal.ir.LiteralNode<java.lang.Number> intLiteral(int);
descriptor: (I)Ljdk/nashorn/internal/ir/LiteralNode;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: lconst_0
iconst_0
iload 0
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokestatic jdk.nashorn.internal.ir.LiteralNode.newInstance:(JILjava/lang/Number;)Ljdk/nashorn/internal/ir/LiteralNode;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 i I
Signature: (I)Ljdk/nashorn/internal/ir/LiteralNode<Ljava/lang/Number;>;
MethodParameters:
Name Flags
i final
private static jdk.nashorn.internal.ir.Block createReturnFromSplit();
descriptor: ()Ljdk/nashorn/internal/ir/Block;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=9, locals=0, args_size=0
0: new jdk.nashorn.internal.ir.Block
dup
lconst_0
iconst_0
iconst_1
anewarray jdk.nashorn.internal.ir.Statement
dup
iconst_0
invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.createReturnReturn:()Ljdk/nashorn/internal/ir/ReturnNode;
aastore
invokespecial jdk.nashorn.internal.ir.Block.<init>:(JI[Ljdk/nashorn/internal/ir/Statement;)V
areturn
LocalVariableTable:
Start End Slot Name Signature
private static jdk.nashorn.internal.ir.ReturnNode createReturnReturn();
descriptor: ()Ljdk/nashorn/internal/ir/ReturnNode;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=7, locals=0, args_size=0
0: new jdk.nashorn.internal.ir.ReturnNode
dup
iconst_m1
lconst_0
iconst_0
invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.createReturnIdent:()Ljdk/nashorn/internal/ir/IdentNode;
invokespecial jdk.nashorn.internal.ir.ReturnNode.<init>:(IJILjdk/nashorn/internal/ir/Expression;)V
areturn
LocalVariableTable:
Start End Slot Name Signature
private static jdk.nashorn.internal.ir.IdentNode createReturnIdent();
descriptor: ()Ljdk/nashorn/internal/ir/IdentNode;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: getstatic jdk.nashorn.internal.codegen.SplitIntoFunctions.RETURN_NAME:Ljava/lang/String;
invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.createIdent:(Ljava/lang/String;)Ljdk/nashorn/internal/ir/IdentNode;
areturn
LocalVariableTable:
Start End Slot Name Signature
private static jdk.nashorn.internal.ir.IdentNode createReturnParamIdent();
descriptor: ()Ljdk/nashorn/internal/ir/IdentNode;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: getstatic jdk.nashorn.internal.codegen.SplitIntoFunctions.RETURN_PARAM_NAME:Ljava/lang/String;
invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.createIdent:(Ljava/lang/String;)Ljdk/nashorn/internal/ir/IdentNode;
areturn
LocalVariableTable:
Start End Slot Name Signature
private static jdk.nashorn.internal.ir.IdentNode createIdent(java.lang.String);
descriptor: (Ljava/lang/String;)Ljdk/nashorn/internal/ir/IdentNode;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=1, args_size=1
start local 0 0: new jdk.nashorn.internal.ir.IdentNode
dup
lconst_0
iconst_0
aload 0
invokespecial jdk.nashorn.internal.ir.IdentNode.<init>:(JILjava/lang/String;)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 name Ljava/lang/String;
MethodParameters:
Name Flags
name final
private jdk.nashorn.internal.ir.Block enblockAndVisit(jdk.nashorn.internal.ir.JumpStatement);
descriptor: (Ljdk/nashorn/internal/ir/JumpStatement;)Ljdk/nashorn/internal/ir/Block;
flags: (0x0002) ACC_PRIVATE
Code:
stack=9, locals=3, args_size=2
start local 0 start local 1 0: aload 0
iconst_1
putfield jdk.nashorn.internal.codegen.SplitIntoFunctions.artificialBlock:Z
1: new jdk.nashorn.internal.ir.Block
dup
lconst_0
iconst_0
iconst_1
anewarray jdk.nashorn.internal.ir.Statement
dup
iconst_0
aload 1
aastore
invokespecial jdk.nashorn.internal.ir.Block.<init>:(JI[Ljdk/nashorn/internal/ir/Statement;)V
aload 0
invokevirtual jdk.nashorn.internal.ir.Block.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
checkcast jdk.nashorn.internal.ir.Block
astore 2
start local 2 2: aload 0
iconst_0
putfield jdk.nashorn.internal.codegen.SplitIntoFunctions.artificialBlock:Z
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/SplitIntoFunctions;
0 4 1 jump Ljdk/nashorn/internal/ir/JumpStatement;
2 4 2 block Ljdk/nashorn/internal/ir/Block;
MethodParameters:
Name Flags
jump final
private static jdk.nashorn.internal.ir.IfNode makeIfStateEquals(int, long, int, int, jdk.nashorn.internal.ir.Block, jdk.nashorn.internal.ir.Statement);
descriptor: (IJIILjdk/nashorn/internal/ir/Block;Ljdk/nashorn/internal/ir/Statement;)Ljdk/nashorn/internal/ir/IfNode;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=17, locals=7, args_size=6
start local 0 start local 1 start local 3 start local 4 start local 5 start local 6 0: new jdk.nashorn.internal.ir.IfNode
dup
iload 0
lload 1
iload 3
1: new jdk.nashorn.internal.ir.BinaryNode
dup
lload 1
getstatic jdk.nashorn.internal.parser.TokenType.EQ_STRICT:Ljdk/nashorn/internal/parser/TokenType;
invokestatic jdk.nashorn.internal.parser.Token.recast:(JLjdk/nashorn/internal/parser/TokenType;)J
2: getstatic jdk.nashorn.internal.ir.GetSplitState.INSTANCE:Ljdk/nashorn/internal/ir/GetSplitState;
iload 4
invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.intLiteral:(I)Ljdk/nashorn/internal/ir/LiteralNode;
3: invokespecial jdk.nashorn.internal.ir.BinaryNode.<init>:(JLjdk/nashorn/internal/ir/Expression;Ljdk/nashorn/internal/ir/Expression;)V
4: aload 5
5: aload 6
ifnonnull 6
aconst_null
goto 7
StackMap locals: int long int int jdk.nashorn.internal.ir.Block jdk.nashorn.internal.ir.Statement
StackMap stack: new 0 new 0 int long int jdk.nashorn.internal.ir.BinaryNode jdk.nashorn.internal.ir.Block
6: new jdk.nashorn.internal.ir.Block
dup
lconst_0
iconst_0
iconst_1
anewarray jdk.nashorn.internal.ir.Statement
dup
iconst_0
aload 6
aastore
invokespecial jdk.nashorn.internal.ir.Block.<init>:(JI[Ljdk/nashorn/internal/ir/Statement;)V
7: StackMap locals: int long int int jdk.nashorn.internal.ir.Block jdk.nashorn.internal.ir.Statement
StackMap stack: new 0 new 0 int long int jdk.nashorn.internal.ir.BinaryNode jdk.nashorn.internal.ir.Block jdk.nashorn.internal.ir.Block
invokespecial jdk.nashorn.internal.ir.IfNode.<init>:(IJILjdk/nashorn/internal/ir/Expression;Ljdk/nashorn/internal/ir/Block;Ljdk/nashorn/internal/ir/Block;)V
areturn
end local 6 end local 5 end local 4 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 lineNumber I
0 8 1 token J
0 8 3 finish I
0 8 4 value I
0 8 5 pass Ljdk/nashorn/internal/ir/Block;
0 8 6 fail Ljdk/nashorn/internal/ir/Statement;
MethodParameters:
Name Flags
lineNumber final
token final
finish final
value final
pass final
fail final
public boolean enterVarNode(jdk.nashorn.internal.ir.VarNode);
descriptor: (Ljdk/nashorn/internal/ir/VarNode;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=12, locals=5, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.inSplitNode:()Z
ifeq 1
aload 1
invokevirtual jdk.nashorn.internal.ir.VarNode.isBlockScoped:()Z
ifeq 2
1: StackMap locals:
StackMap stack:
aload 0
aload 1
invokespecial jdk.nashorn.internal.ir.visitor.NodeVisitor.enterVarNode:(Ljdk/nashorn/internal/ir/VarNode;)Z
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 0
invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.getCurrentFunctionState:()Ljdk/nashorn/internal/codegen/SplitIntoFunctions$FunctionState;
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState.varStatements:Ljava/util/List;
aload 1
aconst_null
invokevirtual jdk.nashorn.internal.ir.VarNode.setInit:(Ljdk/nashorn/internal/ir/Expression;)Ljdk/nashorn/internal/ir/VarNode;
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
4: aload 2
ifnull 10
5: aload 1
invokevirtual jdk.nashorn.internal.ir.VarNode.getToken:()J
getstatic jdk.nashorn.internal.parser.TokenType.ASSIGN:Ljdk/nashorn/internal/parser/TokenType;
invokestatic jdk.nashorn.internal.parser.Token.recast:(JLjdk/nashorn/internal/parser/TokenType;)J
lstore 3
start local 3 6: new jdk.nashorn.internal.ir.ExpressionStatement
dup
aload 1
invokevirtual jdk.nashorn.internal.ir.VarNode.getLineNumber:()I
lload 3
aload 1
invokevirtual jdk.nashorn.internal.ir.VarNode.getFinish:()I
7: new jdk.nashorn.internal.ir.BinaryNode
dup
lload 3
aload 1
invokevirtual jdk.nashorn.internal.ir.VarNode.getName:()Ljdk/nashorn/internal/ir/IdentNode;
aload 1
invokevirtual jdk.nashorn.internal.ir.VarNode.getInit:()Ljdk/nashorn/internal/ir/Expression;
invokespecial jdk.nashorn.internal.ir.BinaryNode.<init>:(JLjdk/nashorn/internal/ir/Expression;Ljdk/nashorn/internal/ir/Expression;)V
8: invokespecial jdk.nashorn.internal.ir.ExpressionStatement.<init>:(IJILjdk/nashorn/internal/ir/Expression;)V
9: aload 0
invokevirtual jdk.nashorn.internal.ir.ExpressionStatement.accept:(Ljdk/nashorn/internal/ir/visitor/NodeVisitor;)Ljdk/nashorn/internal/ir/Node;
pop
end local 3 10: 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 11 0 this Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
0 11 1 varNode Ljdk/nashorn/internal/ir/VarNode;
3 11 2 init Ljdk/nashorn/internal/ir/Expression;
6 10 3 token J
MethodParameters:
Name Flags
varNode 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=13, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.artificialBlock:Z
ifne 10
1: aload 0
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.lc:Ljdk/nashorn/internal/ir/LexicalContext;
checkcast jdk.nashorn.internal.ir.BlockLexicalContext
invokevirtual jdk.nashorn.internal.ir.BlockLexicalContext.isFunctionBody:()Z
ifeq 4
2: aload 0
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.lc:Ljdk/nashorn/internal/ir/LexicalContext;
checkcast jdk.nashorn.internal.ir.BlockLexicalContext
aload 0
invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.getCurrentFunctionState:()Ljdk/nashorn/internal/codegen/SplitIntoFunctions$FunctionState;
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState.varStatements:Ljava/util/List;
invokevirtual jdk.nashorn.internal.ir.BlockLexicalContext.prependStatements:(Ljava/util/List;)V
3: goto 10
StackMap locals:
StackMap stack:
4: aload 0
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.lc:Ljdk/nashorn/internal/ir/LexicalContext;
checkcast jdk.nashorn.internal.ir.BlockLexicalContext
invokevirtual jdk.nashorn.internal.ir.BlockLexicalContext.isSplitBody:()Z
ifeq 10
5: aload 0
iconst_m1
iconst_m1
invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.appendSplitReturn:(II)V
6: aload 0
invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.getCurrentFunctionState:()Ljdk/nashorn/internal/codegen/SplitIntoFunctions$FunctionState;
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState.fn:Ljdk/nashorn/internal/ir/FunctionNode;
invokevirtual jdk.nashorn.internal.ir.FunctionNode.isProgram:()Z
ifeq 10
7: aload 0
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.lc:Ljdk/nashorn/internal/ir/LexicalContext;
checkcast jdk.nashorn.internal.ir.BlockLexicalContext
new jdk.nashorn.internal.ir.ExpressionStatement
dup
iconst_m1
lconst_0
iconst_0
8: new jdk.nashorn.internal.ir.BinaryNode
dup
getstatic jdk.nashorn.internal.parser.TokenType.ASSIGN:Ljdk/nashorn/internal/parser/TokenType;
iconst_0
iconst_0
invokestatic jdk.nashorn.internal.parser.Token.toDesc:(Ljdk/nashorn/internal/parser/TokenType;II)J
invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.createReturnIdent:()Ljdk/nashorn/internal/ir/IdentNode;
invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.createReturnParamIdent:()Ljdk/nashorn/internal/ir/IdentNode;
invokespecial jdk.nashorn.internal.ir.BinaryNode.<init>:(JLjdk/nashorn/internal/ir/Expression;Ljdk/nashorn/internal/ir/Expression;)V
invokespecial jdk.nashorn.internal.ir.ExpressionStatement.<init>:(IJILjdk/nashorn/internal/ir/Expression;)V
9: invokevirtual jdk.nashorn.internal.ir.BlockLexicalContext.prependStatement:(Ljdk/nashorn/internal/ir/Statement;)Ljdk/nashorn/internal/ir/Node;
pop
10: StackMap locals:
StackMap stack:
aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
0 11 1 block Ljdk/nashorn/internal/ir/Block;
MethodParameters:
Name Flags
block final
public jdk.nashorn.internal.ir.Node leaveBreakNode(jdk.nashorn.internal.ir.BreakNode);
descriptor: (Ljdk/nashorn/internal/ir/BreakNode;)Ljdk/nashorn/internal/ir/Node;
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.SplitIntoFunctions.leaveJumpNode:(Ljdk/nashorn/internal/ir/JumpStatement;)Ljdk/nashorn/internal/ir/JumpStatement;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
0 1 1 breakNode Ljdk/nashorn/internal/ir/BreakNode;
MethodParameters:
Name Flags
breakNode final
public jdk.nashorn.internal.ir.Node leaveContinueNode(jdk.nashorn.internal.ir.ContinueNode);
descriptor: (Ljdk/nashorn/internal/ir/ContinueNode;)Ljdk/nashorn/internal/ir/Node;
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.SplitIntoFunctions.leaveJumpNode:(Ljdk/nashorn/internal/ir/JumpStatement;)Ljdk/nashorn/internal/ir/JumpStatement;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
0 1 1 continueNode Ljdk/nashorn/internal/ir/ContinueNode;
MethodParameters:
Name Flags
continueNode final
public jdk.nashorn.internal.ir.Node leaveJumpToInlinedFinally(jdk.nashorn.internal.ir.JumpToInlinedFinally);
descriptor: (Ljdk/nashorn/internal/ir/JumpToInlinedFinally;)Ljdk/nashorn/internal/ir/Node;
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.SplitIntoFunctions.leaveJumpNode:(Ljdk/nashorn/internal/ir/JumpStatement;)Ljdk/nashorn/internal/ir/JumpStatement;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
0 1 1 jumpToInlinedFinally Ljdk/nashorn/internal/ir/JumpToInlinedFinally;
MethodParameters:
Name Flags
jumpToInlinedFinally final
private jdk.nashorn.internal.ir.JumpStatement leaveJumpNode(jdk.nashorn.internal.ir.JumpStatement);
descriptor: (Ljdk/nashorn/internal/ir/JumpStatement;)Ljdk/nashorn/internal/ir/JumpStatement;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.inSplitNode:()Z
ifeq 6
1: aload 0
invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.getCurrentSplitState:()Ljdk/nashorn/internal/codegen/SplitIntoFunctions$SplitState;
astore 2
start local 2 2: aload 2
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState.splitNode:Ljdk/nashorn/internal/ir/SplitNode;
astore 3
start local 3 3: aload 0
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.lc:Ljdk/nashorn/internal/ir/LexicalContext;
checkcast jdk.nashorn.internal.ir.BlockLexicalContext
aload 3
aload 1
aload 0
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.lc:Ljdk/nashorn/internal/ir/LexicalContext;
invokevirtual jdk.nashorn.internal.ir.JumpStatement.getTarget:(Ljdk/nashorn/internal/ir/LexicalContext;)Ljdk/nashorn/internal/ir/BreakableNode;
invokevirtual jdk.nashorn.internal.ir.BlockLexicalContext.isExternalTarget:(Ljdk/nashorn/internal/ir/SplitNode;Ljdk/nashorn/internal/ir/BreakableNode;)Z
ifeq 6
4: aload 0
aload 2
aload 1
invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState.getSplitStateIndex:(Ljdk/nashorn/internal/ir/JumpStatement;)I
aload 1
invokevirtual jdk.nashorn.internal.ir.JumpStatement.getLineNumber:()I
invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.appendSplitReturn:(II)V
5: aload 1
areturn
end local 3 end local 2 6: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.appendStatement:(Ljdk/nashorn/internal/ir/Statement;)V
7: aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
0 8 1 jump Ljdk/nashorn/internal/ir/JumpStatement;
2 6 2 splitState Ljdk/nashorn/internal/codegen/SplitIntoFunctions$SplitState;
3 6 3 splitNode Ljdk/nashorn/internal/ir/SplitNode;
MethodParameters:
Name Flags
jump final
private void appendSplitReturn(int, int);
descriptor: (II)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
new jdk.nashorn.internal.ir.SetSplitState
dup
iload 1
iload 2
invokespecial jdk.nashorn.internal.ir.SetSplitState.<init>:(II)V
invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.appendStatement:(Ljdk/nashorn/internal/ir/Statement;)V
1: aload 0
invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.getCurrentFunctionState:()Ljdk/nashorn/internal/codegen/SplitIntoFunctions$FunctionState;
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState.fn:Ljdk/nashorn/internal/ir/FunctionNode;
invokevirtual jdk.nashorn.internal.ir.FunctionNode.isProgram:()Z
ifeq 4
2: aload 0
invokestatic jdk.nashorn.internal.codegen.SplitIntoFunctions.createReturnReturn:()Ljdk/nashorn/internal/ir/ReturnNode;
invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.appendStatement:(Ljdk/nashorn/internal/ir/Statement;)V
3: goto 5
4: StackMap locals:
StackMap stack:
aload 0
getstatic jdk.nashorn.internal.ir.SplitReturn.INSTANCE:Ljdk/nashorn/internal/ir/SplitReturn;
invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.appendStatement:(Ljdk/nashorn/internal/ir/Statement;)V
5: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
0 6 1 splitState I
0 6 2 lineNumber I
MethodParameters:
Name Flags
splitState final
lineNumber final
public jdk.nashorn.internal.ir.Node leaveReturnNode(jdk.nashorn.internal.ir.ReturnNode);
descriptor: (Ljdk/nashorn/internal/ir/ReturnNode;)Ljdk/nashorn/internal/ir/Node;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.inSplitNode:()Z
ifeq 3
1: aload 0
new jdk.nashorn.internal.ir.SetSplitState
dup
iconst_0
aload 1
invokevirtual jdk.nashorn.internal.ir.ReturnNode.getLineNumber:()I
invokespecial jdk.nashorn.internal.ir.SetSplitState.<init>:(II)V
invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.appendStatement:(Ljdk/nashorn/internal/ir/Statement;)V
2: aload 0
invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.getCurrentSplitState:()Ljdk/nashorn/internal/codegen/SplitIntoFunctions$SplitState;
iconst_1
putfield jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState.hasReturn:Z
3: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.appendStatement:(Ljdk/nashorn/internal/ir/Statement;)V
4: aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
0 5 1 returnNode Ljdk/nashorn/internal/ir/ReturnNode;
MethodParameters:
Name Flags
returnNode final
private void appendStatement(jdk.nashorn.internal.ir.Statement);
descriptor: (Ljdk/nashorn/internal/ir/Statement;)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.SplitIntoFunctions.lc:Ljdk/nashorn/internal/ir/LexicalContext;
checkcast jdk.nashorn.internal.ir.BlockLexicalContext
aload 1
invokevirtual jdk.nashorn.internal.ir.BlockLexicalContext.appendStatement:(Ljdk/nashorn/internal/ir/Statement;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
0 2 1 statement Ljdk/nashorn/internal/ir/Statement;
MethodParameters:
Name Flags
statement final
private boolean inSplitNode();
descriptor: ()Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual jdk.nashorn.internal.codegen.SplitIntoFunctions.getCurrentFunctionState:()Ljdk/nashorn/internal/codegen/SplitIntoFunctions$FunctionState;
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState.splitDepth:I
ifle 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
private jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState getCurrentFunctionState();
descriptor: ()Ljdk/nashorn/internal/codegen/SplitIntoFunctions$FunctionState;
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.functionStates:Ljava/util/Deque;
invokeinterface java.util.Deque.peek:()Ljava/lang/Object;
checkcast jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
private jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState getCurrentSplitState();
descriptor: ()Ljdk/nashorn/internal/codegen/SplitIntoFunctions$SplitState;
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield jdk.nashorn.internal.codegen.SplitIntoFunctions.splitStates:Ljava/util/Deque;
invokeinterface java.util.Deque.peek:()Ljava/lang/Object;
checkcast jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljdk/nashorn/internal/codegen/SplitIntoFunctions;
}
Signature: Ljdk/nashorn/internal/ir/visitor/NodeVisitor<Ljdk/nashorn/internal/ir/BlockLexicalContext;>;
SourceFile: "SplitIntoFunctions.java"
NestMembers:
jdk.nashorn.internal.codegen.SplitIntoFunctions$1 jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState
InnerClasses:
jdk.nashorn.internal.codegen.SplitIntoFunctions$1
private FunctionState = jdk.nashorn.internal.codegen.SplitIntoFunctions$FunctionState of jdk.nashorn.internal.codegen.SplitIntoFunctions
private SplitState = jdk.nashorn.internal.codegen.SplitIntoFunctions$SplitState of jdk.nashorn.internal.codegen.SplitIntoFunctions
public final Kind = jdk.nashorn.internal.ir.FunctionNode$Kind of jdk.nashorn.internal.ir.FunctionNode