class java.util.ServiceLoader$ProviderImpl<S> implements java.util.ServiceLoader$Provider<S>
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: java.util.ServiceLoader$ProviderImpl
super_class: java.lang.Object
{
final java.lang.Class<S> service;
descriptor: Ljava/lang/Class;
flags: (0x0010) ACC_FINAL
Signature: Ljava/lang/Class<TS;>;
final java.lang.Class<? extends S> type;
descriptor: Ljava/lang/Class;
flags: (0x0010) ACC_FINAL
Signature: Ljava/lang/Class<+TS;>;
final java.lang.reflect.Method factoryMethod;
descriptor: Ljava/lang/reflect/Method;
flags: (0x0010) ACC_FINAL
final java.lang.reflect.Constructor<? extends S> ctor;
descriptor: Ljava/lang/reflect/Constructor;
flags: (0x0010) ACC_FINAL
Signature: Ljava/lang/reflect/Constructor<+TS;>;
final java.security.AccessControlContext acc;
descriptor: Ljava/security/AccessControlContext;
flags: (0x0010) ACC_FINAL
void <init>(java.lang.Class<S>, java.lang.Class<? extends S>, java.lang.reflect.Method, java.security.AccessControlContext);
descriptor: (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/reflect/Method;Ljava/security/AccessControlContext;)V
flags: (0x0000)
Code:
stack=2, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield java.util.ServiceLoader$ProviderImpl.service:Ljava/lang/Class;
2: aload 0
aload 2
putfield java.util.ServiceLoader$ProviderImpl.type:Ljava/lang/Class;
3: aload 0
aload 3
putfield java.util.ServiceLoader$ProviderImpl.factoryMethod:Ljava/lang/reflect/Method;
4: aload 0
aconst_null
putfield java.util.ServiceLoader$ProviderImpl.ctor:Ljava/lang/reflect/Constructor;
5: aload 0
aload 4
putfield java.util.ServiceLoader$ProviderImpl.acc:Ljava/security/AccessControlContext;
6: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Ljava/util/ServiceLoader$ProviderImpl<TS;>;
0 7 1 service Ljava/lang/Class<TS;>;
0 7 2 type Ljava/lang/Class<+TS;>;
0 7 3 factoryMethod Ljava/lang/reflect/Method;
0 7 4 acc Ljava/security/AccessControlContext;
Signature: (Ljava/lang/Class<TS;>;Ljava/lang/Class<+TS;>;Ljava/lang/reflect/Method;Ljava/security/AccessControlContext;)V
MethodParameters:
Name Flags
service
type
factoryMethod
acc
void <init>(java.lang.Class<S>, java.lang.Class<? extends S>, java.lang.reflect.Constructor<? extends S>, java.security.AccessControlContext);
descriptor: (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/reflect/Constructor;Ljava/security/AccessControlContext;)V
flags: (0x0000)
Code:
stack=2, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield java.util.ServiceLoader$ProviderImpl.service:Ljava/lang/Class;
2: aload 0
aload 2
putfield java.util.ServiceLoader$ProviderImpl.type:Ljava/lang/Class;
3: aload 0
aconst_null
putfield java.util.ServiceLoader$ProviderImpl.factoryMethod:Ljava/lang/reflect/Method;
4: aload 0
aload 3
putfield java.util.ServiceLoader$ProviderImpl.ctor:Ljava/lang/reflect/Constructor;
5: aload 0
aload 4
putfield java.util.ServiceLoader$ProviderImpl.acc:Ljava/security/AccessControlContext;
6: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Ljava/util/ServiceLoader$ProviderImpl<TS;>;
0 7 1 service Ljava/lang/Class<TS;>;
0 7 2 type Ljava/lang/Class<+TS;>;
0 7 3 ctor Ljava/lang/reflect/Constructor<+TS;>;
0 7 4 acc Ljava/security/AccessControlContext;
Signature: (Ljava/lang/Class<TS;>;Ljava/lang/Class<+TS;>;Ljava/lang/reflect/Constructor<+TS;>;Ljava/security/AccessControlContext;)V
MethodParameters:
Name Flags
service
type
ctor
acc
public java.lang.Class<? extends S> type();
descriptor: ()Ljava/lang/Class;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield java.util.ServiceLoader$ProviderImpl.type:Ljava/lang/Class;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/ServiceLoader$ProviderImpl<TS;>;
Signature: ()Ljava/lang/Class<+TS;>;
public S get();
descriptor: ()Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield java.util.ServiceLoader$ProviderImpl.factoryMethod:Ljava/lang/reflect/Method;
ifnull 2
1: aload 0
invokevirtual java.util.ServiceLoader$ProviderImpl.invokeFactoryMethod:()Ljava/lang/Object;
areturn
2: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.util.ServiceLoader$ProviderImpl.newInstance:()Ljava/lang/Object;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/util/ServiceLoader$ProviderImpl<TS;>;
Signature: ()TS;
private S invokeFactoryMethod();
descriptor: ()Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=5, args_size=1
start local 0 0: aconst_null
astore 1
start local 1 1: aconst_null
astore 2
start local 2 2: aload 0
getfield java.util.ServiceLoader$ProviderImpl.acc:Ljava/security/AccessControlContext;
ifnonnull 8
3: aload 0
getfield java.util.ServiceLoader$ProviderImpl.factoryMethod:Ljava/lang/reflect/Method;
aconst_null
iconst_0
anewarray java.lang.Object
invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
astore 1
4: goto 15
StackMap locals: java.util.ServiceLoader$ProviderImpl java.lang.Object java.lang.Throwable
StackMap stack: java.lang.Throwable
5: astore 3
start local 3 6: aload 3
astore 2
end local 3 7: goto 15
8: StackMap locals:
StackMap stack:
new java.util.ServiceLoader$ProviderImpl$1
dup
aload 0
invokespecial java.util.ServiceLoader$ProviderImpl$1.<init>:(Ljava/util/ServiceLoader$ProviderImpl;)V
astore 3
start local 3 9: aload 3
aload 0
getfield java.util.ServiceLoader$ProviderImpl.acc:Ljava/security/AccessControlContext;
invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;
astore 1
10: goto 15
StackMap locals: java.util.ServiceLoader$ProviderImpl java.lang.Object java.lang.Throwable java.security.PrivilegedExceptionAction
StackMap stack: java.lang.Throwable
11: astore 4
start local 4 12: aload 4
instanceof java.security.PrivilegedActionException
ifeq 14
13: aload 4
invokevirtual java.lang.Throwable.getCause:()Ljava/lang/Throwable;
astore 4
14: StackMap locals: java.lang.Throwable
StackMap stack:
aload 4
astore 2
end local 4 end local 3 15: StackMap locals:
StackMap stack:
aload 2
ifnull 19
16: aload 2
instanceof java.lang.reflect.InvocationTargetException
ifeq 18
17: aload 2
invokevirtual java.lang.Throwable.getCause:()Ljava/lang/Throwable;
astore 2
18: StackMap locals:
StackMap stack:
aload 0
getfield java.util.ServiceLoader$ProviderImpl.service:Ljava/lang/Class;
new java.lang.StringBuilder
dup
invokespecial java.lang.StringBuilder.<init>:()V
aload 0
getfield java.util.ServiceLoader$ProviderImpl.factoryMethod:Ljava/lang/reflect/Method;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " failed"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 2
invokestatic java.util.ServiceLoader.fail:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Throwable;)V
19: StackMap locals:
StackMap stack:
aload 1
ifnonnull 21
20: aload 0
getfield java.util.ServiceLoader$ProviderImpl.service:Ljava/lang/Class;
new java.lang.StringBuilder
dup
invokespecial java.lang.StringBuilder.<init>:()V
aload 0
getfield java.util.ServiceLoader$ProviderImpl.factoryMethod:Ljava/lang/reflect/Method;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " returned null"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic java.util.ServiceLoader.fail:(Ljava/lang/Class;Ljava/lang/String;)V
21: StackMap locals:
StackMap stack:
aload 1
astore 3
start local 3 22: aload 3
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 this Ljava/util/ServiceLoader$ProviderImpl<TS;>;
1 23 1 result Ljava/lang/Object;
2 23 2 exc Ljava/lang/Throwable;
6 7 3 x Ljava/lang/Throwable;
9 15 3 pa Ljava/security/PrivilegedExceptionAction<*>;
12 15 4 x Ljava/lang/Throwable;
22 23 3 p TS;
Exception table:
from to target type
3 4 5 Class java.lang.Throwable
9 10 11 Class java.lang.Throwable
Signature: ()TS;
private S newInstance();
descriptor: ()Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=5, args_size=1
start local 0 0: aconst_null
astore 1
start local 1 1: aconst_null
astore 2
start local 2 2: aload 0
getfield java.util.ServiceLoader$ProviderImpl.acc:Ljava/security/AccessControlContext;
ifnonnull 8
3: aload 0
getfield java.util.ServiceLoader$ProviderImpl.ctor:Ljava/lang/reflect/Constructor;
iconst_0
anewarray java.lang.Object
invokevirtual java.lang.reflect.Constructor.newInstance:([Ljava/lang/Object;)Ljava/lang/Object;
astore 1
4: goto 15
StackMap locals: java.util.ServiceLoader$ProviderImpl java.lang.Object java.lang.Throwable
StackMap stack: java.lang.Throwable
5: astore 3
start local 3 6: aload 3
astore 2
end local 3 7: goto 15
8: StackMap locals:
StackMap stack:
new java.util.ServiceLoader$ProviderImpl$2
dup
aload 0
invokespecial java.util.ServiceLoader$ProviderImpl$2.<init>:(Ljava/util/ServiceLoader$ProviderImpl;)V
astore 3
start local 3 9: aload 3
aload 0
getfield java.util.ServiceLoader$ProviderImpl.acc:Ljava/security/AccessControlContext;
invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;
astore 1
10: goto 15
StackMap locals: java.util.ServiceLoader$ProviderImpl java.lang.Object java.lang.Throwable java.security.PrivilegedExceptionAction
StackMap stack: java.lang.Throwable
11: astore 4
start local 4 12: aload 4
instanceof java.security.PrivilegedActionException
ifeq 14
13: aload 4
invokevirtual java.lang.Throwable.getCause:()Ljava/lang/Throwable;
astore 4
14: StackMap locals: java.lang.Throwable
StackMap stack:
aload 4
astore 2
end local 4 end local 3 15: StackMap locals:
StackMap stack:
aload 2
ifnull 22
16: aload 2
instanceof java.lang.reflect.InvocationTargetException
ifeq 18
17: aload 2
invokevirtual java.lang.Throwable.getCause:()Ljava/lang/Throwable;
astore 2
18: StackMap locals:
StackMap stack:
aload 0
getfield java.util.ServiceLoader$ProviderImpl.ctor:Ljava/lang/reflect/Constructor;
invokevirtual java.lang.reflect.Constructor.getDeclaringClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
astore 3
start local 3 19: aload 0
getfield java.util.ServiceLoader$ProviderImpl.service:Ljava/lang/Class;
20: new java.lang.StringBuilder
dup
ldc "Provider "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " could not be instantiated"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 2
21: invokestatic java.util.ServiceLoader.fail:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Throwable;)V
end local 3 22: StackMap locals:
StackMap stack:
aload 1
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 this Ljava/util/ServiceLoader$ProviderImpl<TS;>;
1 23 1 p TS;
2 23 2 exc Ljava/lang/Throwable;
6 7 3 x Ljava/lang/Throwable;
9 15 3 pa Ljava/security/PrivilegedExceptionAction<TS;>;
12 15 4 x Ljava/lang/Throwable;
19 22 3 cn Ljava/lang/String;
Exception table:
from to target type
3 4 5 Class java.lang.Throwable
9 10 11 Class java.lang.Throwable
Signature: ()TS;
public int hashCode();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: iconst_3
anewarray java.lang.Object
dup
iconst_0
aload 0
getfield java.util.ServiceLoader$ProviderImpl.service:Ljava/lang/Class;
aastore
dup
iconst_1
aload 0
getfield java.util.ServiceLoader$ProviderImpl.type:Ljava/lang/Class;
aastore
dup
iconst_2
aload 0
getfield java.util.ServiceLoader$ProviderImpl.acc:Ljava/security/AccessControlContext;
aastore
invokestatic java.util.Objects.hash:([Ljava/lang/Object;)I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/ServiceLoader$ProviderImpl<TS;>;
public boolean equals(java.lang.Object);
descriptor: (Ljava/lang/Object;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 1
instanceof java.util.ServiceLoader$ProviderImpl
ifne 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 1
checkcast java.util.ServiceLoader$ProviderImpl
astore 2
start local 2 3: aload 0
getfield java.util.ServiceLoader$ProviderImpl.service:Ljava/lang/Class;
aload 2
getfield java.util.ServiceLoader$ProviderImpl.service:Ljava/lang/Class;
if_acmpne 7
4: aload 0
getfield java.util.ServiceLoader$ProviderImpl.type:Ljava/lang/Class;
aload 2
getfield java.util.ServiceLoader$ProviderImpl.type:Ljava/lang/Class;
if_acmpne 7
5: aload 0
getfield java.util.ServiceLoader$ProviderImpl.acc:Ljava/security/AccessControlContext;
aload 2
getfield java.util.ServiceLoader$ProviderImpl.acc:Ljava/security/AccessControlContext;
invokestatic java.util.Objects.equals:(Ljava/lang/Object;Ljava/lang/Object;)Z
ifeq 7
6: iconst_1
ireturn
StackMap locals: java.util.ServiceLoader$ProviderImpl
StackMap stack:
7: iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Ljava/util/ServiceLoader$ProviderImpl<TS;>;
0 8 1 ob Ljava/lang/Object;
3 8 2 that Ljava/util/ServiceLoader$ProviderImpl<*>;
MethodParameters:
Name Flags
ob
}
Signature: <S:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/ServiceLoader$Provider<TS;>;
SourceFile: "ServiceLoader.java"
NestHost: java.util.ServiceLoader
InnerClasses:
public abstract Provider = java.util.ServiceLoader$Provider of java.util.ServiceLoader
private ProviderImpl = java.util.ServiceLoader$ProviderImpl of java.util.ServiceLoader
java.util.ServiceLoader$ProviderImpl$1
java.util.ServiceLoader$ProviderImpl$2