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.interpreter.FullInterpreterContext, org.jruby.ir.instructions.ReturnBase, java.util.ListIterator<org.jruby.ir.instructions.Instr>);
descriptor: (Lorg/jruby/ir/interpreter/FullInterpreterContext;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.interpreter.FullInterpreterContext.createTemporaryVariable:()Lorg/jruby/ir/operands/TemporaryVariable;
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 fic Lorg/jruby/ir/interpreter/FullInterpreterContext;
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/interpreter/FullInterpreterContext;Lorg/jruby/ir/instructions/ReturnBase;Ljava/util/ListIterator<Lorg/jruby/ir/instructions/Instr;>;)V
MethodParameters:
Name Flags
fic
i
instrs
private void popSavedState(boolean, boolean, boolean, boolean, boolean, org.jruby.ir.operands.Variable, org.jruby.ir.operands.Variable, java.util.ListIterator<org.jruby.ir.instructions.Instr>);
descriptor: (ZZZZZLorg/jruby/ir/operands/Variable;Lorg/jruby/ir/operands/Variable;Ljava/util/ListIterator;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=9, args_size=9
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 start local 7 start local 8 0: iload 2
ifeq 1
iload 3
ifeq 1
aload 8
invokeinterface java.util.ListIterator.previous:()Ljava/lang/Object;
pop
1: StackMap locals:
StackMap stack:
iload 4
ifeq 2
aload 8
new org.jruby.ir.instructions.PopBindingInstr
dup
invokespecial org.jruby.ir.instructions.PopBindingInstr.<init>:()V
invokeinterface java.util.ListIterator.add:(Ljava/lang/Object;)V
2: StackMap locals:
StackMap stack:
iload 2
ifeq 7
3: iload 5
ifeq 12
4: aload 8
new org.jruby.ir.instructions.RestoreBindingVisibilityInstr
dup
aload 6
invokespecial org.jruby.ir.instructions.RestoreBindingVisibilityInstr.<init>:(Lorg/jruby/ir/operands/Operand;)V
invokeinterface java.util.ListIterator.add:(Ljava/lang/Object;)V
5: aload 8
new org.jruby.ir.instructions.PopBlockFrameInstr
dup
aload 7
invokespecial org.jruby.ir.instructions.PopBlockFrameInstr.<init>:(Lorg/jruby/ir/operands/Operand;)V
invokeinterface java.util.ListIterator.add:(Ljava/lang/Object;)V
6: goto 12
7: StackMap locals:
StackMap stack:
iload 5
ifeq 12
8: iload 1
ifeq 11
9: aload 8
new org.jruby.ir.instructions.PopBackrefFrameInstr
dup
invokespecial org.jruby.ir.instructions.PopBackrefFrameInstr.<init>:()V
invokeinterface java.util.ListIterator.add:(Ljava/lang/Object;)V
10: goto 12
11: StackMap locals:
StackMap stack:
aload 8
new org.jruby.ir.instructions.PopMethodFrameInstr
dup
invokespecial org.jruby.ir.instructions.PopMethodFrameInstr.<init>:()V
invokeinterface java.util.ListIterator.add:(Ljava/lang/Object;)V
12: StackMap locals:
StackMap stack:
return
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 13 0 this Lorg/jruby/ir/passes/AddCallProtocolInstructions;
0 13 1 needsOnlyBackref Z
0 13 2 isClosure Z
0 13 3 isGEB Z
0 13 4 requireBinding Z
0 13 5 needsFrame Z
0 13 6 savedViz Lorg/jruby/ir/operands/Variable;
0 13 7 savedFrame Lorg/jruby/ir/operands/Variable;
0 13 8 instrs Ljava/util/ListIterator<Lorg/jruby/ir/instructions/Instr;>;
Signature: (ZZZZZLorg/jruby/ir/operands/Variable;Lorg/jruby/ir/operands/Variable;Ljava/util/ListIterator<Lorg/jruby/ir/instructions/Instr;>;)V
MethodParameters:
Name Flags
needsOnlyBackref
isClosure
isGEB
requireBinding
needsFrame
savedViz
savedFrame
instrs
public java.lang.Object execute(org.jruby.ir.interpreter.FullInterpreterContext, java.lang.Object[]);
descriptor: (Lorg/jruby/ir/interpreter/FullInterpreterContext;[Ljava/lang/Object;)Ljava/lang/Object;
flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
Code:
stack=9, locals=17, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
invokevirtual org.jruby.ir.interpreter.FullInterpreterContext.getScope:()Lorg/jruby/ir/IRScope;
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.interpreter.FullInterpreterContext.getCFG:()Lorg/jruby/ir/representations/CFG;
astore 3
start local 3 2: aload 1
invokevirtual org.jruby.ir.interpreter.FullInterpreterContext.needsFrame:()Z
istore 4
start local 4 3: aload 1
invokevirtual org.jruby.ir.interpreter.FullInterpreterContext.needsBinding:()Z
istore 5
start local 5 4: aload 1
invokevirtual org.jruby.ir.interpreter.FullInterpreterContext.getScope:()Lorg/jruby/ir/IRScope;
instanceof org.jruby.ir.IRClosure
istore 6
start local 6 5: aload 1
invokevirtual org.jruby.ir.interpreter.FullInterpreterContext.needsOnlyBackref:()Z
istore 7
start local 7 6: iload 6
ifne 7
iload 5
ifne 7
iload 4
ifeq 86
7: StackMap locals: org.jruby.ir.passes.AddCallProtocolInstructions org.jruby.ir.interpreter.FullInterpreterContext java.lang.Object[] org.jruby.ir.representations.CFG int int int int
StackMap stack:
aload 3
invokevirtual org.jruby.ir.representations.CFG.getEntryBB:()Lorg/jruby/ir/representations/BasicBlock;
astore 8
start local 8 8: aconst_null
astore 9
start local 9 9: aconst_null
astore 10
start local 10 10: iload 6
ifeq 34
11: aload 1
invokevirtual org.jruby.ir.interpreter.FullInterpreterContext.createTemporaryVariable:()Lorg/jruby/ir/operands/TemporaryVariable;
astore 9
12: aload 1
invokevirtual org.jruby.ir.interpreter.FullInterpreterContext.createTemporaryVariable:()Lorg/jruby/ir/operands/TemporaryVariable;
astore 10
13: iconst_0
istore 11
start local 11 14: iload 4
ifeq 17
15: aload 8
iload 11
iinc 11 1
new org.jruby.ir.instructions.SaveBindingVisibilityInstr
dup
aload 9
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
16: aload 8
iload 11
iinc 11 1
new org.jruby.ir.instructions.PushBlockFrameInstr
dup
aload 10
aload 1
invokevirtual org.jruby.ir.interpreter.FullInterpreterContext.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
17: StackMap locals: org.jruby.ir.passes.AddCallProtocolInstructions org.jruby.ir.interpreter.FullInterpreterContext java.lang.Object[] org.jruby.ir.representations.CFG int int int int org.jruby.ir.representations.BasicBlock org.jruby.ir.operands.Variable org.jruby.ir.operands.Variable int
StackMap stack:
iload 5
ifeq 19
18: aload 8
iload 11
iinc 11 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
19: StackMap locals:
StackMap stack:
aload 8
iload 11
iinc 11 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
20: aload 0
aload 3
invokevirtual org.jruby.ir.passes.AddCallProtocolInstructions.createPrologueBlock:(Lorg/jruby/ir/representations/CFG;)Lorg/jruby/ir/representations/BasicBlock;
astore 12
start local 12 21: aload 1
invokevirtual org.jruby.ir.interpreter.FullInterpreterContext.getScope:()Lorg/jruby/ir/IRScope;
checkcast org.jruby.ir.IRClosure
invokevirtual org.jruby.ir.IRClosure.getSignature:()Lorg/jruby/runtime/Signature;
astore 13
start local 13 22: aload 13
invokevirtual org.jruby.runtime.Signature.arityValue:()I
istore 14
start local 14 23: iload 14
ifne 26
24: aload 12
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
25: goto 46
26: StackMap locals: org.jruby.ir.representations.BasicBlock org.jruby.runtime.Signature int
StackMap stack:
aload 13
invokevirtual org.jruby.runtime.Signature.isFixed:()Z
ifeq 32
27: iload 14
iconst_1
if_icmpne 30
28: aload 12
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
29: goto 46
30: StackMap locals:
StackMap stack:
aload 12
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
31: goto 46
32: StackMap locals:
StackMap stack:
aload 12
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 14 end local 13 end local 12 end local 11 33: goto 46
34: StackMap locals: org.jruby.ir.passes.AddCallProtocolInstructions org.jruby.ir.interpreter.FullInterpreterContext java.lang.Object[] org.jruby.ir.representations.CFG int int int int org.jruby.ir.representations.BasicBlock org.jruby.ir.operands.Variable org.jruby.ir.operands.Variable
StackMap stack:
iload 4
ifeq 45
35: iload 7
ifeq 38
36: aload 8
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
37: goto 45
38: StackMap locals:
StackMap stack:
aload 8
39: new org.jruby.ir.instructions.PushMethodFrameInstr
dup
40: aload 1
invokevirtual org.jruby.ir.interpreter.FullInterpreterContext.getName:()Lorg/jruby/RubySymbol;
41: aload 1
invokevirtual org.jruby.ir.interpreter.FullInterpreterContext.getScope:()Lorg/jruby/ir/IRScope;
invokevirtual org.jruby.ir.IRScope.isScriptScope:()Z
ifeq 42
getstatic org.jruby.runtime.Visibility.PRIVATE:Lorg/jruby/runtime/Visibility;
goto 43
StackMap locals: org.jruby.ir.passes.AddCallProtocolInstructions org.jruby.ir.interpreter.FullInterpreterContext java.lang.Object[] org.jruby.ir.representations.CFG int int 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 39 new 39 org.jruby.RubySymbol
42: getstatic org.jruby.runtime.Visibility.PUBLIC:Lorg/jruby/runtime/Visibility;
StackMap locals: org.jruby.ir.passes.AddCallProtocolInstructions org.jruby.ir.interpreter.FullInterpreterContext java.lang.Object[] org.jruby.ir.representations.CFG int int 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 39 new 39 org.jruby.RubySymbol org.jruby.runtime.Visibility
43: invokespecial org.jruby.ir.instructions.PushMethodFrameInstr.<init>:(Lorg/jruby/RubySymbol;Lorg/jruby/runtime/Visibility;)V
44: invokevirtual org.jruby.ir.representations.BasicBlock.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
45: StackMap locals:
StackMap stack:
iload 5
ifeq 46
aload 8
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
46: StackMap locals:
StackMap stack:
aload 3
invokevirtual org.jruby.ir.representations.CFG.getGlobalEnsureBB:()Lorg/jruby/ir/representations/BasicBlock;
astore 11
start local 11 47: iconst_0
istore 12
start local 12 48: aload 11
ifnonnull 54
49: aload 1
invokevirtual org.jruby.ir.interpreter.FullInterpreterContext.createTemporaryVariable:()Lorg/jruby/ir/operands/TemporaryVariable;
astore 13
start local 13 50: 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 11
51: aload 11
new org.jruby.ir.instructions.ReceiveJRubyExceptionInstr
dup
aload 13
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
52: aload 11
new org.jruby.ir.instructions.ThrowExceptionInstr
dup
aload 13
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
53: aload 3
aload 11
invokevirtual org.jruby.ir.representations.CFG.addGlobalEnsureBB:(Lorg/jruby/ir/representations/BasicBlock;)V
end local 13 54: 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 14
goto 85
StackMap locals: org.jruby.ir.passes.AddCallProtocolInstructions org.jruby.ir.interpreter.FullInterpreterContext java.lang.Object[] org.jruby.ir.representations.CFG int int 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:
55: aload 14
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 13
start local 13 56: aconst_null
astore 15
start local 15 57: aload 13
invokevirtual org.jruby.ir.representations.BasicBlock.getInstrs:()Ljava/util/List;
invokeinterface java.util.List.listIterator:()Ljava/util/ListIterator;
astore 16
start local 16 58: goto 69
59: StackMap locals: org.jruby.ir.passes.AddCallProtocolInstructions org.jruby.ir.interpreter.FullInterpreterContext java.lang.Object[] org.jruby.ir.representations.CFG int int 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 16
invokeinterface java.util.ListIterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.instructions.Instr
astore 15
60: aload 13
invokevirtual org.jruby.ir.representations.BasicBlock.isExitBB:()Z
ifne 69
aload 15
instanceof org.jruby.ir.instructions.ReturnInstr
ifeq 69
61: iload 4
ifne 62
iload 5
ifeq 63
StackMap locals:
StackMap stack:
62: aload 0
aload 1
aload 15
checkcast org.jruby.ir.instructions.ReturnInstr
aload 16
invokevirtual org.jruby.ir.passes.AddCallProtocolInstructions.fixReturn:(Lorg/jruby/ir/interpreter/FullInterpreterContext;Lorg/jruby/ir/instructions/ReturnBase;Ljava/util/ListIterator;)V
63: StackMap locals:
StackMap stack:
aload 16
invokeinterface java.util.ListIterator.previous:()Ljava/lang/Object;
checkcast org.jruby.ir.instructions.Instr
astore 15
64: aload 0
iload 7
iload 6
aload 13
aload 11
if_acmpne 65
iconst_1
goto 66
StackMap locals: org.jruby.ir.passes.AddCallProtocolInstructions org.jruby.ir.interpreter.FullInterpreterContext java.lang.Object[] org.jruby.ir.representations.CFG int int 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 int int
65: iconst_0
StackMap locals: org.jruby.ir.passes.AddCallProtocolInstructions org.jruby.ir.interpreter.FullInterpreterContext java.lang.Object[] org.jruby.ir.representations.CFG int int 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 int int int
66: iload 5
iload 4
aload 9
aload 10
aload 16
invokevirtual org.jruby.ir.passes.AddCallProtocolInstructions.popSavedState:(ZZZZZLorg/jruby/ir/operands/Variable;Lorg/jruby/ir/operands/Variable;Ljava/util/ListIterator;)V
67: aload 13
aload 11
if_acmpne 70
iconst_1
istore 12
68: goto 70
69: StackMap locals:
StackMap stack:
aload 16
invokeinterface java.util.ListIterator.hasNext:()Z
ifne 59
70: StackMap locals:
StackMap stack:
aload 13
invokevirtual org.jruby.ir.representations.BasicBlock.isExitBB:()Z
ifeq 80
aload 13
invokevirtual org.jruby.ir.representations.BasicBlock.isEmpty:()Z
ifne 80
71: aload 15
ifnull 75
aload 15
instanceof org.jruby.ir.instructions.ReturnInstr
ifeq 75
72: iload 4
ifne 73
iload 5
ifeq 74
StackMap locals:
StackMap stack:
73: aload 0
aload 1
aload 15
checkcast org.jruby.ir.instructions.ReturnInstr
aload 16
invokevirtual org.jruby.ir.passes.AddCallProtocolInstructions.fixReturn:(Lorg/jruby/ir/interpreter/FullInterpreterContext;Lorg/jruby/ir/instructions/ReturnBase;Ljava/util/ListIterator;)V
74: StackMap locals:
StackMap stack:
aload 16
invokeinterface java.util.ListIterator.previous:()Ljava/lang/Object;
pop
75: StackMap locals:
StackMap stack:
aload 0
iload 7
iload 6
aload 13
aload 11
if_acmpne 76
iconst_1
goto 77
StackMap locals: org.jruby.ir.passes.AddCallProtocolInstructions org.jruby.ir.interpreter.FullInterpreterContext java.lang.Object[] org.jruby.ir.representations.CFG int int 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 int int
76: iconst_0
StackMap locals: org.jruby.ir.passes.AddCallProtocolInstructions org.jruby.ir.interpreter.FullInterpreterContext java.lang.Object[] org.jruby.ir.representations.CFG int int 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 int int int
77: iload 5
iload 4
aload 9
aload 10
aload 16
invokevirtual org.jruby.ir.passes.AddCallProtocolInstructions.popSavedState:(ZZZZZLorg/jruby/ir/operands/Variable;Lorg/jruby/ir/operands/Variable;Ljava/util/ListIterator;)V
78: aload 13
aload 11
if_acmpne 85
iconst_1
istore 12
79: goto 85
StackMap locals:
StackMap stack:
80: iload 12
ifne 85
aload 13
aload 11
if_acmpne 85
81: aload 15
ifnull 84
82: getstatic org.jruby.ir.passes.AddCallProtocolInstructions.$assertionsDisabled:Z
ifne 83
aload 15
invokevirtual org.jruby.ir.instructions.Instr.getOperation:()Lorg/jruby/ir/Operation;
invokevirtual org.jruby.ir.Operation.transfersControl:()Z
ifne 83
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 org.jruby.ir.interpreter.FullInterpreterContext.getScope:()Lorg/jruby/ir/IRScope;
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 15
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
83: StackMap locals:
StackMap stack:
aload 16
invokeinterface java.util.ListIterator.previous:()Ljava/lang/Object;
pop
84: StackMap locals:
StackMap stack:
aload 0
iload 7
iload 6
iconst_1
iload 5
iload 4
aload 9
aload 10
aload 16
invokevirtual org.jruby.ir.passes.AddCallProtocolInstructions.popSavedState:(ZZZZZLorg/jruby/ir/operands/Variable;Lorg/jruby/ir/operands/Variable;Ljava/util/ListIterator;)V
end local 16 end local 15 end local 13 85: StackMap locals: org.jruby.ir.passes.AddCallProtocolInstructions org.jruby.ir.interpreter.FullInterpreterContext java.lang.Object[] org.jruby.ir.representations.CFG int int 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 14
invokeinterface java.util.Iterator.hasNext:()Z
ifne 55
end local 12 end local 11 end local 10 end local 9 end local 8 86: StackMap locals: org.jruby.ir.passes.AddCallProtocolInstructions org.jruby.ir.interpreter.FullInterpreterContext java.lang.Object[] org.jruby.ir.representations.CFG int int int int
StackMap stack:
aload 1
iconst_1
invokevirtual org.jruby.ir.interpreter.FullInterpreterContext.setExplicitCallProtocol:(Z)V
87: 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/interpreter/FullInterpreterContext;)Z
pop
88: aconst_null
areturn
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 89 0 this Lorg/jruby/ir/passes/AddCallProtocolInstructions;
0 89 1 fic Lorg/jruby/ir/interpreter/FullInterpreterContext;
0 89 2 data [Ljava/lang/Object;
2 89 3 cfg Lorg/jruby/ir/representations/CFG;
3 89 4 needsFrame Z
4 89 5 requireBinding Z
5 89 6 isClosure Z
6 89 7 needsOnlyBackref Z
8 86 8 entryBB Lorg/jruby/ir/representations/BasicBlock;
9 86 9 savedViz Lorg/jruby/ir/operands/Variable;
10 86 10 savedFrame Lorg/jruby/ir/operands/Variable;
14 33 11 insertIndex I
21 33 12 prologueBB Lorg/jruby/ir/representations/BasicBlock;
22 33 13 sig Lorg/jruby/runtime/Signature;
23 33 14 arityValue I
47 86 11 geb Lorg/jruby/ir/representations/BasicBlock;
48 86 12 gebProcessed Z
50 54 13 exc Lorg/jruby/ir/operands/Variable;
56 85 13 bb Lorg/jruby/ir/representations/BasicBlock;
57 85 15 i Lorg/jruby/ir/instructions/Instr;
58 85 16 instrs Ljava/util/ListIterator<Lorg/jruby/ir/instructions/Instr;>;
MethodParameters:
Name Flags
fic
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.interpreter.FullInterpreterContext);
descriptor: (Lorg/jruby/ir/interpreter/FullInterpreterContext;)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 fic Lorg/jruby/ir/interpreter/FullInterpreterContext;
MethodParameters:
Name Flags
fic
}
SourceFile: "AddCallProtocolInstructions.java"
InnerClasses:
public final EdgeType = org.jruby.ir.representations.CFG$EdgeType of org.jruby.ir.representations.CFG