public abstract class com.oracle.graal.python.nodes.PClosureRootNode extends com.oracle.graal.python.nodes.PRootNodeWithFileName
minor version: 0
major version: 59
flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
this_class: com.oracle.graal.python.nodes.PClosureRootNode
super_class: com.oracle.graal.python.nodes.PRootNodeWithFileName
{
private final com.oracle.truffle.api.Assumption singleContextAssumption;
descriptor: Lcom/oracle/truffle/api/Assumption;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final boolean annotationsAvailable;
descriptor: Z
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
protected final com.oracle.truffle.api.frame.FrameSlot[] freeVarSlots;
descriptor: [Lcom/oracle/truffle/api/frame/FrameSlot;
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
RuntimeVisibleAnnotations:
com.oracle.truffle.api.CompilerDirectives$CompilationFinal(dimensions = 1)
protected com.oracle.graal.python.builtins.objects.cell.PCell[] closure;
descriptor: [Lcom/oracle/graal/python/builtins/objects/cell/PCell;
flags: (0x0004) ACC_PROTECTED
RuntimeVisibleAnnotations:
com.oracle.truffle.api.CompilerDirectives$CompilationFinal(dimensions = 1)
private final int length;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
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=1, locals=0, args_size=0
0: ldc Lcom/oracle/graal/python/nodes/PClosureRootNode;
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 com.oracle.graal.python.nodes.PClosureRootNode.$assertionsDisabled:Z
return
LocalVariableTable:
Start End Slot Name Signature
protected void <init>(com.oracle.graal.python.PythonLanguage, com.oracle.truffle.api.frame.FrameDescriptor, com.oracle.truffle.api.frame.FrameSlot[], boolean);
descriptor: (Lcom/oracle/graal/python/PythonLanguage;Lcom/oracle/truffle/api/frame/FrameDescriptor;[Lcom/oracle/truffle/api/frame/FrameSlot;Z)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
aload 1
aload 2
invokespecial com.oracle.graal.python.nodes.PRootNodeWithFileName.<init>:(Lcom/oracle/truffle/api/TruffleLanguage;Lcom/oracle/truffle/api/frame/FrameDescriptor;)V
1: aload 0
aload 1
getfield com.oracle.graal.python.PythonLanguage.singleContextAssumption:Lcom/oracle/truffle/api/Assumption;
putfield com.oracle.graal.python.nodes.PClosureRootNode.singleContextAssumption:Lcom/oracle/truffle/api/Assumption;
2: aload 0
aload 3
putfield com.oracle.graal.python.nodes.PClosureRootNode.freeVarSlots:[Lcom/oracle/truffle/api/frame/FrameSlot;
3: aload 0
aload 3
ifnull 4
aload 3
arraylength
goto 5
StackMap locals: com.oracle.graal.python.nodes.PClosureRootNode com.oracle.graal.python.PythonLanguage com.oracle.truffle.api.frame.FrameDescriptor com.oracle.truffle.api.frame.FrameSlot[] int
StackMap stack: com.oracle.graal.python.nodes.PClosureRootNode
4: iconst_0
StackMap locals: com.oracle.graal.python.nodes.PClosureRootNode com.oracle.graal.python.PythonLanguage com.oracle.truffle.api.frame.FrameDescriptor com.oracle.truffle.api.frame.FrameSlot[] int
StackMap stack: com.oracle.graal.python.nodes.PClosureRootNode int
5: putfield com.oracle.graal.python.nodes.PClosureRootNode.length:I
6: aload 0
iload 4
putfield com.oracle.graal.python.nodes.PClosureRootNode.annotationsAvailable:Z
7: return
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 Lcom/oracle/graal/python/nodes/PClosureRootNode;
0 8 1 language Lcom/oracle/graal/python/PythonLanguage;
0 8 2 frameDescriptor Lcom/oracle/truffle/api/frame/FrameDescriptor;
0 8 3 freeVarSlots [Lcom/oracle/truffle/api/frame/FrameSlot;
0 8 4 hasAnnotations Z
MethodParameters:
Name Flags
language
frameDescriptor
freeVarSlots
hasAnnotations
protected void addClosureCellsToLocals(com.oracle.truffle.api.frame.Frame);
descriptor: (Lcom/oracle/truffle/api/frame/Frame;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 1
invokestatic com.oracle.graal.python.builtins.objects.function.PArguments.getClosure:(Lcom/oracle/truffle/api/frame/Frame;)[Lcom/oracle/graal/python/builtins/objects/cell/PCell;
astore 2
start local 2 1: aload 2
ifnull 22
2: aload 0
getfield com.oracle.graal.python.nodes.PClosureRootNode.singleContextAssumption:Lcom/oracle/truffle/api/Assumption;
invokeinterface com.oracle.truffle.api.Assumption.isValid:()Z
ifeq 6
aload 0
getfield com.oracle.graal.python.nodes.PClosureRootNode.closure:[Lcom/oracle/graal/python/builtins/objects/cell/PCell;
ifnonnull 6
3: invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
4: aload 0
aload 2
putfield com.oracle.graal.python.nodes.PClosureRootNode.closure:[Lcom/oracle/graal/python/builtins/objects/cell/PCell;
5: goto 10
StackMap locals: com.oracle.graal.python.builtins.objects.cell.PCell[]
StackMap stack:
6: aload 0
getfield com.oracle.graal.python.nodes.PClosureRootNode.closure:[Lcom/oracle/graal/python/builtins/objects/cell/PCell;
getstatic com.oracle.graal.python.util.PythonUtils.NO_CLOSURE:[Lcom/oracle/graal/python/builtins/objects/cell/PCell;
if_acmpeq 10
aload 0
getfield com.oracle.graal.python.nodes.PClosureRootNode.singleContextAssumption:Lcom/oracle/truffle/api/Assumption;
invokeinterface com.oracle.truffle.api.Assumption.isValid:()Z
ifne 7
aload 0
getfield com.oracle.graal.python.nodes.PClosureRootNode.closure:[Lcom/oracle/graal/python/builtins/objects/cell/PCell;
ifnonnull 8
StackMap locals:
StackMap stack:
7: aload 0
getfield com.oracle.graal.python.nodes.PClosureRootNode.closure:[Lcom/oracle/graal/python/builtins/objects/cell/PCell;
aload 2
if_acmpeq 10
8: StackMap locals:
StackMap stack:
invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
9: aload 0
getstatic com.oracle.graal.python.util.PythonUtils.NO_CLOSURE:[Lcom/oracle/graal/python/builtins/objects/cell/PCell;
putfield com.oracle.graal.python.nodes.PClosureRootNode.closure:[Lcom/oracle/graal/python/builtins/objects/cell/PCell;
10: StackMap locals:
StackMap stack:
getstatic com.oracle.graal.python.nodes.PClosureRootNode.$assertionsDisabled:Z
ifne 11
aload 0
getfield com.oracle.graal.python.nodes.PClosureRootNode.freeVarSlots:[Lcom/oracle/truffle/api/frame/FrameSlot;
ifnonnull 11
new java.lang.AssertionError
dup
ldc "closure root node: the free var slots cannot be null when the closure is not null"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
11: StackMap locals:
StackMap stack:
getstatic com.oracle.graal.python.nodes.PClosureRootNode.$assertionsDisabled:Z
ifne 12
aload 2
arraylength
aload 0
getfield com.oracle.graal.python.nodes.PClosureRootNode.freeVarSlots:[Lcom/oracle/truffle/api/frame/FrameSlot;
arraylength
if_icmpeq 12
new java.lang.AssertionError
dup
ldc "closure root node: the closure must have the same length as the free var slots array"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
12: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.graal.python.nodes.PClosureRootNode.closure:[Lcom/oracle/graal/python/builtins/objects/cell/PCell;
ifnull 18
aload 0
getfield com.oracle.graal.python.nodes.PClosureRootNode.closure:[Lcom/oracle/graal/python/builtins/objects/cell/PCell;
getstatic com.oracle.graal.python.util.PythonUtils.NO_CLOSURE:[Lcom/oracle/graal/python/builtins/objects/cell/PCell;
if_acmpeq 18
13: aload 0
getfield com.oracle.graal.python.nodes.PClosureRootNode.freeVarSlots:[Lcom/oracle/truffle/api/frame/FrameSlot;
arraylength
bipush 32
if_icmpge 16
14: aload 0
aload 1
aload 0
getfield com.oracle.graal.python.nodes.PClosureRootNode.closure:[Lcom/oracle/graal/python/builtins/objects/cell/PCell;
invokevirtual com.oracle.graal.python.nodes.PClosureRootNode.addClosureCellsToLocalsExploded:(Lcom/oracle/truffle/api/frame/Frame;[Lcom/oracle/graal/python/builtins/objects/cell/PCell;)V
15: goto 22
16: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 0
getfield com.oracle.graal.python.nodes.PClosureRootNode.closure:[Lcom/oracle/graal/python/builtins/objects/cell/PCell;
invokevirtual com.oracle.graal.python.nodes.PClosureRootNode.addClosureCellsToLocalsLoop:(Lcom/oracle/truffle/api/frame/Frame;[Lcom/oracle/graal/python/builtins/objects/cell/PCell;)V
17: goto 22
18: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.graal.python.nodes.PClosureRootNode.freeVarSlots:[Lcom/oracle/truffle/api/frame/FrameSlot;
arraylength
bipush 32
if_icmpge 21
19: aload 0
aload 1
aload 2
invokevirtual com.oracle.graal.python.nodes.PClosureRootNode.addClosureCellsToLocalsExploded:(Lcom/oracle/truffle/api/frame/Frame;[Lcom/oracle/graal/python/builtins/objects/cell/PCell;)V
20: goto 22
21: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 2
invokevirtual com.oracle.graal.python.nodes.PClosureRootNode.addClosureCellsToLocalsLoop:(Lcom/oracle/truffle/api/frame/Frame;[Lcom/oracle/graal/python/builtins/objects/cell/PCell;)V
22: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 this Lcom/oracle/graal/python/nodes/PClosureRootNode;
0 23 1 frame Lcom/oracle/truffle/api/frame/Frame;
1 23 2 frameClosure [Lcom/oracle/graal/python/builtins/objects/cell/PCell;
MethodParameters:
Name Flags
frame
protected void addClosureCellsToLocalsLoop(com.oracle.truffle.api.frame.Frame, com.oracle.graal.python.builtins.objects.cell.PCell[]);
descriptor: (Lcom/oracle/truffle/api/frame/Frame;[Lcom/oracle/graal/python/builtins/objects/cell/PCell;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=4, args_size=3
start local 0 start local 1 start local 2 0: iconst_0
istore 3
start local 3 1: goto 4
2: StackMap locals: int
StackMap stack:
aload 1
aload 0
getfield com.oracle.graal.python.nodes.PClosureRootNode.freeVarSlots:[Lcom/oracle/truffle/api/frame/FrameSlot;
iload 3
aaload
aload 2
iload 3
aaload
invokeinterface com.oracle.truffle.api.frame.Frame.setObject:(Lcom/oracle/truffle/api/frame/FrameSlot;Ljava/lang/Object;)V
3: iinc 3 1
StackMap locals:
StackMap stack:
4: iload 3
aload 0
getfield com.oracle.graal.python.nodes.PClosureRootNode.length:I
if_icmplt 2
end local 3 5: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/oracle/graal/python/nodes/PClosureRootNode;
0 6 1 frame Lcom/oracle/truffle/api/frame/Frame;
0 6 2 frameClosure [Lcom/oracle/graal/python/builtins/objects/cell/PCell;
1 5 3 i I
MethodParameters:
Name Flags
frame
frameClosure
protected void addClosureCellsToLocalsExploded(com.oracle.truffle.api.frame.Frame, com.oracle.graal.python.builtins.objects.cell.PCell[]);
descriptor: (Lcom/oracle/truffle/api/frame/Frame;[Lcom/oracle/graal/python/builtins/objects/cell/PCell;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=4, args_size=3
start local 0 start local 1 start local 2 0: iconst_0
istore 3
start local 3 1: goto 4
2: StackMap locals: int
StackMap stack:
aload 1
aload 0
getfield com.oracle.graal.python.nodes.PClosureRootNode.freeVarSlots:[Lcom/oracle/truffle/api/frame/FrameSlot;
iload 3
aaload
aload 2
iload 3
aaload
invokeinterface com.oracle.truffle.api.frame.Frame.setObject:(Lcom/oracle/truffle/api/frame/FrameSlot;Ljava/lang/Object;)V
3: iinc 3 1
StackMap locals:
StackMap stack:
4: iload 3
aload 0
getfield com.oracle.graal.python.nodes.PClosureRootNode.length:I
if_icmplt 2
end local 3 5: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/oracle/graal/python/nodes/PClosureRootNode;
0 6 1 frame Lcom/oracle/truffle/api/frame/Frame;
0 6 2 frameClosure [Lcom/oracle/graal/python/builtins/objects/cell/PCell;
1 5 3 i I
RuntimeVisibleAnnotations:
com.oracle.truffle.api.nodes.ExplodeLoop()
MethodParameters:
Name Flags
frame
frameClosure
public boolean hasFreeVars();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.oracle.graal.python.nodes.PClosureRootNode.freeVarSlots:[Lcom/oracle/truffle/api/frame/FrameSlot;
ifnull 1
aload 0
getfield com.oracle.graal.python.nodes.PClosureRootNode.freeVarSlots:[Lcom/oracle/truffle/api/frame/FrameSlot;
arraylength
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 Lcom/oracle/graal/python/nodes/PClosureRootNode;
public abstract void initializeFrame(com.oracle.truffle.api.frame.VirtualFrame);
descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;)V
flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
MethodParameters:
Name Flags
frame
public java.lang.String[] getFreeVars();
descriptor: ()[Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=1
start local 0 0: aload 0
getfield com.oracle.graal.python.nodes.PClosureRootNode.freeVarSlots:[Lcom/oracle/truffle/api/frame/FrameSlot;
ifnull 8
1: aload 0
getfield com.oracle.graal.python.nodes.PClosureRootNode.freeVarSlots:[Lcom/oracle/truffle/api/frame/FrameSlot;
arraylength
anewarray java.lang.String
astore 1
start local 1 2: iconst_0
istore 2
start local 2 3: goto 6
4: StackMap locals: java.lang.String[] int
StackMap stack:
aload 1
iload 2
aload 0
getfield com.oracle.graal.python.nodes.PClosureRootNode.freeVarSlots:[Lcom/oracle/truffle/api/frame/FrameSlot;
iload 2
aaload
invokevirtual com.oracle.truffle.api.frame.FrameSlot.getIdentifier:()Ljava/lang/Object;
checkcast java.lang.String
aastore
5: iinc 2 1
StackMap locals:
StackMap stack:
6: iload 2
aload 0
getfield com.oracle.graal.python.nodes.PClosureRootNode.freeVarSlots:[Lcom/oracle/truffle/api/frame/FrameSlot;
arraylength
if_icmplt 4
end local 2 7: aload 1
areturn
end local 1 8: StackMap locals:
StackMap stack:
getstatic com.oracle.graal.python.util.PythonUtils.EMPTY_STRING_ARRAY:[Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/oracle/graal/python/nodes/PClosureRootNode;
2 8 1 freeVars [Ljava/lang/String;
3 7 2 i I
public boolean hasAnnotations();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.oracle.graal.python.nodes.PClosureRootNode.annotationsAvailable:Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/graal/python/nodes/PClosureRootNode;
}
SourceFile: "PClosureRootNode.java"
InnerClasses:
public abstract CompilationFinal = com.oracle.truffle.api.CompilerDirectives$CompilationFinal of com.oracle.truffle.api.CompilerDirectives