| Modifier and Type | Class and Description |
|---|---|
| private static class | |
| private static class |
| Modifier and Type | Field and Description |
|---|---|
| private String | |
| private boolean | |
| public static boolean | |
| private BcelVar[] | |
| pack-priv BcelVar | |
| private List | |
| pack-priv boolean | |
| private final LazyMethodGen | |
| private boolean | |
| private Map | |
| private int | |
| private static final String[] | |
| private ShadowRange | |
| private int | |
| private Map | |
| private BcelVar | |
| private Map | |
| private BcelVar | |
| private BcelVar | |
| private BcelVar | |
| private Map | |
| private Map | |
| private final BcelWorld |
| Access | Constructor and Description |
|---|---|
| public | BcelShadow(BcelWorld world, Shadow.
This generates an unassociated shadow, rooted in a particular method but not rooted to any particular point in the code. |
| Modifier and Type | Method and Description |
|---|---|
| public void | |
| private void | |
| private Type[] | |
| private Type[] | |
| public boolean | |
| private boolean | |
| private boolean | |
| private boolean | |
| public BcelShadow | |
| private LazyMethodGen | createShadowMethodGen(String newMethodName, int visibilityModifier, List<String> parameterNames, boolean beingPlacedInInterface)
The new method always static. |
| pack-priv InstructionList | |
| private boolean | Returns: true if managed to remove themThe new/dup (or new/dup_x1/swap) are removed and will be readded later (after the advice call) by the caller of this method. |
| public void | |
| public UnresolvedType | |
| pack-priv LazyMethodGen | extractShadowInstructionsIntoNewMethod(String
name for the new method extractedMethodName, int visibility modifiers for the new method extractedMethodVisibilityModifier, ISourceLocation source location of the advice affecting the shadow adviceSourceLocation, List<String> parameterNames, boolean is this new method going into an interface beingPlacedInInterface)Extract the instructions in the shadow to a new method. |
| private ResolvedMember | |
| private static String | |
| private ResolvedMember | |
| private ResolvedMember | |
| private List | |
| private BcelVar | Returns: the variable holding the return value, if neededlist of all the return instructions in the shadow returns, InstructionList instruction list into which the return instructions should be generated returnInstructions)Given a list containing all the return instruction handles for this shadow, finds the last return instruction and copies it, making this the ultimate return. |
| public BcelVar | |
| public BcelVar | |
| private int | |
| public String | |
| private InstructionList | getAfterReturningAdviceDispatchInstructions(BcelAdvice munger, InstructionHandle firstInstructionInReturnSequence)
Get the list of instructions used to dispatch to the after advice |
| protected ResolvedType[] | |
| public Var | getArgAnnotationVar(int i, UnresolvedType forAnnotationType)
Implements abstract org. |
| public Var | |
| public LazyClassGen | |
| public Member | |
| public LazyMethodGen | |
| public Shadow | |
| public ResolvedType | |
| public InstructionFactory | |
| public World | |
| public Var | getKindedAnnotationVar(UnresolvedType forAnnotationType)
Implements abstract org. |
| public ShadowRange | |
| public Member | |
| private InstructionList | getRedoneProceedCall(InstructionFactory fact, LazyMethodGen callbackMethod, BcelAdvice munger, LazyMethodGen localAdviceMethod, List<BcelVar> argVarList)
|
| private InstructionList | getRedoneProceedCallForAnnotationStyle(InstructionFactory fact, LazyMethodGen callbackMethod, BcelAdvice munger, LazyMethodGen localAdviceMethod, List<BcelVar> argVarList, boolean isProceedWithArgs)
Annotation style handling for inlining. |
| protected ResolvedMember | |
| public int | |
| public ISourceLocation | |
| private Type[] | |
| public Var | getTargetAnnotationVar(UnresolvedType forAnnotationType)
Implements abstract org. |
| public Var | getTargetVar()
Implements abstract org. |
| public Var | getThisAnnotationVar(UnresolvedType forAnnotationType)
Implements abstract org. |
| public BcelVar | getThisAspectInstanceVar(ResolvedType aspectType)
Implements abstract org. |
| public BcelVar | |
| public final Var | |
| public BcelVar | |
| public BcelVar | getThisJoinPointStaticPartBcelVar(final boolean
true to have the enclosingJpStaticPart isEnclosingJp)Get the Var for the xxxxJpStaticPart, xxx = this or enclosing |
| public final Var | getThisJoinPointStaticPartVar()
Implements abstract org. |
| public Var | |
| public Var | |
| public Var | getWithinAnnotationVar(UnresolvedType forAnnotationType)
Implements abstract org. |
| public Var | getWithinCodeAnnotationVar(UnresolvedType forAnnotationType)
Implements abstract org. |
| public BcelWorld | |
| private boolean | |
| public void | |
| public void | |
| public void | |
| public void | initializeKindedAnnotationVars()
By determining what "kind" of shadow we are, we can find out the annotations on the appropriate element (method, field, constructor, type). |
| public void | |
| public void | |
| public void | |
| pack-priv void | |
| private void | |
| public void | |
| public void | |
| public void | |
| private BcelVar | insertAdviceInstructionsForBindingReturningParameter(InstructionList advice)
If the after() returning(Foo f) form is used, bind the return value to the parameter. |
| private boolean | isAnnotationStylePassingProceedingJoinPointOutOfAdvice(BcelAdvice munger, boolean hasDynamicTest, LazyMethodGen adviceMethod)
Check if the advice method passes a pjp parameter out via an invoke instruction - if so we can't risk inlining. |
| public boolean | |
| private boolean | |
| pack-priv InstructionList | |
| public static BcelShadow | |
| private InstructionList | |
| public static BcelShadow | makeArrayConstructorCall(BcelWorld world, LazyMethodGen enclosingMethod, InstructionHandle arrayInstruction, BcelShadow enclosingShadow)
|
| pack-priv InstructionList | |
| private LazyMethodGen | makeClosureClassAndReturnConstructor(String closureClassName, LazyMethodGen
the method we will call back to when our run method gets called. callbackMethod, IntMap A map from state position to proceed argument position. May be non covering on state position. proceedMap)
|
| private InstructionList | |
| public static BcelShadow | makeConstructorCall(BcelWorld world, LazyMethodGen enclosingMethod, InstructionHandle callHandle, BcelShadow enclosingShadow)
|
| public static BcelShadow | makeConstructorExecution(BcelWorld world, LazyMethodGen enclosingMethod, InstructionHandle justBeforeStart)
|
| public static BcelShadow | makeExceptionHandler(BcelWorld world, ExceptionRange exceptionRange, LazyMethodGen enclosingMethod, InstructionHandle startOfHandler, BcelShadow enclosingShadow)
Make the shadow for an exception handler. |
| public static BcelShadow | makeFieldGet(BcelWorld world, ResolvedMember field, LazyMethodGen enclosingMethod, InstructionHandle getHandle, BcelShadow enclosingShadow)
|
| public static BcelShadow | makeFieldSet(BcelWorld world, ResolvedMember field, LazyMethodGen enclosingMethod, InstructionHandle setHandle, BcelShadow enclosingShadow)
|
| public static BcelShadow | makeIfaceInitialization(BcelWorld world, LazyMethodGen constructor, Member interfaceConstructorSignature)
create an init join point associated w/ an interface in the body of a constructor |
| public static BcelShadow | makeMethodCall(BcelWorld world, LazyMethodGen enclosingMethod, InstructionHandle callHandle, BcelShadow enclosingShadow)
|
| public static BcelShadow | |
| public static BcelShadow | |
| public static BcelShadow | makeMonitorEnter(BcelWorld world, LazyMethodGen enclosingMethod, InstructionHandle monitorInstruction, BcelShadow enclosingShadow)
|
| public static BcelShadow | makeMonitorExit(BcelWorld world, LazyMethodGen enclosingMethod, InstructionHandle monitorInstruction, BcelShadow enclosingShadow)
|
| private IntMap | |
| private IntMap | |
| public static BcelShadow | |
| public static BcelShadow | makeShadowForMethodCall(BcelWorld world, LazyMethodGen enclosingMethod, InstructionHandle callHandle, BcelShadow enclosingShadow, Shadow.
|
| public static BcelShadow | |
| public static BcelShadow | makeUnfinishedInitialization(BcelWorld world, LazyMethodGen
The constructor starting this initialization. constructor)Create an initialization join point associated with a constructor, but not with any body of code yet. |
| public static BcelShadow | |
| protected void | prepareForMungers()
Overrides org. |
| public void | |
| public static void | |
| private void | |
| private void | retargetReturnInstruction(boolean hasReturningParameter, BcelVar returnValueVar, InstructionHandle gotoTarget, InstructionHandle returnHandle)
Helper method for weaveAfterReturning Each return instruction in the method body is retargeted by calling this method. |
| private boolean | |
| public void | |
| public void | |
| public boolean | terminatesWithReturn()
If the end of my range has no real instructions following then my context needs a return at the end. |
| public void | |
| public void | weaveAfterReturning(BcelAdvice munger)
The basic strategy here is to add a set of instructions at the end of the shadow range that dispatch the advice, and then return whatever the shadow was going to return anyway. |
| public void | |
| public void | |
| public void | |
| pack-priv void | |
| public void | |
| public void | |
| public void | weavePerTypeWithinAspectInitialization(final BcelAdvice munger, UnresolvedType t)
Causes the aspect instance to be *set* for later retrievable through localAspectof()/aspectOf() |
| public void |