[jboss-cvs] JBossAS SVN: r61760 - in projects/aop/trunk/aop/src/main/org/jboss/aop: instrument and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Mar 27 16:50:45 EDT 2007
Author: kabir.khan at jboss.com
Date: 2007-03-27 16:50:44 -0400 (Tue, 27 Mar 2007)
New Revision: 61760
Modified:
projects/aop/trunk/aop/src/main/org/jboss/aop/ClassAdvisor.java
projects/aop/trunk/aop/src/main/org/jboss/aop/GeneratedClassAdvisor.java
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorInstrumentor.java
Log:
[JBAOP-378] Optimization of InstanceAdvisor creation. We do not need to recreate the method tables, just copy them from the parent advisor
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/ClassAdvisor.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/ClassAdvisor.java 2007-03-27 20:16:24 UTC (rev 61759)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/ClassAdvisor.java 2007-03-27 20:50:44 UTC (rev 61760)
@@ -1446,7 +1446,7 @@
addDeclaredMethods(superclass);
}
- private void createMethodTables()
+ protected void createMethodTables()
throws Exception
{
populateMethodTables(clazz.getSuperclass());
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/GeneratedClassAdvisor.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/GeneratedClassAdvisor.java 2007-03-27 20:16:24 UTC (rev 61759)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/GeneratedClassAdvisor.java 2007-03-27 20:50:44 UTC (rev 61760)
@@ -136,6 +136,7 @@
}
}
+ @Override
protected void resolveMethodPointcut(MethodInterceptors newMethodInterceptors, AdviceBinding binding)
{
super.resolveMethodPointcut(newMethodInterceptors, binding);
@@ -155,6 +156,7 @@
SecurityActions.setAccessible(mi.getAdvisedMethod());
}
+ @Override
protected MethodInterceptors initializeMethodChain()
{
//We have all the advised methods here, need to get all the others here too
@@ -192,6 +194,7 @@
SecurityActions.setAccessible(ci.getConstructor());
}
+ @Override
protected ArrayList initializeConstructorChain()
{
if (super.initialized)
@@ -209,6 +212,7 @@
constructionInfos.add(ci);
}
+ @Override
protected ArrayList initializeConstructionChain()
{
if (super.initialized)
@@ -228,6 +232,7 @@
SecurityActions.setAccessible(fi.getAdvisedField());
}
+ @Override
protected ArrayList initializeFieldReadChain()
{
return mergeFieldInfos(fieldReadInfos, true);
@@ -240,6 +245,7 @@
SecurityActions.setAccessible(fi.getAdvisedField());
}
+ @Override
protected ArrayList initializeFieldWriteChain()
{
return mergeFieldInfos(fieldWriteInfos, false);
@@ -290,6 +296,7 @@
return newInfos;
}
+ @Override
protected void finalizeMethodChain(MethodInterceptors newMethodInterceptors)
{
TLongObjectHashMap newMethodInfos = new TLongObjectHashMap();
@@ -323,6 +330,7 @@
}
+ @Override
protected void finalizeFieldReadChain(ArrayList newFieldInfos)
{
for (int i = 0; i < newFieldInfos.size(); i++)
@@ -333,6 +341,7 @@
}
}
+ @Override
protected void finalizeFieldWriteChain(ArrayList newFieldInfos)
{
for (int i = 0; i < newFieldInfos.size(); i++)
@@ -343,7 +352,7 @@
}
}
-
+ @Override
protected void finalizeConstructorChain(ArrayList newConstructorInfos)
{
for (int i = 0; i < newConstructorInfos.size(); i++)
@@ -354,6 +363,7 @@
}
}
+ @Override
protected void finalizeConstructionChain(ArrayList newConstructionInfos)
{
for (int i = 0; i < newConstructionInfos.size(); i++)
@@ -364,25 +374,28 @@
}
}
+ @Override
protected void finalizeMethodCalledByMethodInterceptorChain(MethodByMethodInfo info)
{
MethodByMethodJoinPointGenerator generator = getJoinPointGenerator(info);
finalizeChainAndRebindJoinPoint(info, generator);
}
+ @Override
protected void finalizeConCalledByMethodInterceptorChain(ConByMethodInfo info)
{
ConByMethodJoinPointGenerator generator = getJoinPointGenerator(info);
finalizeChainAndRebindJoinPoint(info, generator);
}
+ @Override
protected void finalizeConCalledByConInterceptorChain(ConByConInfo info)
{
ConByConJoinPointGenerator generator = getJoinPointGenerator(info);
finalizeChainAndRebindJoinPoint(info, generator);
}
-
+ @Override
protected void finalizeMethodCalledByConInterceptorChain(MethodByConInfo info)
{
//An extra level of indirection since we distinguish between callers of method depending on
@@ -531,6 +544,7 @@
* Override default behaviour of when a pointcut is matched, populate the factories since this
* is what is needed for generating the optimized invocation method
*/
+ @Override
protected void pointcutResolved(JoinPointInfo info, AdviceBinding binding, Joinpoint joinpoint)
{
ArrayList curr = info.getInterceptorChain();
@@ -566,6 +580,7 @@
generator.rebindJoinpoint(info);
}
+ @Override
public String toString()
{
Class clazz = this.getClass();
@@ -605,6 +620,7 @@
* If this is an instance advisor, will check with parent class advisor if the aspect
* is already registered. If so, we should use the one from the parent advisor
*/
+ @Override
public Object getPerClassAspect(AspectDefinition def)
{
ClassAdvisor parentAdvisor = getParentAdvisor();
@@ -664,6 +680,7 @@
/**
* @see Advisor#chainOverridingForInheritedMethods()
*/
+ @Override
public boolean chainOverridingForInheritedMethods()
{
return true;
@@ -680,6 +697,24 @@
}
return instance;
}
+
+ /**
+ * Optimization so that when we create class advisors we don't have to bind the method chains again
+ */
+ @Override
+ protected void createMethodTables() throws Exception
+ {
+ GeneratedClassAdvisor parent = getParentAdvisor();
+ if (parent != null)
+ {
+ this.unadvisedMethods = parent.unadvisedMethods;
+ this.advisedMethods = parent.advisedMethods;
+ }
+ else
+ {
+ super.createMethodTables();
+ }
+ }
}
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorInstrumentor.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorInstrumentor.java 2007-03-27 20:16:24 UTC (rev 61759)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorInstrumentor.java 2007-03-27 20:50:44 UTC (rev 61760)
@@ -105,6 +105,7 @@
return genInstanceAdvisor;
}
+ @Override
public boolean transform(CtClass clazz, ClassAdvisor advisor)
{
try
@@ -144,6 +145,7 @@
}
}
+ @Override
protected void intitialiseTransformers()
{
callerTransformer = new GeneratedAdvisorCallerTransformer(this, manager);
@@ -153,6 +155,7 @@
methodExecutionTransformer = new GeneratedAdvisorMethodExecutionTransformer(this);
}
+ @Override
protected CtMethod createMixinInvokeMethod(CtClass clazz, CtClass mixinClass, String initializer, CtMethod method, long hash)
throws CannotCompileException, NotFoundException, Exception
{
More information about the jboss-cvs-commits
mailing list