commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From kohs...@apache.org
Subject svn commit: r293254 - /jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/bcel/BcelClassTransformer.java
Date Mon, 03 Oct 2005 05:26:38 GMT
Author: kohsuke
Date: Sun Oct  2 22:26:35 2005
New Revision: 293254

URL: http://svn.apache.org/viewcvs?rev=293254&view=rev
Log:
fixed a bug where the instrumentation failed to expand the stack size to the necessary size.
This problem happens when instrumenting a code like:

Object foo(Object a,Object b) {
  return new Something(a,b);
}

Modified:
    jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/bcel/BcelClassTransformer.java

Modified: jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/bcel/BcelClassTransformer.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/bcel/BcelClassTransformer.java?rev=293254&r1=293253&r2=293254&view=diff
==============================================================================
--- jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/bcel/BcelClassTransformer.java
(original)
+++ jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/bcel/BcelClassTransformer.java
Sun Oct  2 22:26:35 2005
@@ -476,6 +476,11 @@
         }
 
         method.setMaxLocals(localVarsSize[0]);
+        // make room for additional 'null' we push on the stack to clear
+        // the local variables that are used during the constructor invocation instrumentation.
+        // ideally we should be able to determine when we need to add +1, but for now just
to be
+        // safe and let's always add this.
+        method.setMaxStack(method.getMaxStack() + 1);
 
         // remove LocalVariableTypeTable attribute until BCEL #33549 is fixed,
         // so that JDK 5.0 classes can be instrumented correctly.
@@ -487,6 +492,9 @@
         }
     }
 
+    /**
+     * Used to instrument the constructor invocation.
+     */
     private InstructionList duplicateStack(MethodGen method, InvokeInstruction invoke, ObjectType
objecttype, int[] localVarsSize) {
         // reconstruction of an uninitialed object to call the constructor.
         final InstructionFactory insFactory = new InstructionFactory(method.getConstantPool());



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Mime
View raw message