public abstract class org.jruby.anno.MethodDescriptor<T>
minor version: 0
major version: 59
flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
this_class: org.jruby.anno.MethodDescriptor
super_class: java.lang.Object
{
public static final java.lang.String IRUBYOBJECT_ARRAY_CLASS_NAME;
descriptor: Ljava/lang/String;
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: "[Lorg.jruby.runtime.builtin.IRubyObject;"
public final boolean isStatic;
descriptor: Z
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
public final boolean hasContext;
descriptor: Z
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
public final boolean hasBlock;
descriptor: Z
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
public final boolean hasVarArgs;
descriptor: Z
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
public final int actualRequired;
descriptor: I
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
public final int arity;
descriptor: I
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
public final int required;
descriptor: I
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
public final int optional;
descriptor: I
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
public final boolean rest;
descriptor: Z
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
public final org.jruby.anno.JRubyMethod anno;
descriptor: Lorg/jruby/anno/JRubyMethod;
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
public final int modifiers;
descriptor: I
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
public final java.lang.String declaringClassName;
descriptor: Ljava/lang/String;
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
public final java.lang.String declaringClassPath;
descriptor: Ljava/lang/String;
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
public final java.lang.String name;
descriptor: Ljava/lang/String;
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
public final java.lang.String rubyName;
descriptor: Ljava/lang/String;
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
public static final int MAX_REQUIRED_UNBOXED_ARITY;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 3
protected abstract <A extends java.lang.annotation.Annotation> A getAnnotation(T, java.lang.Class<A>);
descriptor: (Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
Signature: <A::Ljava/lang/annotation/Annotation;>(TT;Ljava/lang/Class<TA;>;)TA;
MethodParameters:
Name Flags
methodObject
annotationType
protected abstract int getModifiers();
descriptor: (Ljava/lang/Object;)I
flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
Signature: (TT;)I
MethodParameters:
Name Flags
methodObject
protected abstract java.lang.String getDeclaringClassName(T);
descriptor: (Ljava/lang/Object;)Ljava/lang/String;
flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
Signature: (TT;)Ljava/lang/String;
MethodParameters:
Name Flags
methodObject
protected abstract java.lang.String getSimpleName(T);
descriptor: (Ljava/lang/Object;)Ljava/lang/String;
flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
Signature: (TT;)Ljava/lang/String;
MethodParameters:
Name Flags
methodObject
protected abstract boolean hasContext();
descriptor: (Ljava/lang/Object;)Z
flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
Signature: (TT;)Z
MethodParameters:
Name Flags
methodObject
protected abstract boolean hasBlock();
descriptor: (Ljava/lang/Object;)Z
flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
Signature: (TT;)Z
MethodParameters:
Name Flags
methodObject
protected abstract int parameterCount();
descriptor: (Ljava/lang/Object;)I
flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
Signature: (TT;)I
MethodParameters:
Name Flags
methodObject
protected abstract java.lang.String parameterAsString(T, int);
descriptor: (Ljava/lang/Object;I)Ljava/lang/String;
flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
Signature: (TT;I)Ljava/lang/String;
MethodParameters:
Name Flags
methodObject
index
public void <init>();
descriptor: (Ljava/lang/Object;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=5, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 0
aload 1
ldc Lorg/jruby/anno/JRubyMethod;
invokevirtual org.jruby.anno.MethodDescriptor.getAnnotation:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
checkcast org.jruby.anno.JRubyMethod
putfield org.jruby.anno.MethodDescriptor.anno:Lorg/jruby/anno/JRubyMethod;
2: aload 0
aload 0
aload 1
invokevirtual org.jruby.anno.MethodDescriptor.getModifiers:(Ljava/lang/Object;)I
putfield org.jruby.anno.MethodDescriptor.modifiers:I
3: aload 0
aload 0
aload 1
invokevirtual org.jruby.anno.MethodDescriptor.getDeclaringClassName:(Ljava/lang/Object;)Ljava/lang/String;
putfield org.jruby.anno.MethodDescriptor.declaringClassName:Ljava/lang/String;
4: aload 0
aload 0
getfield org.jruby.anno.MethodDescriptor.declaringClassName:Ljava/lang/String;
bipush 46
bipush 47
invokevirtual java.lang.String.replace:(CC)Ljava/lang/String;
putfield org.jruby.anno.MethodDescriptor.declaringClassPath:Ljava/lang/String;
5: aload 0
aload 0
aload 1
invokevirtual org.jruby.anno.MethodDescriptor.getSimpleName:(Ljava/lang/Object;)Ljava/lang/String;
putfield org.jruby.anno.MethodDescriptor.name:Ljava/lang/String;
6: aload 0
getfield org.jruby.anno.MethodDescriptor.anno:Lorg/jruby/anno/JRubyMethod;
invokeinterface org.jruby.anno.JRubyMethod.name:()[Ljava/lang/String;
astore 2
start local 2 7: aload 0
aload 2
ifnull 8
aload 2
arraylength
ifle 8
aload 2
iconst_0
aaload
goto 9
StackMap locals: org.jruby.anno.MethodDescriptor java.lang.Object java.lang.String[]
StackMap stack: org.jruby.anno.MethodDescriptor
8: aload 0
getfield org.jruby.anno.MethodDescriptor.name:Ljava/lang/String;
StackMap locals: org.jruby.anno.MethodDescriptor java.lang.Object java.lang.String[]
StackMap stack: org.jruby.anno.MethodDescriptor java.lang.String
9: putfield org.jruby.anno.MethodDescriptor.rubyName:Ljava/lang/String;
10: aload 0
aload 0
getfield org.jruby.anno.MethodDescriptor.modifiers:I
invokestatic java.lang.reflect.Modifier.isStatic:(I)Z
putfield org.jruby.anno.MethodDescriptor.isStatic:Z
11: aload 0
aload 0
aload 1
invokevirtual org.jruby.anno.MethodDescriptor.hasContext:(Ljava/lang/Object;)Z
putfield org.jruby.anno.MethodDescriptor.hasContext:Z
12: aload 0
aload 0
aload 1
invokevirtual org.jruby.anno.MethodDescriptor.hasBlock:(Ljava/lang/Object;)Z
putfield org.jruby.anno.MethodDescriptor.hasBlock:Z
13: aload 0
aload 1
invokevirtual org.jruby.anno.MethodDescriptor.parameterCount:(Ljava/lang/Object;)I
istore 3
start local 3 14: aload 0
getfield org.jruby.anno.MethodDescriptor.hasContext:Z
ifeq 22
15: aload 0
getfield org.jruby.anno.MethodDescriptor.isStatic:Z
ifeq 17
iload 3
iconst_2
if_icmplt 16
aload 0
aload 1
iconst_1
invokevirtual org.jruby.anno.MethodDescriptor.parameterAsString:(Ljava/lang/Object;I)Ljava/lang/String;
ldc "org.jruby.runtime.builtin.IRubyObject"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 17
16: StackMap locals: int
StackMap stack:
new java.lang.RuntimeException
dup
new java.lang.StringBuilder
dup
ldc "static method without self argument: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
17: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.anno.MethodDescriptor.hasBlock:Z
ifeq 20
18: aload 0
aload 0
aload 1
iload 3
iconst_2
isub
invokevirtual org.jruby.anno.MethodDescriptor.parameterAsString:(Ljava/lang/Object;I)Ljava/lang/String;
ldc "[Lorg.jruby.runtime.builtin.IRubyObject;"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
putfield org.jruby.anno.MethodDescriptor.hasVarArgs:Z
19: goto 32
20: StackMap locals:
StackMap stack:
aload 0
aload 0
aload 1
iload 3
iconst_1
isub
invokevirtual org.jruby.anno.MethodDescriptor.parameterAsString:(Ljava/lang/Object;I)Ljava/lang/String;
ldc "[Lorg.jruby.runtime.builtin.IRubyObject;"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
putfield org.jruby.anno.MethodDescriptor.hasVarArgs:Z
21: goto 32
22: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.anno.MethodDescriptor.isStatic:Z
ifeq 24
iload 3
iconst_1
if_icmplt 23
aload 0
aload 1
iconst_0
invokevirtual org.jruby.anno.MethodDescriptor.parameterAsString:(Ljava/lang/Object;I)Ljava/lang/String;
ldc "org.jruby.runtime.builtin.IRubyObject"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 24
23: StackMap locals:
StackMap stack:
new java.lang.RuntimeException
dup
new java.lang.StringBuilder
dup
ldc "static method without self argument: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
24: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.anno.MethodDescriptor.hasBlock:Z
ifeq 29
25: aload 0
iload 3
iconst_1
if_icmple 26
aload 0
aload 1
iload 3
iconst_2
isub
invokevirtual org.jruby.anno.MethodDescriptor.parameterAsString:(Ljava/lang/Object;I)Ljava/lang/String;
ldc "[Lorg.jruby.runtime.builtin.IRubyObject;"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 26
iconst_1
goto 27
StackMap locals:
StackMap stack: org.jruby.anno.MethodDescriptor
26: iconst_0
StackMap locals: org.jruby.anno.MethodDescriptor java.lang.Object java.lang.String[] int
StackMap stack: org.jruby.anno.MethodDescriptor int
27: putfield org.jruby.anno.MethodDescriptor.hasVarArgs:Z
28: goto 32
29: StackMap locals:
StackMap stack:
aload 0
iload 3
ifle 30
aload 0
aload 1
iload 3
iconst_1
isub
invokevirtual org.jruby.anno.MethodDescriptor.parameterAsString:(Ljava/lang/Object;I)Ljava/lang/String;
ldc "[Lorg.jruby.runtime.builtin.IRubyObject;"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 30
iconst_1
goto 31
StackMap locals:
StackMap stack: org.jruby.anno.MethodDescriptor
30: iconst_0
StackMap locals: org.jruby.anno.MethodDescriptor java.lang.Object java.lang.String[] int
StackMap stack: org.jruby.anno.MethodDescriptor int
31: putfield org.jruby.anno.MethodDescriptor.hasVarArgs:Z
32: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield org.jruby.anno.MethodDescriptor.anno:Lorg/jruby/anno/JRubyMethod;
invokeinterface org.jruby.anno.JRubyMethod.optional:()I
putfield org.jruby.anno.MethodDescriptor.optional:I
33: aload 0
aload 0
getfield org.jruby.anno.MethodDescriptor.anno:Lorg/jruby/anno/JRubyMethod;
invokeinterface org.jruby.anno.JRubyMethod.rest:()Z
putfield org.jruby.anno.MethodDescriptor.rest:Z
34: aload 0
aload 0
getfield org.jruby.anno.MethodDescriptor.anno:Lorg/jruby/anno/JRubyMethod;
invokeinterface org.jruby.anno.JRubyMethod.required:()I
putfield org.jruby.anno.MethodDescriptor.required:I
35: aload 0
getfield org.jruby.anno.MethodDescriptor.optional:I
ifne 45
aload 0
getfield org.jruby.anno.MethodDescriptor.rest:Z
ifne 45
36: iload 3
istore 4
start local 4 37: iload 4
ifne 40
38: aload 0
iconst_0
putfield org.jruby.anno.MethodDescriptor.actualRequired:I
39: goto 56
40: StackMap locals: int
StackMap stack:
aload 0
getfield org.jruby.anno.MethodDescriptor.isStatic:Z
ifeq 41
iinc 4 -1
41: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.anno.MethodDescriptor.hasContext:Z
ifeq 42
iinc 4 -1
42: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.anno.MethodDescriptor.hasBlock:Z
ifeq 43
iinc 4 -1
43: StackMap locals:
StackMap stack:
aload 0
iload 4
putfield org.jruby.anno.MethodDescriptor.actualRequired:I
end local 4 44: goto 56
45: StackMap locals:
StackMap stack:
iload 3
istore 4
start local 4 46: iload 4
ifne 49
47: aload 0
iconst_0
putfield org.jruby.anno.MethodDescriptor.actualRequired:I
48: goto 54
49: StackMap locals: int
StackMap stack:
aload 0
getfield org.jruby.anno.MethodDescriptor.isStatic:Z
ifeq 50
iinc 4 -1
50: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.anno.MethodDescriptor.hasContext:Z
ifeq 51
iinc 4 -1
51: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.anno.MethodDescriptor.hasBlock:Z
ifeq 52
iinc 4 -1
52: StackMap locals:
StackMap stack:
iinc 4 -1
53: aload 0
iload 4
putfield org.jruby.anno.MethodDescriptor.actualRequired:I
54: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.anno.MethodDescriptor.actualRequired:I
ifeq 56
55: new java.lang.RuntimeException
dup
new java.lang.StringBuilder
dup
ldc "Combining specific args with IRubyObject[] is not yet supported: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
end local 4 56: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.anno.MethodDescriptor.required:I
aload 0
getfield org.jruby.anno.MethodDescriptor.actualRequired:I
invokestatic java.lang.Math.max:(II)I
istore 4
start local 4 57: aload 0
aload 0
getfield org.jruby.anno.MethodDescriptor.optional:I
ifgt 58
aload 0
getfield org.jruby.anno.MethodDescriptor.rest:Z
ifeq 59
StackMap locals: org.jruby.anno.MethodDescriptor java.lang.Object java.lang.String[] int int
StackMap stack: org.jruby.anno.MethodDescriptor
58: iload 4
iconst_1
iadd
ineg
goto 60
StackMap locals:
StackMap stack: org.jruby.anno.MethodDescriptor
59: iload 4
StackMap locals: org.jruby.anno.MethodDescriptor java.lang.Object java.lang.String[] int int
StackMap stack: org.jruby.anno.MethodDescriptor int
60: putfield org.jruby.anno.MethodDescriptor.arity:I
61: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 62 0 this Lorg/jruby/anno/MethodDescriptor<TT;>;
0 62 1 methodObject TT;
7 62 2 names [Ljava/lang/String;
14 62 3 parameterCount I
37 44 4 args I
46 56 4 args I
57 62 4 arityRequired I
Signature: (TT;)V
MethodParameters:
Name Flags
methodObject
public int calculateSpecificCallArity();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.anno.MethodDescriptor.optional:I
ifne 5
aload 0
getfield org.jruby.anno.MethodDescriptor.rest:Z
ifne 5
1: aload 0
getfield org.jruby.anno.MethodDescriptor.required:I
ifne 3
2: aload 0
getfield org.jruby.anno.MethodDescriptor.actualRequired:I
iconst_3
if_icmpgt 5
aload 0
getfield org.jruby.anno.MethodDescriptor.actualRequired:I
ireturn
3: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.anno.MethodDescriptor.required:I
iflt 5
aload 0
getfield org.jruby.anno.MethodDescriptor.required:I
iconst_3
if_icmpgt 5
4: aload 0
getfield org.jruby.anno.MethodDescriptor.required:I
ireturn
5: StackMap locals:
StackMap stack:
iconst_m1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/jruby/anno/MethodDescriptor<TT;>;
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/Object;
SourceFile: "MethodDescriptor.java"