]> source.dussan.org Git - javassist.git/commitdiff
improved the extensibility of CodeConverter
authorchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>
Tue, 14 Apr 2009 00:37:13 +0000 (00:37 +0000)
committerchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>
Tue, 14 Apr 2009 00:37:13 +0000 (00:37 +0000)
git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@477 30ef5769-5b8d-40dd-aea6-55b5d6557bb3

src/main/javassist/CodeConverter.java
src/main/javassist/convert/Transformer.java

index 91f5657a2da84b66ce8cc882878f7a02ce8b9bf5..44881d5dbd609d39592350055ede938a1bb86e73 100644 (file)
@@ -512,16 +512,25 @@ public class CodeConverter {
         }
 
         int locals = 0;
+        int stack = 0;
         for (t = transformers; t != null; t = t.getNext()) {
             int s = t.extraLocals();
             if (s > locals)
                 locals = s;
+
+            s = t.extraStack();
+            if (s > stack)
+                stack = s;
         }
 
         for (t = transformers; t != null; t = t.getNext())
             t.clean();
 
-        codeAttr.setMaxLocals(codeAttr.getMaxLocals() + locals);
+        if (locals > 0)
+            codeAttr.setMaxLocals(codeAttr.getMaxLocals() + locals);
+
+        if (stack > 0)
+            codeAttr.setMaxStack(codeAttr.getMaxStack() + stack);
     }
 
     /**
@@ -529,7 +538,7 @@ public class CodeConverter {
      * as array access replacements.
      *
      * @author <a href="kabir.khan@jboss.com">Kabir Khan</a>
-     * @version $Revision: 1.15 $
+     * @version $Revision: 1.16 $
      */
     public interface ArrayAccessReplacementMethodNames
     {
@@ -638,7 +647,7 @@ public class CodeConverter {
      * accesses to array elements.
      *
      * @author <a href="kabir.khan@jboss.com">Kabir Khan</a>
-     * @version $Revision: 1.15 $
+     * @version $Revision: 1.16 $
      */
     public static class DefaultArrayAccessReplacementMethodNames
         implements ArrayAccessReplacementMethodNames
index 1095cf5b2c14285d8a5344085a2b2d340677ec62..4dd3807570a2717a28c1e7aaaafb7d682dff6d12 100644 (file)
@@ -51,4 +51,6 @@ public abstract class Transformer implements Opcode {
                 ConstPool cp) throws CannotCompileException, BadBytecode;
 
     public int extraLocals() { return 0; }
+
+    public int extraStack() { return 0; }
 }