public class org.jruby.ir.passes.AddCallProtocolInstructions extends org.jruby.ir.passes.CompilerPass
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.jruby.ir.passes.AddCallProtocolInstructions
super_class: org.jruby.ir.passes.CompilerPass
{
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 Lorg/jruby/ir/passes/AddCallProtocolInstructions;
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 org.jruby.ir.passes.AddCallProtocolInstructions.$assertionsDisabled:Z
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial org.jruby.ir.passes.CompilerPass.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/passes/AddCallProtocolInstructions;
public java.lang.String getLabel();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: ldc "Add Call Protocol Instructions (push/pop of dyn-scope, frame, impl-class values)"
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/passes/AddCallProtocolInstructions;
public java.lang.String getShortLabel();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: ldc "Add Call Proto"
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/passes/AddCallProtocolInstructions;
private boolean explicitCallProtocolSupported(org.jruby.ir.IRScope);
descriptor: (Lorg/jruby/ir/IRScope;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=2, args_size=2
start local 0 start local 1 0: aload 1
instanceof org.jruby.ir.IRMethod
ifne 5
1: aload 1
instanceof org.jruby.ir.IRClosure
ifeq 2
aload 1
instanceof org.jruby.ir.IREvalScript
ifeq 5
2: StackMap locals:
StackMap stack:
aload 1
instanceof org.jruby.ir.IRModuleBody
ifeq 3
aload 1
instanceof org.jruby.ir.IRMetaClassBody
ifeq 5
3: StackMap locals:
StackMap stack:
aload 1
instanceof org.jruby.ir.IRScriptBody
ifne 5
4: iconst_0
ireturn
StackMap locals:
StackMap stack:
5: iconst_1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/jruby/ir/passes/AddCallProtocolInstructions;
0 6 1 scope Lorg/jruby/ir/IRScope;
MethodParameters:
Name Flags
scope
private void fixReturn(org.jruby.ir.IRScope, org.jruby.ir.instructions.ReturnBase, java.util.ListIterator<org.jruby.ir.instructions.Instr>);
descriptor: (Lorg/jruby/ir/IRScope;Lorg/jruby/ir/instructions/ReturnBase;Ljava/util/ListIterator;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 2
invokevirtual org.jruby.ir.instructions.ReturnBase.getReturnValue:()Lorg/jruby/ir/operands/Operand;
astore 4
start local 4 1: aload 4
instanceof org.jruby.ir.operands.ImmutableLiteral
ifne 8
aload 4
instanceof org.jruby.ir.operands.TemporaryVariable
ifne 8
2: aload 1
invokevirtual org.jruby.ir.IRScope.createTemporaryVariable:()Lorg/jruby/ir/operands/TemporaryLocalVariable;
astore 5
start local 5 3: new org.jruby.ir.instructions.CopyInstr
dup
aload 5
aload 4
invokespecial org.jruby.ir.instructions.CopyInstr.<init>:(Lorg/jruby/ir/operands/Variable;Lorg/jruby/ir/operands/Operand;)V
astore 6
start local 6 4: aload 2
aload 5
invokevirtual org.jruby.ir.instructions.ReturnBase.updateReturnValue:(Lorg/jruby/ir/operands/Operand;)V
5: aload 3
invokeinterface java.util.ListIterator.previous:()Ljava/lang/Object;
pop
6: aload 3
aload 6
invokeinterface java.util.ListIterator.add:(Ljava/lang/Object;)V
7: aload 3
invokeinterface java.util.ListIterator.next:()Ljava/lang/Object;
pop
end local 6 end local 5 8: StackMap locals: org.jruby.ir.operands.Operand
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 9 0 this Lorg/jruby/ir/passes/AddCallProtocolInstructions;
0 9 1 scope Lorg/jruby/ir/IRScope;
0 9 2 i Lorg/jruby/ir/instructions/ReturnBase;
0 9 3 instrs Ljava/util/ListIterator<Lorg/jruby/ir/instructions/Instr;>;
1 9 4 retVal Lorg/jruby/ir/operands/Operand;
3 8 5 tmp Lorg/jruby/ir/operands/TemporaryVariable;
4 8 6 copy Lorg/jruby/ir/instructions/CopyInstr;
Signature: (Lorg/jruby/ir/IRScope;Lorg/jruby/ir/instructions/ReturnBase;Ljava/util/ListIterator<Lorg/jruby/ir/instructions/Instr;>;)V
MethodParameters:
Name Flags
scope
i
instrs
private void popSavedState(org.jruby.ir.IRScope, boolean, boolean, boolean, org.jruby.ir.operands.Variable, org.jruby.ir.operands.Variable, java.util.ListIterator<org.jruby.ir.instructions.Instr>);
descriptor: (Lorg/jruby/ir/IRScope;ZZZLorg/jruby/ir/operands/Variable;Lorg/jruby/ir/operands/Variable;Ljava/util/ListIterator;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=8, args_size=8
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 start local 7 0: aload 1
instanceof org.jruby.ir.IRClosure
ifeq 2
iload 2
ifeq 2
1: aload 7
invokeinterface java.util.ListIterator.previous:()Ljava/lang/Object;
pop
2: StackMap locals:
StackMap stack:
iload 3
ifeq 3
aload 7
new org.jruby.ir.instructions.PopBindingInstr
dup
invokespecial org.jruby.ir.instructions.PopBindingInstr.<init>:()V
invokeinterface java.util.ListIterator.add:(Ljava/lang/Object;)V
3: StackMap locals:
StackMap stack:
aload 1
instanceof org.jruby.ir.IRClosure
ifeq 8
4: aload 1
invokevirtual org.jruby.ir.IRScope.needsFrame:()Z
ifeq 13
5: aload 7
new org.jruby.ir.instructions.RestoreBindingVisibilityInstr
dup
aload 5
invokespecial org.jruby.ir.instructions.RestoreBindingVisibilityInstr.<init>:(Lorg/jruby/ir/operands/Operand;)V
invokeinterface java.util.ListIterator.add:(Ljava/lang/Object;)V
6: aload 7
new org.jruby.ir.instructions.PopBlockFrameInstr
dup
aload 6
invokespecial org.jruby.ir.instructions.PopBlockFrameInstr.<init>:(Lorg/jruby/ir/operands/Operand;)V
invokeinterface java.util.ListIterator.add:(Ljava/lang/Object;)V
7: goto 13
8: StackMap locals:
StackMap stack:
iload 4
ifeq 13
9: aload 1
invokevirtual org.jruby.ir.IRScope.needsOnlyBackref:()Z
ifeq 12
10: aload 7
new org.jruby.ir.instructions.PopBackrefFrameInstr
dup
invokespecial org.jruby.ir.instructions.PopBackrefFrameInstr.<init>:()V
invokeinterface java.util.ListIterator.add:(Ljava/lang/Object;)V
11: goto 13
12: StackMap locals:
StackMap stack:
aload 7
new org.jruby.ir.instructions.PopMethodFrameInstr
dup
invokespecial org.jruby.ir.instructions.PopMethodFrameInstr.<init>:()V
invokeinterface java.util.ListIterator.add:(Ljava/lang/Object;)V
13: 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 14 0 this Lorg/jruby/ir/passes/AddCallProtocolInstructions;
0 14 1 scope Lorg/jruby/ir/IRScope;
0 14 2 isGEB Z
0 14 3 requireBinding Z
0 14 4 requireFrame Z
0 14 5 savedViz Lorg/jruby/ir/operands/Variable;
0 14 6 savedFrame Lorg/jruby/ir/operands/Variable;
0 14 7 instrs Ljava/util/ListIterator<Lorg/jruby/ir/instructions/Instr;>;
Signature: (Lorg/jruby/ir/IRScope;ZZZLorg/jruby/ir/operands/Variable;Lorg/jruby/ir/operands/Variable;Ljava/util/ListIterator<Lorg/jruby/ir/instructions/Instr;>;)V
MethodParameters:
Name Flags
scope
isGEB
requireBinding
requireFrame
savedViz
savedFrame
instrs
public java.lang.Object execute(org.jruby.ir.IRScope, java.lang.Object[]);
descriptor: (Lorg/jruby/ir/IRScope;[Ljava/lang/Object;)Ljava/lang/Object;
flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
Code:
stack=8, locals=15, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
invokevirtual org.jruby.ir.passes.AddCallProtocolInstructions.explicitCallProtocolSupported:(Lorg/jruby/ir/IRScope;)Z
ifne 1
aconst_null
areturn
1: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.jruby.ir.IRScope.getCFG:()Lorg/jruby/ir/representations/CFG;
astore 3
start local 3 2: aload 1
invokevirtual org.jruby.ir.IRScope.needsFrame:()Z
istore 4
start local 4 3: aload 1
invokevirtual org.jruby.ir.IRScope.needsBinding:()Z
istore 5
start local 5 4: aload 1
instanceof org.jruby.ir.IRClosure
ifne 5
iload 5
ifne 5
iload 4
ifeq 84
5: StackMap locals: org.jruby.ir.representations.CFG int int
StackMap stack:
aload 3
invokevirtual org.jruby.ir.representations.CFG.getEntryBB:()Lorg/jruby/ir/representations/BasicBlock;
astore 6
start local 6 6: aconst_null
astore 7
start local 7 7: aconst_null
astore 8
start local 8 8: aload 1
instanceof org.jruby.ir.IRClosure
ifeq 32
9: aload 1
invokevirtual org.jruby.ir.IRScope.createTemporaryVariable:()Lorg/jruby/ir/operands/TemporaryLocalVariable;
astore 7
10: aload 1
invokevirtual org.jruby.ir.IRScope.createTemporaryVariable:()Lorg/jruby/ir/operands/TemporaryLocalVariable;
astore 8
11: iconst_0
istore 9
start local 9 12: aload 1
invokevirtual org.jruby.ir.IRScope.needsFrame:()Z
ifeq 15
13: aload 6
iload 9
iinc 9 1
new org.jruby.ir.instructions.SaveBindingVisibilityInstr
dup
aload 7
invokespecial org.jruby.ir.instructions.SaveBindingVisibilityInstr.<init>:(Lorg/jruby/ir/operands/Variable;)V
invokevirtual org.jruby.ir.representations.BasicBlock.insertInstr:(ILorg/jruby/ir/instructions/Instr;)V
14: aload 6
iload 9
iinc 9 1
new org.jruby.ir.instructions.PushBlockFrameInstr
dup
aload 8
aload 1
invokevirtual org.jruby.ir.IRScope.getName:()Lorg/jruby/RubySymbol;
invokespecial org.jruby.ir.instructions.PushBlockFrameInstr.<init>:(Lorg/jruby/ir/operands/Variable;Lorg/jruby/RubySymbol;)V
invokevirtual org.jruby.ir.representations.BasicBlock.insertInstr:(ILorg/jruby/ir/instructions/Instr;)V
15: StackMap locals: org.jruby.ir.passes.AddCallProtocolInstructions org.jruby.ir.IRScope java.lang.Object[] org.jruby.ir.representations.CFG int int org.jruby.ir.representations.BasicBlock org.jruby.ir.operands.Variable org.jruby.ir.operands.Variable int
StackMap stack:
iload 5
ifeq 17
16: aload 6
iload 9
iinc 9 1
new org.jruby.ir.instructions.PushBlockBindingInstr
dup
invokespecial org.jruby.ir.instructions.PushBlockBindingInstr.<init>:()V
invokevirtual org.jruby.ir.representations.BasicBlock.insertInstr:(ILorg/jruby/ir/instructions/Instr;)V
17: StackMap locals:
StackMap stack:
aload 6
iload 9
iinc 9 1
new org.jruby.ir.instructions.UpdateBlockExecutionStateInstr
dup
getstatic org.jruby.ir.operands.Self.SELF:Lorg/jruby/ir/operands/Self;
invokespecial org.jruby.ir.instructions.UpdateBlockExecutionStateInstr.<init>:(Lorg/jruby/ir/operands/Operand;)V
invokevirtual org.jruby.ir.representations.BasicBlock.insertInstr:(ILorg/jruby/ir/instructions/Instr;)V
18: aload 0
aload 3
invokevirtual org.jruby.ir.passes.AddCallProtocolInstructions.createPrologueBlock:(Lorg/jruby/ir/representations/CFG;)Lorg/jruby/ir/representations/BasicBlock;
astore 10
start local 10 19: aload 1
checkcast org.jruby.ir.IRClosure
invokevirtual org.jruby.ir.IRClosure.getSignature:()Lorg/jruby/runtime/Signature;
astore 11
start local 11 20: aload 11
invokevirtual org.jruby.runtime.Signature.arityValue:()I
istore 12
start local 12 21: iload 12
ifne 24
22: aload 10
getstatic org.jruby.ir.instructions.PrepareNoBlockArgsInstr.INSTANCE:Lorg/jruby/ir/instructions/PrepareNoBlockArgsInstr;
invokevirtual org.jruby.ir.representations.BasicBlock.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
23: goto 44
24: StackMap locals: org.jruby.ir.representations.BasicBlock org.jruby.runtime.Signature int
StackMap stack:
aload 11
invokevirtual org.jruby.runtime.Signature.isFixed:()Z
ifeq 30
25: iload 12
iconst_1
if_icmpne 28
26: aload 10
getstatic org.jruby.ir.instructions.PrepareSingleBlockArgInstr.INSTANCE:Lorg/jruby/ir/instructions/PrepareSingleBlockArgInstr;
invokevirtual org.jruby.ir.representations.BasicBlock.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
27: goto 44
28: StackMap locals:
StackMap stack:
aload 10
getstatic org.jruby.ir.instructions.PrepareBlockArgsInstr.INSTANCE:Lorg/jruby/ir/instructions/PrepareBlockArgsInstr;
invokevirtual org.jruby.ir.representations.BasicBlock.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
29: goto 44
30: StackMap locals:
StackMap stack:
aload 10
getstatic org.jruby.ir.instructions.PrepareBlockArgsInstr.INSTANCE:Lorg/jruby/ir/instructions/PrepareBlockArgsInstr;
invokevirtual org.jruby.ir.representations.BasicBlock.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
end local 12 end local 11 end local 10 end local 9 31: goto 44
32: StackMap locals: org.jruby.ir.passes.AddCallProtocolInstructions org.jruby.ir.IRScope java.lang.Object[] org.jruby.ir.representations.CFG int int org.jruby.ir.representations.BasicBlock org.jruby.ir.operands.Variable org.jruby.ir.operands.Variable
StackMap stack:
iload 4
ifeq 43
33: aload 1
invokevirtual org.jruby.ir.IRScope.needsOnlyBackref:()Z
ifeq 36
34: aload 6
new org.jruby.ir.instructions.PushBackrefFrameInstr
dup
invokespecial org.jruby.ir.instructions.PushBackrefFrameInstr.<init>:()V
invokevirtual org.jruby.ir.representations.BasicBlock.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
35: goto 43
36: StackMap locals:
StackMap stack:
aload 6
37: new org.jruby.ir.instructions.PushMethodFrameInstr
dup
38: aload 1
invokevirtual org.jruby.ir.IRScope.getName:()Lorg/jruby/RubySymbol;
39: aload 1
invokevirtual org.jruby.ir.IRScope.isScriptScope:()Z
ifeq 40
getstatic org.jruby.runtime.Visibility.PRIVATE:Lorg/jruby/runtime/Visibility;
goto 41
StackMap locals: org.jruby.ir.passes.AddCallProtocolInstructions org.jruby.ir.IRScope java.lang.Object[] org.jruby.ir.representations.CFG int int org.jruby.ir.representations.BasicBlock org.jruby.ir.operands.Variable org.jruby.ir.operands.Variable
StackMap stack: org.jruby.ir.representations.BasicBlock new 37 new 37 org.jruby.RubySymbol
40: getstatic org.jruby.runtime.Visibility.PUBLIC:Lorg/jruby/runtime/Visibility;
StackMap locals: org.jruby.ir.passes.AddCallProtocolInstructions org.jruby.ir.IRScope java.lang.Object[] org.jruby.ir.representations.CFG int int org.jruby.ir.representations.BasicBlock org.jruby.ir.operands.Variable org.jruby.ir.operands.Variable
StackMap stack: org.jruby.ir.representations.BasicBlock new 37 new 37 org.jruby.RubySymbol org.jruby.runtime.Visibility
41: invokespecial org.jruby.ir.instructions.PushMethodFrameInstr.<init>:(Lorg/jruby/RubySymbol;Lorg/jruby/runtime/Visibility;)V
42: invokevirtual org.jruby.ir.representations.BasicBlock.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
43: StackMap locals:
StackMap stack:
iload 5
ifeq 44
aload 6
new org.jruby.ir.instructions.PushMethodBindingInstr
dup
invokespecial org.jruby.ir.instructions.PushMethodBindingInstr.<init>:()V
invokevirtual org.jruby.ir.representations.BasicBlock.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
44: StackMap locals:
StackMap stack:
aload 3
invokevirtual org.jruby.ir.representations.CFG.getGlobalEnsureBB:()Lorg/jruby/ir/representations/BasicBlock;
astore 9
start local 9 45: iconst_0
istore 10
start local 10 46: aload 9
ifnonnull 52
47: aload 1
invokevirtual org.jruby.ir.IRScope.createTemporaryVariable:()Lorg/jruby/ir/operands/TemporaryLocalVariable;
astore 11
start local 11 48: new org.jruby.ir.representations.BasicBlock
dup
aload 3
invokestatic org.jruby.ir.operands.Label.getGlobalEnsureBlockLabel:()Lorg/jruby/ir/operands/Label;
invokespecial org.jruby.ir.representations.BasicBlock.<init>:(Lorg/jruby/ir/representations/CFG;Lorg/jruby/ir/operands/Label;)V
astore 9
49: aload 9
new org.jruby.ir.instructions.ReceiveJRubyExceptionInstr
dup
aload 11
invokespecial org.jruby.ir.instructions.ReceiveJRubyExceptionInstr.<init>:(Lorg/jruby/ir/operands/Variable;)V
invokevirtual org.jruby.ir.representations.BasicBlock.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
50: aload 9
new org.jruby.ir.instructions.ThrowExceptionInstr
dup
aload 11
invokespecial org.jruby.ir.instructions.ThrowExceptionInstr.<init>:(Lorg/jruby/ir/operands/Operand;)V
invokevirtual org.jruby.ir.representations.BasicBlock.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
51: aload 3
aload 9
invokevirtual org.jruby.ir.representations.CFG.addGlobalEnsureBB:(Lorg/jruby/ir/representations/BasicBlock;)V
end local 11 52: StackMap locals: org.jruby.ir.representations.BasicBlock int
StackMap stack:
aload 3
invokevirtual org.jruby.ir.representations.CFG.getBasicBlocks:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 12
goto 83
StackMap locals: org.jruby.ir.passes.AddCallProtocolInstructions org.jruby.ir.IRScope java.lang.Object[] org.jruby.ir.representations.CFG int int org.jruby.ir.representations.BasicBlock org.jruby.ir.operands.Variable org.jruby.ir.operands.Variable org.jruby.ir.representations.BasicBlock int top java.util.Iterator
StackMap stack:
53: aload 12
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 11
start local 11 54: aconst_null
astore 13
start local 13 55: aload 11
invokevirtual org.jruby.ir.representations.BasicBlock.getInstrs:()Ljava/util/List;
invokeinterface java.util.List.listIterator:()Ljava/util/ListIterator;
astore 14
start local 14 56: goto 67
57: StackMap locals: org.jruby.ir.passes.AddCallProtocolInstructions org.jruby.ir.IRScope java.lang.Object[] org.jruby.ir.representations.CFG int int org.jruby.ir.representations.BasicBlock org.jruby.ir.operands.Variable org.jruby.ir.operands.Variable org.jruby.ir.representations.BasicBlock int org.jruby.ir.representations.BasicBlock java.util.Iterator org.jruby.ir.instructions.Instr java.util.ListIterator
StackMap stack:
aload 14
invokeinterface java.util.ListIterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.instructions.Instr
astore 13
58: aload 11
invokevirtual org.jruby.ir.representations.BasicBlock.isExitBB:()Z
ifne 67
aload 13
instanceof org.jruby.ir.instructions.ReturnInstr
ifeq 67
59: iload 4
ifne 60
iload 5
ifeq 61
StackMap locals:
StackMap stack:
60: aload 0
aload 1
aload 13
checkcast org.jruby.ir.instructions.ReturnInstr
aload 14
invokevirtual org.jruby.ir.passes.AddCallProtocolInstructions.fixReturn:(Lorg/jruby/ir/IRScope;Lorg/jruby/ir/instructions/ReturnBase;Ljava/util/ListIterator;)V
61: StackMap locals:
StackMap stack:
aload 14
invokeinterface java.util.ListIterator.previous:()Ljava/lang/Object;
checkcast org.jruby.ir.instructions.Instr
astore 13
62: aload 0
aload 1
aload 11
aload 9
if_acmpne 63
iconst_1
goto 64
StackMap locals: org.jruby.ir.passes.AddCallProtocolInstructions org.jruby.ir.IRScope java.lang.Object[] org.jruby.ir.representations.CFG int int org.jruby.ir.representations.BasicBlock org.jruby.ir.operands.Variable org.jruby.ir.operands.Variable org.jruby.ir.representations.BasicBlock int org.jruby.ir.representations.BasicBlock java.util.Iterator org.jruby.ir.instructions.Instr java.util.ListIterator
StackMap stack: org.jruby.ir.passes.AddCallProtocolInstructions org.jruby.ir.IRScope
63: iconst_0
StackMap locals: org.jruby.ir.passes.AddCallProtocolInstructions org.jruby.ir.IRScope java.lang.Object[] org.jruby.ir.representations.CFG int int org.jruby.ir.representations.BasicBlock org.jruby.ir.operands.Variable org.jruby.ir.operands.Variable org.jruby.ir.representations.BasicBlock int org.jruby.ir.representations.BasicBlock java.util.Iterator org.jruby.ir.instructions.Instr java.util.ListIterator
StackMap stack: org.jruby.ir.passes.AddCallProtocolInstructions org.jruby.ir.IRScope int
64: iload 5
iload 4
aload 7
aload 8
aload 14
invokevirtual org.jruby.ir.passes.AddCallProtocolInstructions.popSavedState:(Lorg/jruby/ir/IRScope;ZZZLorg/jruby/ir/operands/Variable;Lorg/jruby/ir/operands/Variable;Ljava/util/ListIterator;)V
65: aload 11
aload 9
if_acmpne 68
iconst_1
istore 10
66: goto 68
67: StackMap locals:
StackMap stack:
aload 14
invokeinterface java.util.ListIterator.hasNext:()Z
ifne 57
68: StackMap locals:
StackMap stack:
aload 11
invokevirtual org.jruby.ir.representations.BasicBlock.isExitBB:()Z
ifeq 78
aload 11
invokevirtual org.jruby.ir.representations.BasicBlock.isEmpty:()Z
ifne 78
69: aload 13
ifnull 73
aload 13
instanceof org.jruby.ir.instructions.ReturnInstr
ifeq 73
70: iload 4
ifne 71
iload 5
ifeq 72
StackMap locals:
StackMap stack:
71: aload 0
aload 1
aload 13
checkcast org.jruby.ir.instructions.ReturnInstr
aload 14
invokevirtual org.jruby.ir.passes.AddCallProtocolInstructions.fixReturn:(Lorg/jruby/ir/IRScope;Lorg/jruby/ir/instructions/ReturnBase;Ljava/util/ListIterator;)V
72: StackMap locals:
StackMap stack:
aload 14
invokeinterface java.util.ListIterator.previous:()Ljava/lang/Object;
pop
73: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 11
aload 9
if_acmpne 74
iconst_1
goto 75
StackMap locals: org.jruby.ir.passes.AddCallProtocolInstructions org.jruby.ir.IRScope java.lang.Object[] org.jruby.ir.representations.CFG int int org.jruby.ir.representations.BasicBlock org.jruby.ir.operands.Variable org.jruby.ir.operands.Variable org.jruby.ir.representations.BasicBlock int org.jruby.ir.representations.BasicBlock java.util.Iterator org.jruby.ir.instructions.Instr java.util.ListIterator
StackMap stack: org.jruby.ir.passes.AddCallProtocolInstructions org.jruby.ir.IRScope
74: iconst_0
StackMap locals: org.jruby.ir.passes.AddCallProtocolInstructions org.jruby.ir.IRScope java.lang.Object[] org.jruby.ir.representations.CFG int int org.jruby.ir.representations.BasicBlock org.jruby.ir.operands.Variable org.jruby.ir.operands.Variable org.jruby.ir.representations.BasicBlock int org.jruby.ir.representations.BasicBlock java.util.Iterator org.jruby.ir.instructions.Instr java.util.ListIterator
StackMap stack: org.jruby.ir.passes.AddCallProtocolInstructions org.jruby.ir.IRScope int
75: iload 5
iload 4
aload 7
aload 8
aload 14
invokevirtual org.jruby.ir.passes.AddCallProtocolInstructions.popSavedState:(Lorg/jruby/ir/IRScope;ZZZLorg/jruby/ir/operands/Variable;Lorg/jruby/ir/operands/Variable;Ljava/util/ListIterator;)V
76: aload 11
aload 9
if_acmpne 83
iconst_1
istore 10
77: goto 83
StackMap locals:
StackMap stack:
78: iload 10
ifne 83
aload 11
aload 9
if_acmpne 83
79: aload 13
ifnull 82
80: getstatic org.jruby.ir.passes.AddCallProtocolInstructions.$assertionsDisabled:Z
ifne 81
aload 13
invokevirtual org.jruby.ir.instructions.Instr.getOperation:()Lorg/jruby/ir/Operation;
invokevirtual org.jruby.ir.Operation.transfersControl:()Z
ifne 81
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "Last instruction of GEB in scope: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " is "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 13
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc ", not a control-xfer instruction"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
81: StackMap locals:
StackMap stack:
aload 14
invokeinterface java.util.ListIterator.previous:()Ljava/lang/Object;
pop
82: StackMap locals:
StackMap stack:
aload 0
aload 1
iconst_1
iload 5
iload 4
aload 7
aload 8
aload 14
invokevirtual org.jruby.ir.passes.AddCallProtocolInstructions.popSavedState:(Lorg/jruby/ir/IRScope;ZZZLorg/jruby/ir/operands/Variable;Lorg/jruby/ir/operands/Variable;Ljava/util/ListIterator;)V
end local 14 end local 13 end local 11 83: StackMap locals: org.jruby.ir.passes.AddCallProtocolInstructions org.jruby.ir.IRScope java.lang.Object[] org.jruby.ir.representations.CFG int int org.jruby.ir.representations.BasicBlock org.jruby.ir.operands.Variable org.jruby.ir.operands.Variable org.jruby.ir.representations.BasicBlock int top java.util.Iterator
StackMap stack:
aload 12
invokeinterface java.util.Iterator.hasNext:()Z
ifne 53
end local 10 end local 9 end local 8 end local 7 end local 6 84: StackMap locals: org.jruby.ir.passes.AddCallProtocolInstructions org.jruby.ir.IRScope java.lang.Object[] org.jruby.ir.representations.CFG int int
StackMap stack:
aload 1
invokevirtual org.jruby.ir.IRScope.setExplicitCallProtocolFlag:()V
85: new org.jruby.ir.passes.LiveVariableAnalysis
dup
invokespecial org.jruby.ir.passes.LiveVariableAnalysis.<init>:()V
aload 1
invokevirtual org.jruby.ir.passes.LiveVariableAnalysis.invalidate:(Lorg/jruby/ir/IRScope;)Z
pop
86: aconst_null
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 87 0 this Lorg/jruby/ir/passes/AddCallProtocolInstructions;
0 87 1 scope Lorg/jruby/ir/IRScope;
0 87 2 data [Ljava/lang/Object;
2 87 3 cfg Lorg/jruby/ir/representations/CFG;
3 87 4 requireFrame Z
4 87 5 requireBinding Z
6 84 6 entryBB Lorg/jruby/ir/representations/BasicBlock;
7 84 7 savedViz Lorg/jruby/ir/operands/Variable;
8 84 8 savedFrame Lorg/jruby/ir/operands/Variable;
12 31 9 insertIndex I
19 31 10 prologueBB Lorg/jruby/ir/representations/BasicBlock;
20 31 11 sig Lorg/jruby/runtime/Signature;
21 31 12 arityValue I
45 84 9 geb Lorg/jruby/ir/representations/BasicBlock;
46 84 10 gebProcessed Z
48 52 11 exc Lorg/jruby/ir/operands/Variable;
54 83 11 bb Lorg/jruby/ir/representations/BasicBlock;
55 83 13 i Lorg/jruby/ir/instructions/Instr;
56 83 14 instrs Ljava/util/ListIterator<Lorg/jruby/ir/instructions/Instr;>;
MethodParameters:
Name Flags
scope
data
private org.jruby.ir.representations.BasicBlock createPrologueBlock(org.jruby.ir.representations.CFG);
descriptor: (Lorg/jruby/ir/representations/CFG;)Lorg/jruby/ir/representations/BasicBlock;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=6, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual org.jruby.ir.representations.CFG.getEntryBB:()Lorg/jruby/ir/representations/BasicBlock;
astore 2
start local 2 1: aload 1
aload 2
getstatic org.jruby.ir.representations.CFG$EdgeType.FALL_THROUGH:Lorg/jruby/ir/representations/CFG$EdgeType;
invokevirtual org.jruby.ir.representations.CFG.getOutgoingDestinationOfType:(Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)Lorg/jruby/ir/representations/BasicBlock;
astore 3
start local 3 2: new org.jruby.ir.representations.BasicBlock
dup
aload 1
aload 1
invokevirtual org.jruby.ir.representations.CFG.getScope:()Lorg/jruby/ir/IRScope;
invokevirtual org.jruby.ir.IRScope.getNewLabel:()Lorg/jruby/ir/operands/Label;
invokespecial org.jruby.ir.representations.BasicBlock.<init>:(Lorg/jruby/ir/representations/CFG;Lorg/jruby/ir/operands/Label;)V
astore 4
start local 4 3: aload 1
aload 2
aload 3
invokevirtual org.jruby.ir.representations.CFG.removeEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)V
4: aload 1
aload 4
invokevirtual org.jruby.ir.representations.CFG.addBasicBlock:(Lorg/jruby/ir/representations/BasicBlock;)V
5: aload 1
aload 2
aload 4
getstatic org.jruby.ir.representations.CFG$EdgeType.FALL_THROUGH:Lorg/jruby/ir/representations/CFG$EdgeType;
invokevirtual org.jruby.ir.representations.CFG.addEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)V
6: aload 1
aload 4
aload 3
getstatic org.jruby.ir.representations.CFG$EdgeType.FALL_THROUGH:Lorg/jruby/ir/representations/CFG$EdgeType;
invokevirtual org.jruby.ir.representations.CFG.addEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)V
7: aload 1
invokevirtual org.jruby.ir.representations.CFG.getGlobalEnsureBB:()Lorg/jruby/ir/representations/BasicBlock;
ifnull 11
8: aload 1
invokevirtual org.jruby.ir.representations.CFG.getGlobalEnsureBB:()Lorg/jruby/ir/representations/BasicBlock;
astore 5
start local 5 9: aload 1
aload 4
aload 5
getstatic org.jruby.ir.representations.CFG$EdgeType.EXCEPTION:Lorg/jruby/ir/representations/CFG$EdgeType;
invokevirtual org.jruby.ir.representations.CFG.addEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)V
10: aload 1
aload 4
aload 5
invokevirtual org.jruby.ir.representations.CFG.setRescuerBB:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)V
end local 5 11: StackMap locals: org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock
StackMap stack:
aload 4
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lorg/jruby/ir/passes/AddCallProtocolInstructions;
0 12 1 cfg Lorg/jruby/ir/representations/CFG;
1 12 2 entryBB Lorg/jruby/ir/representations/BasicBlock;
2 12 3 oldStart Lorg/jruby/ir/representations/BasicBlock;
3 12 4 prologueBB Lorg/jruby/ir/representations/BasicBlock;
9 11 5 geb Lorg/jruby/ir/representations/BasicBlock;
MethodParameters:
Name Flags
cfg
public boolean invalidate(org.jruby.ir.IRScope);
descriptor: (Lorg/jruby/ir/IRScope;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=2, args_size=2
start local 0 start local 1 0: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/passes/AddCallProtocolInstructions;
0 1 1 scope Lorg/jruby/ir/IRScope;
MethodParameters:
Name Flags
scope
}
SourceFile: "AddCallProtocolInstructions.java"
InnerClasses:
public final EdgeType = org.jruby.ir.representations.CFG$EdgeType of org.jruby.ir.representations.CFG