class org.aspectj.weaver.World$AspectPrecedenceCalculator
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: org.aspectj.weaver.World$AspectPrecedenceCalculator
super_class: java.lang.Object
{
private final org.aspectj.weaver.World world;
descriptor: Lorg/aspectj/weaver/World;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.Map<org.aspectj.weaver.World$AspectPrecedenceCalculator$PrecedenceCacheKey, java.lang.Integer> cachedResults;
descriptor: Ljava/util/Map;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Map<Lorg/aspectj/weaver/World$AspectPrecedenceCalculator$PrecedenceCacheKey;Ljava/lang/Integer;>;
public void <init>(org.aspectj.weaver.World);
descriptor: (Lorg/aspectj/weaver/World;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield org.aspectj.weaver.World$AspectPrecedenceCalculator.world:Lorg/aspectj/weaver/World;
2: aload 0
new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putfield org.aspectj.weaver.World$AspectPrecedenceCalculator.cachedResults:Ljava/util/Map;
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/aspectj/weaver/World$AspectPrecedenceCalculator;
0 4 1 forSomeWorld Lorg/aspectj/weaver/World;
MethodParameters:
Name Flags
forSomeWorld
public int compareByPrecedence(org.aspectj.weaver.ResolvedType, org.aspectj.weaver.ResolvedType);
descriptor: (Lorg/aspectj/weaver/ResolvedType;Lorg/aspectj/weaver/ResolvedType;)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=11, args_size=3
start local 0 start local 1 start local 2 0: new org.aspectj.weaver.World$AspectPrecedenceCalculator$PrecedenceCacheKey
dup
aload 1
aload 2
invokespecial org.aspectj.weaver.World$AspectPrecedenceCalculator$PrecedenceCacheKey.<init>:(Lorg/aspectj/weaver/ResolvedType;Lorg/aspectj/weaver/ResolvedType;)V
astore 3
start local 3 1: aload 0
getfield org.aspectj.weaver.World$AspectPrecedenceCalculator.cachedResults:Ljava/util/Map;
aload 3
invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
ifeq 3
2: aload 0
getfield org.aspectj.weaver.World$AspectPrecedenceCalculator.cachedResults:Ljava/util/Map;
aload 3
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
ireturn
3: StackMap locals: org.aspectj.weaver.World$AspectPrecedenceCalculator$PrecedenceCacheKey
StackMap stack:
iconst_0
istore 4
start local 4 4: aconst_null
astore 5
start local 5 5: aload 0
getfield org.aspectj.weaver.World$AspectPrecedenceCalculator.world:Lorg/aspectj/weaver/World;
invokevirtual org.aspectj.weaver.World.getCrosscuttingMembersSet:()Lorg/aspectj/weaver/CrosscuttingMembersSet;
invokevirtual org.aspectj.weaver.CrosscuttingMembersSet.getDeclareDominates:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 6
start local 6 6: goto 22
7: StackMap locals: int org.aspectj.weaver.patterns.DeclarePrecedence java.util.Iterator
StackMap stack:
aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.aspectj.weaver.patterns.DeclarePrecedence
astore 7
start local 7 8: aload 7
aload 1
aload 2
invokevirtual org.aspectj.weaver.patterns.DeclarePrecedence.compare:(Lorg/aspectj/weaver/ResolvedType;Lorg/aspectj/weaver/ResolvedType;)I
istore 8
start local 8 9: iload 8
ifeq 22
10: aload 5
ifnonnull 12
11: aload 7
astore 5
12: StackMap locals: org.aspectj.weaver.patterns.DeclarePrecedence int
StackMap stack:
iload 4
ifeq 21
iload 4
iload 8
if_icmpeq 21
13: iconst_2
anewarray org.aspectj.bridge.ISourceLocation
astore 9
start local 9 14: aload 9
iconst_0
aload 5
invokevirtual org.aspectj.weaver.patterns.DeclarePrecedence.getSourceLocation:()Lorg/aspectj/bridge/ISourceLocation;
aastore
15: aload 9
iconst_1
aload 7
invokevirtual org.aspectj.weaver.patterns.DeclarePrecedence.getSourceLocation:()Lorg/aspectj/bridge/ISourceLocation;
aastore
16: new org.aspectj.bridge.Message
dup
new java.lang.StringBuilder
dup
ldc "conflicting declare precedence orderings for aspects: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
17: aload 1
invokevirtual org.aspectj.weaver.ResolvedType.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " and "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 2
invokevirtual org.aspectj.weaver.ResolvedType.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aconst_null
iconst_1
aload 9
18: invokespecial org.aspectj.bridge.Message.<init>:(Ljava/lang/String;Lorg/aspectj/bridge/ISourceLocation;Z[Lorg/aspectj/bridge/ISourceLocation;)V
astore 10
start local 10 19: aload 0
getfield org.aspectj.weaver.World$AspectPrecedenceCalculator.world:Lorg/aspectj/weaver/World;
invokevirtual org.aspectj.weaver.World.getMessageHandler:()Lorg/aspectj/bridge/IMessageHandler;
aload 10
invokeinterface org.aspectj.bridge.IMessageHandler.handleMessage:(Lorg/aspectj/bridge/IMessage;)Z
pop
end local 10 end local 9 20: goto 22
21: StackMap locals:
StackMap stack:
iload 8
istore 4
end local 8 end local 7 22: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 7
end local 6 23: aload 0
getfield org.aspectj.weaver.World$AspectPrecedenceCalculator.cachedResults:Ljava/util/Map;
aload 3
new java.lang.Integer
dup
iload 4
invokespecial java.lang.Integer.<init>:(I)V
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
24: iload 4
ireturn
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 25 0 this Lorg/aspectj/weaver/World$AspectPrecedenceCalculator;
0 25 1 firstAspect Lorg/aspectj/weaver/ResolvedType;
0 25 2 secondAspect Lorg/aspectj/weaver/ResolvedType;
1 25 3 key Lorg/aspectj/weaver/World$AspectPrecedenceCalculator$PrecedenceCacheKey;
4 25 4 order I
5 25 5 orderer Lorg/aspectj/weaver/patterns/DeclarePrecedence;
6 23 6 i Ljava/util/Iterator<Lorg/aspectj/weaver/patterns/Declare;>;
8 22 7 d Lorg/aspectj/weaver/patterns/DeclarePrecedence;
9 22 8 thisOrder I
14 20 9 isls [Lorg/aspectj/bridge/ISourceLocation;
19 20 10 m Lorg/aspectj/bridge/Message;
MethodParameters:
Name Flags
firstAspect
secondAspect
public java.lang.Integer getPrecedenceIfAny(org.aspectj.weaver.ResolvedType, org.aspectj.weaver.ResolvedType);
descriptor: (Lorg/aspectj/weaver/ResolvedType;Lorg/aspectj/weaver/ResolvedType;)Ljava/lang/Integer;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield org.aspectj.weaver.World$AspectPrecedenceCalculator.cachedResults:Ljava/util/Map;
new org.aspectj.weaver.World$AspectPrecedenceCalculator$PrecedenceCacheKey
dup
aload 1
aload 2
invokespecial org.aspectj.weaver.World$AspectPrecedenceCalculator$PrecedenceCacheKey.<init>:(Lorg/aspectj/weaver/ResolvedType;Lorg/aspectj/weaver/ResolvedType;)V
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Integer
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/aspectj/weaver/World$AspectPrecedenceCalculator;
0 1 1 aspect1 Lorg/aspectj/weaver/ResolvedType;
0 1 2 aspect2 Lorg/aspectj/weaver/ResolvedType;
MethodParameters:
Name Flags
aspect1
aspect2
public int compareByPrecedenceAndHierarchy(org.aspectj.weaver.ResolvedType, org.aspectj.weaver.ResolvedType);
descriptor: (Lorg/aspectj/weaver/ResolvedType;Lorg/aspectj/weaver/ResolvedType;)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 1
aload 2
invokevirtual org.aspectj.weaver.ResolvedType.equals:(Ljava/lang/Object;)Z
ifeq 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 2
invokevirtual org.aspectj.weaver.World$AspectPrecedenceCalculator.compareByPrecedence:(Lorg/aspectj/weaver/ResolvedType;Lorg/aspectj/weaver/ResolvedType;)I
istore 3
start local 3 3: iload 3
ifeq 5
4: iload 3
ireturn
5: StackMap locals: int
StackMap stack:
aload 1
aload 2
invokevirtual org.aspectj.weaver.ResolvedType.isAssignableFrom:(Lorg/aspectj/weaver/ResolvedType;)Z
ifeq 7
6: iconst_m1
ireturn
7: StackMap locals:
StackMap stack:
aload 2
aload 1
invokevirtual org.aspectj.weaver.ResolvedType.isAssignableFrom:(Lorg/aspectj/weaver/ResolvedType;)Z
ifeq 9
8: iconst_1
ireturn
9: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/aspectj/weaver/World$AspectPrecedenceCalculator;
0 10 1 firstAspect Lorg/aspectj/weaver/ResolvedType;
0 10 2 secondAspect Lorg/aspectj/weaver/ResolvedType;
3 10 3 ret I
MethodParameters:
Name Flags
firstAspect
secondAspect
}
SourceFile: "World.java"
NestHost: org.aspectj.weaver.World
InnerClasses:
private AspectPrecedenceCalculator = org.aspectj.weaver.World$AspectPrecedenceCalculator of org.aspectj.weaver.World
private PrecedenceCacheKey = org.aspectj.weaver.World$AspectPrecedenceCalculator$PrecedenceCacheKey of org.aspectj.weaver.World$AspectPrecedenceCalculator