public final class com.oracle.truffle.sl.nodes.controlflow.SLBlockNode extends com.oracle.truffle.sl.nodes.SLStatementNode implements com.oracle.truffle.api.nodes.BlockNode$ElementExecutor<com.oracle.truffle.sl.nodes.SLStatementNode>
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: com.oracle.truffle.sl.nodes.controlflow.SLBlockNode
super_class: com.oracle.truffle.sl.nodes.SLStatementNode
{
private com.oracle.truffle.api.nodes.BlockNode<com.oracle.truffle.sl.nodes.SLStatementNode> block;
descriptor: Lcom/oracle/truffle/api/nodes/BlockNode;
flags: (0x0002) ACC_PRIVATE
Signature: Lcom/oracle/truffle/api/nodes/BlockNode<Lcom/oracle/truffle/sl/nodes/SLStatementNode;>;
RuntimeVisibleAnnotations:
com.oracle.truffle.api.nodes.Node$Child()
private com.oracle.truffle.sl.nodes.local.SLWriteLocalVariableNode[] writeNodesCache;
descriptor: [Lcom/oracle/truffle/sl/nodes/local/SLWriteLocalVariableNode;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.CompilerDirectives$CompilationFinal(dimensions = 1)
private int parentBlockIndex;
descriptor: I
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.CompilerDirectives$CompilationFinal()
public void <init>(com.oracle.truffle.sl.nodes.SLStatementNode[]);
descriptor: ([Lcom/oracle/truffle/sl/nodes/SLStatementNode;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial com.oracle.truffle.sl.nodes.SLStatementNode.<init>:()V
1: aload 0
iconst_m1
putfield com.oracle.truffle.sl.nodes.controlflow.SLBlockNode.parentBlockIndex:I
2: aload 0
aload 1
arraylength
ifle 3
aload 1
aload 0
invokestatic com.oracle.truffle.api.nodes.BlockNode.create:([Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/nodes/BlockNode$ElementExecutor;)Lcom/oracle/truffle/api/nodes/BlockNode;
goto 4
StackMap locals: com.oracle.truffle.sl.nodes.controlflow.SLBlockNode com.oracle.truffle.sl.nodes.SLStatementNode[]
StackMap stack: com.oracle.truffle.sl.nodes.controlflow.SLBlockNode
3: aconst_null
StackMap locals: com.oracle.truffle.sl.nodes.controlflow.SLBlockNode com.oracle.truffle.sl.nodes.SLStatementNode[]
StackMap stack: com.oracle.truffle.sl.nodes.controlflow.SLBlockNode com.oracle.truffle.api.nodes.BlockNode
4: putfield com.oracle.truffle.sl.nodes.controlflow.SLBlockNode.block:Lcom/oracle/truffle/api/nodes/BlockNode;
5: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/oracle/truffle/sl/nodes/controlflow/SLBlockNode;
0 6 1 bodyNodes [Lcom/oracle/truffle/sl/nodes/SLStatementNode;
MethodParameters:
Name Flags
bodyNodes
public void executeVoid(com.oracle.truffle.api.frame.VirtualFrame);
descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.oracle.truffle.sl.nodes.controlflow.SLBlockNode.block:Lcom/oracle/truffle/api/nodes/BlockNode;
ifnull 2
1: aload 0
getfield com.oracle.truffle.sl.nodes.controlflow.SLBlockNode.block:Lcom/oracle/truffle/api/nodes/BlockNode;
aload 1
iconst_0
invokevirtual com.oracle.truffle.api.nodes.BlockNode.executeVoid:(Lcom/oracle/truffle/api/frame/VirtualFrame;I)V
2: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/oracle/truffle/sl/nodes/controlflow/SLBlockNode;
0 3 1 frame Lcom/oracle/truffle/api/frame/VirtualFrame;
MethodParameters:
Name Flags
frame
public java.util.List<com.oracle.truffle.sl.nodes.SLStatementNode> getStatements();
descriptor: ()Ljava/util/List;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.oracle.truffle.sl.nodes.controlflow.SLBlockNode.block:Lcom/oracle/truffle/api/nodes/BlockNode;
ifnonnull 2
1: invokestatic java.util.Collections.emptyList:()Ljava/util/List;
areturn
2: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.sl.nodes.controlflow.SLBlockNode.block:Lcom/oracle/truffle/api/nodes/BlockNode;
invokevirtual com.oracle.truffle.api.nodes.BlockNode.getElements:()[Lcom/oracle/truffle/api/nodes/Node;
checkcast com.oracle.truffle.sl.nodes.SLStatementNode[]
invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
invokestatic java.util.Collections.unmodifiableList:(Ljava/util/List;)Ljava/util/List;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/oracle/truffle/sl/nodes/controlflow/SLBlockNode;
Signature: ()Ljava/util/List<Lcom/oracle/truffle/sl/nodes/SLStatementNode;>;
public void executeVoid(com.oracle.truffle.api.frame.VirtualFrame, com.oracle.truffle.sl.nodes.SLStatementNode, int, int);
descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;Lcom/oracle/truffle/sl/nodes/SLStatementNode;II)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 2
aload 1
invokevirtual com.oracle.truffle.sl.nodes.SLStatementNode.executeVoid:(Lcom/oracle/truffle/api/frame/VirtualFrame;)V
1: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/sl/nodes/controlflow/SLBlockNode;
0 2 1 frame Lcom/oracle/truffle/api/frame/VirtualFrame;
0 2 2 node Lcom/oracle/truffle/sl/nodes/SLStatementNode;
0 2 3 index I
0 2 4 argument I
MethodParameters:
Name Flags
frame
node
index
argument
public com.oracle.truffle.sl.nodes.local.SLWriteLocalVariableNode[] getDeclaredLocalVariables();
descriptor: ()[Lcom/oracle/truffle/sl/nodes/local/SLWriteLocalVariableNode;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield com.oracle.truffle.sl.nodes.controlflow.SLBlockNode.writeNodesCache:[Lcom/oracle/truffle/sl/nodes/local/SLWriteLocalVariableNode;
astore 1
start local 1 1: aload 1
ifnonnull 4
2: invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
3: aload 0
aload 0
invokevirtual com.oracle.truffle.sl.nodes.controlflow.SLBlockNode.findDeclaredLocalVariables:()[Lcom/oracle/truffle/sl/nodes/local/SLWriteLocalVariableNode;
dup
astore 1
putfield com.oracle.truffle.sl.nodes.controlflow.SLBlockNode.writeNodesCache:[Lcom/oracle/truffle/sl/nodes/local/SLWriteLocalVariableNode;
4: StackMap locals: com.oracle.truffle.sl.nodes.local.SLWriteLocalVariableNode[]
StackMap stack:
aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/oracle/truffle/sl/nodes/controlflow/SLBlockNode;
1 5 1 writeNodes [Lcom/oracle/truffle/sl/nodes/local/SLWriteLocalVariableNode;
public int getParentBlockIndex();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.oracle.truffle.sl.nodes.controlflow.SLBlockNode.parentBlockIndex:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/sl/nodes/controlflow/SLBlockNode;
private com.oracle.truffle.sl.nodes.local.SLWriteLocalVariableNode[] findDeclaredLocalVariables();
descriptor: ()[Lcom/oracle/truffle/sl/nodes/local/SLWriteLocalVariableNode;
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=10, args_size=1
start local 0 0: aload 0
getfield com.oracle.truffle.sl.nodes.controlflow.SLBlockNode.block:Lcom/oracle/truffle/api/nodes/BlockNode;
ifnonnull 2
1: iconst_0
anewarray com.oracle.truffle.sl.nodes.local.SLWriteLocalVariableNode
areturn
2: StackMap locals:
StackMap stack:
new java.util.ArrayList
dup
iconst_4
invokespecial java.util.ArrayList.<init>:(I)V
astore 1
start local 1 3: iconst_1
newarray 10
astore 2
start local 2 4: aload 0
getfield com.oracle.truffle.sl.nodes.controlflow.SLBlockNode.block:Lcom/oracle/truffle/api/nodes/BlockNode;
new com.oracle.truffle.sl.nodes.controlflow.SLBlockNode$1
dup
aload 0
aload 2
aload 1
invokespecial com.oracle.truffle.sl.nodes.controlflow.SLBlockNode$1.<init>:(Lcom/oracle/truffle/sl/nodes/controlflow/SLBlockNode;[ILjava/util/List;)V
invokestatic com.oracle.truffle.api.nodes.NodeUtil.forEachChild:(Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/nodes/NodeVisitor;)Z
pop
5: aload 0
invokevirtual com.oracle.truffle.sl.nodes.controlflow.SLBlockNode.findBlock:()Lcom/oracle/truffle/api/nodes/Node;
astore 3
start local 3 6: aconst_null
astore 4
start local 4 7: aload 3
instanceof com.oracle.truffle.sl.nodes.controlflow.SLBlockNode
ifeq 9
8: aload 3
checkcast com.oracle.truffle.sl.nodes.controlflow.SLBlockNode
invokevirtual com.oracle.truffle.sl.nodes.controlflow.SLBlockNode.getDeclaredLocalVariables:()[Lcom/oracle/truffle/sl/nodes/local/SLWriteLocalVariableNode;
astore 4
9: StackMap locals: com.oracle.truffle.sl.nodes.controlflow.SLBlockNode java.util.List int[] com.oracle.truffle.api.nodes.Node com.oracle.truffle.sl.nodes.local.SLWriteLocalVariableNode[]
StackMap stack:
aload 1
aload 1
invokeinterface java.util.List.size:()I
anewarray com.oracle.truffle.sl.nodes.local.SLWriteLocalVariableNode
invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
checkcast com.oracle.truffle.sl.nodes.local.SLWriteLocalVariableNode[]
astore 5
start local 5 10: aload 0
aload 5
arraylength
putfield com.oracle.truffle.sl.nodes.controlflow.SLBlockNode.parentBlockIndex:I
11: aload 4
ifnull 12
aload 4
arraylength
ifne 13
12: StackMap locals: com.oracle.truffle.sl.nodes.local.SLWriteLocalVariableNode[]
StackMap stack:
aload 5
areturn
13: StackMap locals:
StackMap stack:
aload 3
checkcast com.oracle.truffle.sl.nodes.controlflow.SLBlockNode
invokevirtual com.oracle.truffle.sl.nodes.controlflow.SLBlockNode.getParentBlockIndex:()I
istore 6
start local 6 14: aload 0
invokevirtual com.oracle.truffle.sl.nodes.controlflow.SLBlockNode.getVisibleVariablesIndexOnEnter:()I
istore 7
start local 7 15: aload 5
arraylength
iload 7
iadd
aload 4
arraylength
iadd
iload 6
isub
istore 8
start local 8 16: aload 5
iload 8
invokestatic java.util.Arrays.copyOf:([Ljava/lang/Object;I)[Ljava/lang/Object;
checkcast com.oracle.truffle.sl.nodes.local.SLWriteLocalVariableNode[]
astore 9
start local 9 17: aload 4
iconst_0
aload 9
aload 5
arraylength
iload 7
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
18: aload 4
iload 6
aload 9
aload 5
arraylength
iload 7
iadd
aload 4
arraylength
iload 6
isub
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
19: aload 9
areturn
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 20 0 this Lcom/oracle/truffle/sl/nodes/controlflow/SLBlockNode;
3 20 1 writeNodes Ljava/util/List<Lcom/oracle/truffle/sl/nodes/local/SLWriteLocalVariableNode;>;
4 20 2 varsIndex [I
6 20 3 parentBlock Lcom/oracle/truffle/api/nodes/Node;
7 20 4 parentVariables [Lcom/oracle/truffle/sl/nodes/local/SLWriteLocalVariableNode;
10 20 5 variables [Lcom/oracle/truffle/sl/nodes/local/SLWriteLocalVariableNode;
14 20 6 parentVariablesIndex I
15 20 7 visibleVarsIndex I
16 20 8 allVarsLength I
17 20 9 allVariables [Lcom/oracle/truffle/sl/nodes/local/SLWriteLocalVariableNode;
public void executeVoid(com.oracle.truffle.api.frame.VirtualFrame, com.oracle.truffle.api.nodes.Node, int, int);
descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;Lcom/oracle/truffle/api/nodes/Node;II)V
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=5, locals=5, args_size=5
0: aload 0
aload 1
aload 2
checkcast com.oracle.truffle.sl.nodes.SLStatementNode
iload 3
iload 4
invokevirtual com.oracle.truffle.sl.nodes.controlflow.SLBlockNode.executeVoid:(Lcom/oracle/truffle/api/frame/VirtualFrame;Lcom/oracle/truffle/sl/nodes/SLStatementNode;II)V
return
LocalVariableTable:
Start End Slot Name Signature
}
Signature: Lcom/oracle/truffle/sl/nodes/SLStatementNode;Lcom/oracle/truffle/api/nodes/BlockNode$ElementExecutor<Lcom/oracle/truffle/sl/nodes/SLStatementNode;>;
SourceFile: "SLBlockNode.java"
NestMembers:
com.oracle.truffle.sl.nodes.controlflow.SLBlockNode$1
InnerClasses:
public abstract CompilationFinal = com.oracle.truffle.api.CompilerDirectives$CompilationFinal of com.oracle.truffle.api.CompilerDirectives
public abstract ElementExecutor = com.oracle.truffle.api.nodes.BlockNode$ElementExecutor of com.oracle.truffle.api.nodes.BlockNode
public abstract Child = com.oracle.truffle.api.nodes.Node$Child of com.oracle.truffle.api.nodes.Node
com.oracle.truffle.sl.nodes.controlflow.SLBlockNode$1
RuntimeVisibleAnnotations:
com.oracle.truffle.api.nodes.NodeInfo(shortName = "block", description = "The node implementing a source code block")