class com.oracle.truffle.api.test.ThreadSafetyTest$RecursiveCallNode extends com.oracle.truffle.api.test.ThreadSafetyTest$ValueNode
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: com.oracle.truffle.api.test.ThreadSafetyTest$RecursiveCallNode
super_class: com.oracle.truffle.api.test.ThreadSafetyTest$ValueNode
{
com.oracle.truffle.api.nodes.DirectCallNode callNode;
descriptor: Lcom/oracle/truffle/api/nodes/DirectCallNode;
flags: (0x0000)
RuntimeVisibleAnnotations:
com.oracle.truffle.api.nodes.Node$Child()
private com.oracle.truffle.api.test.ThreadSafetyTest$ValueNode valueNode;
descriptor: Lcom/oracle/truffle/api/test/ThreadSafetyTest$ValueNode;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.nodes.Node$Child()
void <init>(com.oracle.truffle.api.test.ThreadSafetyTest$ValueNode);
descriptor: (Lcom/oracle/truffle/api/test/ThreadSafetyTest$ValueNode;)V
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 // com.oracle.truffle.api.test.ThreadSafetyTest$RecursiveCallNode this
start local 1 // com.oracle.truffle.api.test.ThreadSafetyTest$ValueNode value
0: .line 196
aload 0 /* this */
invokespecial com.oracle.truffle.api.test.ThreadSafetyTest$ValueNode.<init>:()V
1: .line 197
aload 0 /* this */
aload 1 /* value */
putfield com.oracle.truffle.api.test.ThreadSafetyTest$RecursiveCallNode.valueNode:Lcom/oracle/truffle/api/test/ThreadSafetyTest$ValueNode;
2: .line 198
return
end local 1 // com.oracle.truffle.api.test.ThreadSafetyTest$ValueNode value
end local 0 // com.oracle.truffle.api.test.ThreadSafetyTest$RecursiveCallNode this
LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/oracle/truffle/api/test/ThreadSafetyTest$RecursiveCallNode;
0 3 1 value Lcom/oracle/truffle/api/test/ThreadSafetyTest$ValueNode;
MethodParameters:
Name Flags
value
int execute(com.oracle.truffle.api.frame.VirtualFrame);
descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;)I
flags: (0x0000)
Code:
stack=6, locals=3, args_size=2
start local 0 // com.oracle.truffle.api.test.ThreadSafetyTest$RecursiveCallNode this
start local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
0: .line 202
aload 1 /* frame */
invokeinterface com.oracle.truffle.api.frame.VirtualFrame.getArguments:()[Ljava/lang/Object;
iconst_0
aaload
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
istore 2 /* arg */
start local 2 // int arg
1: .line 203
iload 2 /* arg */
ifle 3
2: .line 204
aload 0 /* this */
getfield com.oracle.truffle.api.test.ThreadSafetyTest$RecursiveCallNode.callNode:Lcom/oracle/truffle/api/nodes/DirectCallNode;
iconst_1
anewarray java.lang.Object
dup
iconst_0
iload 2 /* arg */
iconst_1
isub
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
invokevirtual com.oracle.truffle.api.nodes.DirectCallNode.call:([Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
ireturn
3: .line 206
StackMap locals: int
StackMap stack:
aload 0 /* this */
getfield com.oracle.truffle.api.test.ThreadSafetyTest$RecursiveCallNode.valueNode:Lcom/oracle/truffle/api/test/ThreadSafetyTest$ValueNode;
aload 1 /* frame */
invokevirtual com.oracle.truffle.api.test.ThreadSafetyTest$ValueNode.execute:(Lcom/oracle/truffle/api/frame/VirtualFrame;)I
ireturn
end local 2 // int arg
end local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
end local 0 // com.oracle.truffle.api.test.ThreadSafetyTest$RecursiveCallNode this
LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/oracle/truffle/api/test/ThreadSafetyTest$RecursiveCallNode;
0 4 1 frame Lcom/oracle/truffle/api/frame/VirtualFrame;
1 4 2 arg I
MethodParameters:
Name Flags
frame
void setCallNode(com.oracle.truffle.api.nodes.DirectCallNode);
descriptor: (Lcom/oracle/truffle/api/nodes/DirectCallNode;)V
flags: (0x0000)
Code:
stack=3, locals=2, args_size=2
start local 0 // com.oracle.truffle.api.test.ThreadSafetyTest$RecursiveCallNode this
start local 1 // com.oracle.truffle.api.nodes.DirectCallNode callNode
0: .line 211
aload 0 /* this */
aload 0 /* this */
aload 1 /* callNode */
invokevirtual com.oracle.truffle.api.test.ThreadSafetyTest$RecursiveCallNode.insert:(Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/api/nodes/Node;
checkcast com.oracle.truffle.api.nodes.DirectCallNode
putfield com.oracle.truffle.api.test.ThreadSafetyTest$RecursiveCallNode.callNode:Lcom/oracle/truffle/api/nodes/DirectCallNode;
1: .line 212
return
end local 1 // com.oracle.truffle.api.nodes.DirectCallNode callNode
end local 0 // com.oracle.truffle.api.test.ThreadSafetyTest$RecursiveCallNode this
LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/api/test/ThreadSafetyTest$RecursiveCallNode;
0 2 1 callNode Lcom/oracle/truffle/api/nodes/DirectCallNode;
MethodParameters:
Name Flags
callNode
}
SourceFile: "ThreadSafetyTest.java"
NestHost: com.oracle.truffle.api.test.ThreadSafetyTest
InnerClasses:
public abstract Child = com.oracle.truffle.api.nodes.Node$Child of com.oracle.truffle.api.nodes.Node
RecursiveCallNode = com.oracle.truffle.api.test.ThreadSafetyTest$RecursiveCallNode of com.oracle.truffle.api.test.ThreadSafetyTest
abstract ValueNode = com.oracle.truffle.api.test.ThreadSafetyTest$ValueNode of com.oracle.truffle.api.test.ThreadSafetyTest