[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