Author: kohsuke
Date: Tue Jan  3 23:42:14 2006
New Revision: 365854

URL: http://svn.apache.org/viewcvs?rev=365854&view=rev
Log:
fixed indentation to conform to the Apache standard 4 SP indentation.

Modified:
    
jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/asm/AsmClassTransformer.java
    
jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/asm/ContinuationMethodAdapter.java
    
jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/asm/ContinuationMethodAnalyzer.java

Modified: 
jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/asm/AsmClassTransformer.java
URL: 
http://svn.apache.org/viewcvs/jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/asm/AsmClassTransformer.java?rev=365854&r1=365853&r2=365854&view=diff
==============================================================================
--- 
jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/asm/AsmClassTransformer.java
 (original)
+++ 
jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/asm/AsmClassTransformer.java
 Tue Jan  3 23:42:14 2006
@@ -34,40 +34,40 @@
  */
 public final class AsmClassTransformer implements ResourceTransformer {
     private final static Log log = 
LogFactory.getLog(AsmClassTransformer.class);
-    
 
-    public byte[] transform( InputStream is) throws IOException {
-      return transform( new ClassReader(is));
+
+    public byte[] transform(InputStream is) throws IOException {
+        return transform(new ClassReader(is));
     }
-    
-    public byte[] transform( final byte[] original ) {
-      return transform( new ClassReader(original));
+
+    public byte[] transform(final byte[] original) {
+        return transform(new ClassReader(original));
     }
-    
-    private byte[] transform( ClassReader cr ) {
+
+    private byte[] transform(ClassReader cr) {
         // final ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS);
         final ClassWriter cw = new ClassWriter(true, false);
 
         // print bytecode before transformation
         // cr.accept(new TraceClassVisitor(new ContinuationClassAdapter(this, 
cw), new PrintWriter(System.out)), false);
-        
+
         // prints bytecode after transformation
         // cr.accept(new ContinuationClassAdapter(this, new 
TraceClassVisitor(cw, new PrintWriter(System.err))), 0);
         // cr.accept(new ContinuationClassAdapter(this, new 
TraceClassVisitor(cw, new PrintWriter(System.err))), false);
 
-        cr.accept(new ContinuationClassAdapter(new CheckClassAdapter( cw)), 
false);
-        
+        cr.accept(new ContinuationClassAdapter(new CheckClassAdapter(cw)), 
false);
+
         byte[] bytecode = cw.toByteArray();
-        
+
         // CheckClassAdapter.verify(new ClassReader(bytecode), true);
         // new ClassReader(bytecode).accept(new ASMifierClassVisitor(new 
PrintWriter(System.err)), false);
-        
+
         // ClassWriter cww = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
         // new ClassReader(bytecode).accept(cww, ClassReader.SKIP_DEBUG);
         // new ClassReader(cww.toByteArray()).accept(new TraceClassVisitor(new 
PrintWriter(System.err)), 0);
-        
+
         return bytecode;
     }
-    
+
 }
 

Modified: 
jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/asm/ContinuationMethodAdapter.java
URL: 
http://svn.apache.org/viewcvs/jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/asm/ContinuationMethodAdapter.java?rev=365854&r1=365853&r2=365854&view=diff
==============================================================================
--- 
jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/asm/ContinuationMethodAdapter.java
 (original)
+++ 
jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/asm/ContinuationMethodAdapter.java
 Tue Jan  3 23:42:14 2006
@@ -35,295 +35,295 @@
  * @author Evgueni Koulechov
  */
 public final class ContinuationMethodAdapter extends MethodAdapter implements 
Opcodes {
-  private static final String STACK_RECORDER = 
Type.getInternalName(StackRecorder.class);
-  private static final String POP_METHOD = "pop";
-  private static final String PUSH_METHOD = "push";
-
-  private final Analyzer analyzer;
-  private Label startLabel = new Label();
-  private final List labels;
-  private final List nodes;
-  private final int stackRecorderVar;
-  private final boolean isStatic;
-  private final String methodDesc;
-
-  private int currentIndex = 0;
-  private Frame currentFrame = null;
-
-  
-  public ContinuationMethodAdapter(ContinuationMethodAnalyzer a) {
-    super(a.mv);
-    this.analyzer = a.analyzer;
-    this.labels = a.labels;
-    this.nodes = a.nodes;
-    this.stackRecorderVar = a.stackRecorderVar;
-    this.isStatic = (a.access & ACC_STATIC)>0;
-    this.methodDesc = a.desc;
-  }
-
-  public void visitCode() {
-    mv.visitCode();
-    
-    int fsize = labels.size();        
-    Label[] restoreLabels = new Label[fsize];
-    for( int i = 0; i < restoreLabels.length; i++) {
-      restoreLabels[i] = new Label();
+    private static final String STACK_RECORDER = 
Type.getInternalName(StackRecorder.class);
+    private static final String POP_METHOD = "pop";
+    private static final String PUSH_METHOD = "push";
+
+    private final Analyzer analyzer;
+    private Label startLabel = new Label();
+    private final List labels;
+    private final List nodes;
+    private final int stackRecorderVar;
+    private final boolean isStatic;
+    private final String methodDesc;
+
+    private int currentIndex = 0;
+    private Frame currentFrame = null;
+
+
+    public ContinuationMethodAdapter(ContinuationMethodAnalyzer a) {
+        super(a.mv);
+        this.analyzer = a.analyzer;
+        this.labels = a.labels;
+        this.nodes = a.nodes;
+        this.stackRecorderVar = a.stackRecorderVar;
+        this.isStatic = (a.access & ACC_STATIC) > 0;
+        this.methodDesc = a.desc;
     }
-    
-    // verify if restoring
-    Label l0 = new Label();
-    
-    mv.visitMethodInsn(INVOKESTATIC, STACK_RECORDER, "get", 
"()L"+STACK_RECORDER+";");
-    mv.visitInsn(DUP);
-    mv.visitVarInsn(ASTORE, stackRecorderVar);
-    mv.visitLabel(startLabel);
-
-    mv.visitJumpInsn(IFNULL, l0);
-    mv.visitVarInsn(ALOAD, stackRecorderVar);
-    mv.visitFieldInsn(GETFIELD, STACK_RECORDER, "isRestoring", "Z");
-    mv.visitJumpInsn(IFEQ, l0);
-    
-    mv.visitVarInsn(ALOAD, stackRecorderVar);
-    mv.visitMethodInsn(INVOKEVIRTUAL, STACK_RECORDER, POP_METHOD + "Int", 
"()I");
-    mv.visitTableSwitchInsn(0, fsize-1, l0, restoreLabels);
-
-    // switch cases
-    for(int i = 0; i<fsize; i++) {
-      Label frameLabel = (Label) labels.get(i);
-      mv.visitLabel(restoreLabels[i]);
-      
-      MethodInsnNode mnode = (MethodInsnNode) nodes.get(i);
-      
-      Frame frame = analyzer.getFrames()[analyzer.getIndex(mnode)];
-
-      // locals
-      int lsize = frame.getLocals();
-      for( int j = lsize-1; j>=0; j--) {
-        BasicValue value = (BasicValue) frame.getLocal(j);
-        if(value==null) {
-          mv.visitInsn(ACONST_NULL);
-          mv.visitVarInsn(ASTORE, j);
-        } else if(value==BasicValue.UNINITIALIZED_VALUE) {
-          // TODO ??
-        } else if(value==BasicValue.RETURNADDRESS_VALUE) {
-          // TODO ??
-        } else {
-            mv.visitVarInsn(ALOAD, stackRecorderVar);
-            Type type = value.getType();
-            if(value.isReference()) {
-                mv.visitMethodInsn(INVOKEVIRTUAL, STACK_RECORDER, POP_METHOD + 
"Object", "()Ljava/lang/Object;");
-                Type t = value.getType();
-                String desc = t.getDescriptor();
-                if(desc.charAt(0)=='[') {
-                    mv.visitTypeInsn(CHECKCAST, desc);
+
+    public void visitCode() {
+        mv.visitCode();
+
+        int fsize = labels.size();
+        Label[] restoreLabels = new Label[fsize];
+        for (int i = 0; i < restoreLabels.length; i++) {
+            restoreLabels[i] = new Label();
+        }
+
+        // verify if restoring
+        Label l0 = new Label();
+
+        mv.visitMethodInsn(INVOKESTATIC, STACK_RECORDER, "get", "()L" + 
STACK_RECORDER + ";");
+        mv.visitInsn(DUP);
+        mv.visitVarInsn(ASTORE, stackRecorderVar);
+        mv.visitLabel(startLabel);
+
+        mv.visitJumpInsn(IFNULL, l0);
+        mv.visitVarInsn(ALOAD, stackRecorderVar);
+        mv.visitFieldInsn(GETFIELD, STACK_RECORDER, "isRestoring", "Z");
+        mv.visitJumpInsn(IFEQ, l0);
+
+        mv.visitVarInsn(ALOAD, stackRecorderVar);
+        mv.visitMethodInsn(INVOKEVIRTUAL, STACK_RECORDER, POP_METHOD + "Int", 
"()I");
+        mv.visitTableSwitchInsn(0, fsize - 1, l0, restoreLabels);
+
+        // switch cases
+        for (int i = 0; i < fsize; i++) {
+            Label frameLabel = (Label) labels.get(i);
+            mv.visitLabel(restoreLabels[i]);
+
+            MethodInsnNode mnode = (MethodInsnNode) nodes.get(i);
+
+            Frame frame = analyzer.getFrames()[analyzer.getIndex(mnode)];
+
+            // locals
+            int lsize = frame.getLocals();
+            for (int j = lsize - 1; j >= 0; j--) {
+                BasicValue value = (BasicValue) frame.getLocal(j);
+                if (value == null) {
+                    mv.visitInsn(ACONST_NULL);
+                    mv.visitVarInsn(ASTORE, j);
+                } else if (value == BasicValue.UNINITIALIZED_VALUE) {
+                    // TODO ??
+                } else if (value == BasicValue.RETURNADDRESS_VALUE) {
+                    // TODO ??
                 } else {
-                    mv.visitTypeInsn(CHECKCAST, t.getInternalName());
+                    mv.visitVarInsn(ALOAD, stackRecorderVar);
+                    Type type = value.getType();
+                    if (value.isReference()) {
+                        mv.visitMethodInsn(INVOKEVIRTUAL, STACK_RECORDER, 
POP_METHOD + "Object", "()Ljava/lang/Object;");
+                        Type t = value.getType();
+                        String desc = t.getDescriptor();
+                        if (desc.charAt(0) == '[') {
+                            mv.visitTypeInsn(CHECKCAST, desc);
+                        } else {
+                            mv.visitTypeInsn(CHECKCAST, t.getInternalName());
+                        }
+                        mv.visitVarInsn(ASTORE, j);
+
+                    } else {
+                        mv.visitMethodInsn(INVOKEVIRTUAL, STACK_RECORDER, 
getPopMethod(type), "()" + type.getDescriptor());
+                        mv.visitVarInsn(type.getOpcode(ISTORE), j);
+                    }
                 }
-                mv.visitVarInsn(ASTORE, j);
-                
-            } else {
-                mv.visitMethodInsn(INVOKEVIRTUAL, STACK_RECORDER, 
getPopMethod(type), "()"+type.getDescriptor());
-                mv.visitVarInsn(type.getOpcode(ISTORE), j);
             }
-        }
-      }
 
-      // stack
-      int argSize = Type.getArgumentTypes(mnode.desc).length;
-      int ownerSize = mnode.getOpcode()==INVOKESTATIC ? 0 : 1;  // TODO
-      int initSize = mnode.name.equals("<init>") ? 2 : 0;
-      int ssize = frame.getStackSize();
-      for(int j = 0; j < ssize - argSize - ownerSize - initSize; j++) {
-        BasicValue value = (BasicValue) frame.getStack(j);
-        if(value==null) {
-          mv.visitInsn(ACONST_NULL);
-        } else if(value==BasicValue.UNINITIALIZED_VALUE) {
-          // TODO ??
-        } else if(value==BasicValue.RETURNADDRESS_VALUE) {
-          // TODO ??
-        } else if(value.isReference()) {
-          mv.visitVarInsn(ALOAD, stackRecorderVar);
-          mv.visitMethodInsn(INVOKEVIRTUAL, STACK_RECORDER, POP_METHOD + 
"Object", "()Ljava/lang/Object;");
-          mv.visitTypeInsn(CHECKCAST, value.getType().getInternalName());
-        } else {
-          Type type = value.getType();
-          mv.visitVarInsn(ALOAD, stackRecorderVar);
-          mv.visitMethodInsn(INVOKEVIRTUAL, STACK_RECORDER, 
getPopMethod(type), "()"+type.getDescriptor());
+            // stack
+            int argSize = Type.getArgumentTypes(mnode.desc).length;
+            int ownerSize = mnode.getOpcode() == INVOKESTATIC ? 0 : 1;  // TODO
+            int initSize = mnode.name.equals("<init>") ? 2 : 0;
+            int ssize = frame.getStackSize();
+            for (int j = 0; j < ssize - argSize - ownerSize - initSize; j++) {
+                BasicValue value = (BasicValue) frame.getStack(j);
+                if (value == null) {
+                    mv.visitInsn(ACONST_NULL);
+                } else if (value == BasicValue.UNINITIALIZED_VALUE) {
+                    // TODO ??
+                } else if (value == BasicValue.RETURNADDRESS_VALUE) {
+                    // TODO ??
+                } else if (value.isReference()) {
+                    mv.visitVarInsn(ALOAD, stackRecorderVar);
+                    mv.visitMethodInsn(INVOKEVIRTUAL, STACK_RECORDER, 
POP_METHOD + "Object", "()Ljava/lang/Object;");
+                    mv.visitTypeInsn(CHECKCAST, 
value.getType().getInternalName());
+                } else {
+                    Type type = value.getType();
+                    mv.visitVarInsn(ALOAD, stackRecorderVar);
+                    mv.visitMethodInsn(INVOKEVIRTUAL, STACK_RECORDER, 
getPopMethod(type), "()" + type.getDescriptor());
+                }
+            }
+
+            if (mnode.getOpcode() != INVOKESTATIC) {
+                mv.visitVarInsn(ALOAD, stackRecorderVar);
+                mv.visitMethodInsn(INVOKEVIRTUAL, STACK_RECORDER, POP_METHOD + 
"Reference", "()Ljava/lang/Object;");
+                mv.visitTypeInsn(CHECKCAST, ((BasicValue) frame.getStack(ssize 
- argSize - 1)).getType().getInternalName());
+            }
+
+            // Create null types for the parameters of the method invocation
+            Type[] paramTypes = Type.getArgumentTypes(mnode.desc);
+            for (int j = 0; j < paramTypes.length; j++) {
+                pushDefault(paramTypes[j]);
+            }
+
+            // continue to the next method
+            mv.visitJumpInsn(GOTO, frameLabel);
         }
-      }
-      
-      if(mnode.getOpcode()!=INVOKESTATIC) {
-        mv.visitVarInsn(ALOAD, stackRecorderVar);
-        mv.visitMethodInsn(INVOKEVIRTUAL, STACK_RECORDER, POP_METHOD + 
"Reference", "()Ljava/lang/Object;");
-        mv.visitTypeInsn(CHECKCAST, ((BasicValue) 
frame.getStack(ssize-argSize-1)).getType().getInternalName());
-      }
-      
-      // Create null types for the parameters of the method invocation
-      Type[] paramTypes = Type.getArgumentTypes(mnode.desc);
-      for (int j = 0; j < paramTypes.length; j++) {
-          pushDefault(paramTypes[j]);
-      }
-      
-      // continue to the next method
-      mv.visitJumpInsn(GOTO, frameLabel);
-    }
-    
-    // end of start block
-    mv.visitLabel(l0);
-  }
-
-  public void visitLabel( Label label) {
-    if(currentIndex<labels.size() && label==labels.get(currentIndex)) {
-      int i = analyzer.getIndex(nodes.get(currentIndex));
-      currentFrame = analyzer.getFrames()[i];
+
+        // end of start block
+        mv.visitLabel(l0);
     }
-    mv.visitLabel(label);
-  }
 
-  public void visitMethodInsn(int opcode, String owner, String name, String 
desc) {
-    mv.visitMethodInsn(opcode, owner, name, desc);
-    
-    if(currentFrame!=null) {
-      Label fl = new Label();
-      
-      mv.visitVarInsn(ALOAD, stackRecorderVar);
-      mv.visitJumpInsn(IFNULL, fl);
-      mv.visitVarInsn(ALOAD, stackRecorderVar);
-      mv.visitFieldInsn(GETFIELD, STACK_RECORDER, "isCapturing", "Z");
-      mv.visitJumpInsn(IFEQ, fl);
-      
-      // save stack
-      Type returnType = Type.getReturnType(desc);
-      boolean hasReturn = returnType!=Type.VOID_TYPE;
-      if(hasReturn) {
-        mv.visitInsn(returnType.getSize()==1 ? POP : POP2);
-      }
-      
-      Type[] params = Type.getArgumentTypes(desc);
-      int argSize = params.length;
-      int ownerSize = opcode==INVOKESTATIC ? 0 : 1;  // TODO
-      int ssize = currentFrame.getStackSize() - argSize - ownerSize;
-      for(int i = 0; i < ssize; i++) {
-        BasicValue value = (BasicValue) currentFrame.getStack(i);
-        if(value==null) {
-          mv.visitInsn(POP);
-        } else if(value==BasicValue.UNINITIALIZED_VALUE) {
-          // TODO ??             
-        } else if(value.isReference()) {
-          mv.visitVarInsn(ALOAD, stackRecorderVar);
-          mv.visitInsn(SWAP);
-          mv.visitMethodInsn(INVOKEVIRTUAL, STACK_RECORDER, PUSH_METHOD + 
"Object", "(Ljava/lang/Object;)V");
-        } else {
-          Type type = value.getType();
-          mv.visitVarInsn(ALOAD, stackRecorderVar);
-          if(type.getSize()>1) {
-            mv.visitInsn(DUP);  // dummy stack entry
-            mv.visitInsn(DUP2_X2);  // swap2 for long/double
-            mv.visitInsn(POP2);
-            mv.visitMethodInsn(INVOKEVIRTUAL, STACK_RECORDER, 
getPushMethod(type), "("+type.getDescriptor()+")V");
-            mv.visitInsn(POP);  // remove dummy stack entry
-          } else {
-            mv.visitInsn(SWAP);
-            mv.visitMethodInsn(INVOKEVIRTUAL, STACK_RECORDER, 
getPushMethod(type), "("+type.getDescriptor()+")V");
-          }
+    public void visitLabel(Label label) {
+        if (currentIndex < labels.size() && label == labels.get(currentIndex)) 
{
+            int i = analyzer.getIndex(nodes.get(currentIndex));
+            currentFrame = analyzer.getFrames()[i];
         }
-      }
-      
-      if(!isStatic) {
-        mv.visitVarInsn(ALOAD, stackRecorderVar);
-        mv.visitVarInsn(ALOAD, 0);
-        mv.visitMethodInsn(INVOKEVIRTUAL, STACK_RECORDER, PUSH_METHOD + 
"Reference", "(Ljava/lang/Object;)V");
-      }
-      
-      // save locals
-      int fsize = currentFrame.getLocals();
-      for( int j = 0; j<fsize; j++) {
-        BasicValue value = (BasicValue) currentFrame.getLocal(j);
-        if(value==null) {
-          // no need to save null
-        } else if(value==BasicValue.UNINITIALIZED_VALUE) {
-          // no need to save uninitialized objects             
-        } else if(value.isReference()) {
-          mv.visitVarInsn(ALOAD, stackRecorderVar);
-          mv.visitVarInsn(ALOAD, j);
-          mv.visitMethodInsn(INVOKEVIRTUAL, STACK_RECORDER, PUSH_METHOD + 
"Object", "(Ljava/lang/Object;)V");
-        } else {
-          mv.visitVarInsn(ALOAD, stackRecorderVar);
-          Type type = value.getType();
-          mv.visitVarInsn(type.getOpcode(ILOAD), j);
-          mv.visitMethodInsn(INVOKEVIRTUAL, STACK_RECORDER, 
getPushMethod(type), "("+type.getDescriptor()+")V");
+        mv.visitLabel(label);
+    }
+
+    public void visitMethodInsn(int opcode, String owner, String name, String 
desc) {
+        mv.visitMethodInsn(opcode, owner, name, desc);
+
+        if (currentFrame != null) {
+            Label fl = new Label();
+
+            mv.visitVarInsn(ALOAD, stackRecorderVar);
+            mv.visitJumpInsn(IFNULL, fl);
+            mv.visitVarInsn(ALOAD, stackRecorderVar);
+            mv.visitFieldInsn(GETFIELD, STACK_RECORDER, "isCapturing", "Z");
+            mv.visitJumpInsn(IFEQ, fl);
+
+            // save stack
+            Type returnType = Type.getReturnType(desc);
+            boolean hasReturn = returnType != Type.VOID_TYPE;
+            if (hasReturn) {
+                mv.visitInsn(returnType.getSize() == 1 ? POP : POP2);
+            }
+
+            Type[] params = Type.getArgumentTypes(desc);
+            int argSize = params.length;
+            int ownerSize = opcode == INVOKESTATIC ? 0 : 1;  // TODO
+            int ssize = currentFrame.getStackSize() - argSize - ownerSize;
+            for (int i = 0; i < ssize; i++) {
+                BasicValue value = (BasicValue) currentFrame.getStack(i);
+                if (value == null) {
+                    mv.visitInsn(POP);
+                } else if (value == BasicValue.UNINITIALIZED_VALUE) {
+                    // TODO ??
+                } else if (value.isReference()) {
+                    mv.visitVarInsn(ALOAD, stackRecorderVar);
+                    mv.visitInsn(SWAP);
+                    mv.visitMethodInsn(INVOKEVIRTUAL, STACK_RECORDER, 
PUSH_METHOD + "Object", "(Ljava/lang/Object;)V");
+                } else {
+                    Type type = value.getType();
+                    mv.visitVarInsn(ALOAD, stackRecorderVar);
+                    if (type.getSize() > 1) {
+                        mv.visitInsn(DUP);  // dummy stack entry
+                        mv.visitInsn(DUP2_X2);  // swap2 for long/double
+                        mv.visitInsn(POP2);
+                        mv.visitMethodInsn(INVOKEVIRTUAL, STACK_RECORDER, 
getPushMethod(type), "(" + type.getDescriptor() + ")V");
+                        mv.visitInsn(POP);  // remove dummy stack entry
+                    } else {
+                        mv.visitInsn(SWAP);
+                        mv.visitMethodInsn(INVOKEVIRTUAL, STACK_RECORDER, 
getPushMethod(type), "(" + type.getDescriptor() + ")V");
+                    }
+                }
+            }
+
+            if (!isStatic) {
+                mv.visitVarInsn(ALOAD, stackRecorderVar);
+                mv.visitVarInsn(ALOAD, 0);
+                mv.visitMethodInsn(INVOKEVIRTUAL, STACK_RECORDER, PUSH_METHOD 
+ "Reference", "(Ljava/lang/Object;)V");
+            }
+
+            // save locals
+            int fsize = currentFrame.getLocals();
+            for (int j = 0; j < fsize; j++) {
+                BasicValue value = (BasicValue) currentFrame.getLocal(j);
+                if (value == null) {
+                    // no need to save null
+                } else if (value == BasicValue.UNINITIALIZED_VALUE) {
+                    // no need to save uninitialized objects
+                } else if (value.isReference()) {
+                    mv.visitVarInsn(ALOAD, stackRecorderVar);
+                    mv.visitVarInsn(ALOAD, j);
+                    mv.visitMethodInsn(INVOKEVIRTUAL, STACK_RECORDER, 
PUSH_METHOD + "Object", "(Ljava/lang/Object;)V");
+                } else {
+                    mv.visitVarInsn(ALOAD, stackRecorderVar);
+                    Type type = value.getType();
+                    mv.visitVarInsn(type.getOpcode(ILOAD), j);
+                    mv.visitMethodInsn(INVOKEVIRTUAL, STACK_RECORDER, 
getPushMethod(type), "(" + type.getDescriptor() + ")V");
+                }
+            }
+
+            mv.visitVarInsn(ALOAD, stackRecorderVar);
+            mv.visitIntInsn(BIPUSH, currentIndex);  // TODO optimize to 
iconst_0...
+            mv.visitMethodInsn(INVOKEVIRTUAL, STACK_RECORDER, "pushInt", 
"(I)V");
+
+            Type methodReturnType = Type.getReturnType(methodDesc);
+            pushDefault(methodReturnType);
+            mv.visitInsn(methodReturnType.getOpcode(IRETURN));
+            mv.visitLabel(fl);
+
+            currentIndex++;
+            currentFrame = null;
         }
-      }
-      
-      mv.visitVarInsn(ALOAD, stackRecorderVar);
-      mv.visitIntInsn(BIPUSH, currentIndex);  // TODO optimize to iconst_0...
-      mv.visitMethodInsn(INVOKEVIRTUAL, STACK_RECORDER, "pushInt", "(I)V");
-      
-      Type methodReturnType = Type.getReturnType(methodDesc);
-      pushDefault(methodReturnType);
-      mv.visitInsn(methodReturnType.getOpcode(IRETURN));              
-      mv.visitLabel(fl);
-      
-      currentIndex++;
-      currentFrame = null;
     }
-  }
 
 
-  public void visitMaxs( int maxStack, int maxLocals) {
-    Label endLabel = new Label();
-    mv.visitLabel(endLabel);
-      
-    mv.visitLocalVariable("__stackRecorder", "L"+STACK_RECORDER+";", null, 
startLabel, endLabel, stackRecorderVar);
-
-    mv.visitMaxs(0,0);
-  }
-
-  void pushDefault(Type type) {
-    switch(type.getSort()) {
-      case Type.VOID:
-        break;
-      case Type.DOUBLE: 
-        mv.visitInsn(DCONST_0);
-        break;
-      case Type.LONG: 
-        mv.visitInsn(LCONST_0);
-        break;
-      case Type.FLOAT: 
-        mv.visitInsn(FCONST_0);
-        break;
-      case Type.OBJECT: 
-      case Type.ARRAY: 
-        mv.visitInsn(ACONST_NULL);
-        break;
-      default:
-        mv.visitInsn(ICONST_0);
-        break;
+    public void visitMaxs(int maxStack, int maxLocals) {
+        Label endLabel = new Label();
+        mv.visitLabel(endLabel);
+
+        mv.visitLocalVariable("__stackRecorder", "L" + STACK_RECORDER + ";", 
null, startLabel, endLabel, stackRecorderVar);
+
+        mv.visitMaxs(0, 0);
     }
-  }
 
-  private static String[] SUFFIXES = {
-      "Object",  // 0 void
-      "Int",     // 1 boolean
-      "Int",     // 2 char
-      "Int",     // 3 byte
-      "Int",     // 4 short
-      "Int",     // 5 int
-      "Float",   // 6 float
-      "Long",    // 7 long
-      "Double",  // 8 double
-      "Object",  // 9 array
-      "Object",  // 10 object
+    void pushDefault(Type type) {
+        switch (type.getSort()) {
+        case Type.VOID:
+            break;
+        case Type.DOUBLE:
+            mv.visitInsn(DCONST_0);
+            break;
+        case Type.LONG:
+            mv.visitInsn(LCONST_0);
+            break;
+        case Type.FLOAT:
+            mv.visitInsn(FCONST_0);
+            break;
+        case Type.OBJECT:
+        case Type.ARRAY:
+            mv.visitInsn(ACONST_NULL);
+            break;
+        default:
+            mv.visitInsn(ICONST_0);
+            break;
+        }
+    }
+
+    private static String[] SUFFIXES = {
+        "Object",  // 0 void
+        "Int",     // 1 boolean
+        "Int",     // 2 char
+        "Int",     // 3 byte
+        "Int",     // 4 short
+        "Int",     // 5 int
+        "Float",   // 6 float
+        "Long",    // 7 long
+        "Double",  // 8 double
+        "Object",  // 9 array
+        "Object",  // 10 object
     };
 
 
-  String getPopMethod(Type type) {
-    return POP_METHOD + SUFFIXES[type.getSort()];
-  }
-
-  String getPushMethod(Type type) {
-      return PUSH_METHOD + SUFFIXES[type.getSort()];
-  }
+    String getPopMethod(Type type) {
+        return POP_METHOD + SUFFIXES[type.getSort()];
+    }
+
+    String getPushMethod(Type type) {
+        return PUSH_METHOD + SUFFIXES[type.getSort()];
+    }
 
 }
 

Modified: 
jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/asm/ContinuationMethodAnalyzer.java
URL: 
http://svn.apache.org/viewcvs/jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/asm/ContinuationMethodAnalyzer.java?rev=365854&r1=365853&r2=365854&view=diff
==============================================================================
--- 
jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/asm/ContinuationMethodAnalyzer.java
 (original)
+++ 
jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/asm/ContinuationMethodAnalyzer.java
 Tue Jan  3 23:42:14 2006
@@ -61,34 +61,34 @@
 
     public ContinuationMethodAnalyzer(String className, ClassVisitor cv,
                                       MethodVisitor mv, int access, String 
name, String desc, String signature, String[] exceptions) {
-        super( access, name, desc, signature, exceptions);
+        super(access, name, desc, signature, exceptions);
         this.className = className;
         this.cv = cv;
         this.mv = mv;
     }
 
-    public void visitMethodInsn( int opcode, String owner, String name, String 
desc) {
-      MethodInsnNode mnode = new MethodInsnNode(opcode, owner, name, desc);
-      if(opcode == INVOKESPECIAL || "<init>".equals(name)) {
-          methods.add(mnode);
-      }
-      if (needsFrameGuard(opcode, owner, name, desc) /* && 
transformer.inScope(owner, name)*/) {
-        Label label = new Label();
-        super.visitLabel(label);
-        labels.add(label);
-        nodes.add(mnode);
-      }
-      instructions.add(mnode);
+    public void visitMethodInsn(int opcode, String owner, String name, String 
desc) {
+        MethodInsnNode mnode = new MethodInsnNode(opcode, owner, name, desc);
+        if (opcode == INVOKESPECIAL || "<init>".equals(name)) {
+            methods.add(mnode);
+        }
+        if (needsFrameGuard(opcode, owner, name, desc) /* && 
transformer.inScope(owner, name)*/) {
+            Label label = new Label();
+            super.visitLabel(label);
+            labels.add(label);
+            nodes.add(mnode);
+        }
+        instructions.add(mnode);
     }
 
     public void visitEnd() {
-        if(instructions.size()==0 || labels.size()==0) {
-          accept(mv);
+        if (instructions.size() == 0 || labels.size() == 0) {
+            accept(mv);
             return;
-          }
+        }
 
-          this.stackRecorderVar = maxLocals;
-          try {
+        this.stackRecorderVar = maxLocals;
+        try {
             moveNew();
 
 //          TraceMethodVisitor mv = new TraceMethodVisitor();
@@ -99,85 +99,85 @@
 //          }
 //          System.err.println();
 
-          // analyzer = new Analyzer(new BasicVerifier());
-          analyzer = new Analyzer(new SimpleVerifier() {
-                  protected Class getClass( Type t) {
-                      try {
-                          if (t.getSort() == Type.ARRAY) {
-                              return 
Class.forName(t.getDescriptor().replace('/', '.'), true, 
Thread.currentThread().getContextClassLoader());
-                          }
-                          return Class.forName(t.getClassName(), true, 
Thread.currentThread().getContextClassLoader());
-                      } catch (ClassNotFoundException e) {
-                          throw new RuntimeException(e.toString());
-                      }
-                  }
-              });
-          analyzer.analyze(className, this);
-          accept(new ContinuationMethodAdapter(this));
-
-        } catch(AnalyzerException ex) {
-          // TODO log the error or fail?
-          ex.printStackTrace();
-          accept(mv);
+            // analyzer = new Analyzer(new BasicVerifier());
+            analyzer = new Analyzer(new SimpleVerifier() {
+                protected Class getClass(Type t) {
+                    try {
+                        if (t.getSort() == Type.ARRAY) {
+                            return 
Class.forName(t.getDescriptor().replace('/', '.'), true, 
Thread.currentThread().getContextClassLoader());
+                        }
+                        return Class.forName(t.getClassName(), true, 
Thread.currentThread().getContextClassLoader());
+                    } catch (ClassNotFoundException e) {
+                        throw new RuntimeException(e.toString());
+                    }
+                }
+            });
+            analyzer.analyze(className, this);
+            accept(new ContinuationMethodAdapter(this));
+
+        } catch (AnalyzerException ex) {
+            // TODO log the error or fail?
+            ex.printStackTrace();
+            accept(mv);
 
         }
     }
 
     void moveNew() throws AnalyzerException {
-      DataflowInterpreter i = new DataflowInterpreter();
-      Analyzer a = new Analyzer(i);
-      a.analyze(className, this);
-
-      HashMap movable = new HashMap();
-
-      Frame[] frames = a.getFrames();
-      for( int j = 0; j < methods.size(); j++) {
-          MethodInsnNode mnode = (MethodInsnNode) methods.get(j);
-          // require to move NEW instruction
-          int n = a.getIndex(mnode);
-          Frame f = frames[n];
-          Type[] args = Type.getArgumentTypes(mnode.desc);
-
-          DataflowValue v = (DataflowValue) 
f.getStack(f.getStackSize()-args.length-1);
-          Set insns = v.insns;
-          for( Iterator it = insns.iterator(); it.hasNext();) {
-            AbstractInsnNode ins = (AbstractInsnNode) it.next();
-            if(ins.getOpcode()==NEW) {
-                movable.put(ins, mnode);
-            } else {
-                // other known patterns
-                int n1 = a.getIndex(ins);
-                if(ins.getOpcode()==DUP) { // <init> with params
-                    AbstractInsnNode ins1 = (AbstractInsnNode) 
instructions.get(n1-1);
-                    if(ins1.getOpcode()==NEW) {
-                        movable.put(ins1, mnode);
-                    }
-                } else if(ins.getOpcode()==SWAP) {  // in exception handler
-                    AbstractInsnNode ins1 = (AbstractInsnNode) 
instructions.get(n1-1);
-                    AbstractInsnNode ins2 = (AbstractInsnNode) 
instructions.get(n1-2);
-                    if(ins1.getOpcode()==DUP_X1 && ins2.getOpcode()==NEW) {
-                        movable.put(ins2, mnode);
+        DataflowInterpreter i = new DataflowInterpreter();
+        Analyzer a = new Analyzer(i);
+        a.analyze(className, this);
+
+        HashMap movable = new HashMap();
+
+        Frame[] frames = a.getFrames();
+        for (int j = 0; j < methods.size(); j++) {
+            MethodInsnNode mnode = (MethodInsnNode) methods.get(j);
+            // require to move NEW instruction
+            int n = a.getIndex(mnode);
+            Frame f = frames[n];
+            Type[] args = Type.getArgumentTypes(mnode.desc);
+
+            DataflowValue v = (DataflowValue) f.getStack(f.getStackSize() - 
args.length - 1);
+            Set insns = v.insns;
+            for (Iterator it = insns.iterator(); it.hasNext();) {
+                AbstractInsnNode ins = (AbstractInsnNode) it.next();
+                if (ins.getOpcode() == NEW) {
+                    movable.put(ins, mnode);
+                } else {
+                    // other known patterns
+                    int n1 = a.getIndex(ins);
+                    if (ins.getOpcode() == DUP) { // <init> with params
+                        AbstractInsnNode ins1 = (AbstractInsnNode) 
instructions.get(n1 - 1);
+                        if (ins1.getOpcode() == NEW) {
+                            movable.put(ins1, mnode);
+                        }
+                    } else if (ins.getOpcode() == SWAP) {  // in exception 
handler
+                        AbstractInsnNode ins1 = (AbstractInsnNode) 
instructions.get(n1 - 1);
+                        AbstractInsnNode ins2 = (AbstractInsnNode) 
instructions.get(n1 - 2);
+                        if (ins1.getOpcode() == DUP_X1 && ins2.getOpcode() == 
NEW) {
+                            movable.put(ins2, mnode);
+                        }
                     }
                 }
-             }
-           }
-      }
+            }
+        }
 
-      int updateMaxStack = 0;
-        for( Iterator it = movable.entrySet().iterator(); it.hasNext();) {
+        int updateMaxStack = 0;
+        for (Iterator it = movable.entrySet().iterator(); it.hasNext();) {
             Map.Entry e = (Map.Entry) it.next();
             AbstractInsnNode node1 = (AbstractInsnNode) e.getKey();
             int n1 = instructions.indexOf(node1);
-            AbstractInsnNode node2 = (AbstractInsnNode) instructions.get(n1+1);
-            AbstractInsnNode node3 = (AbstractInsnNode) instructions.get(n1+2);
+            AbstractInsnNode node2 = (AbstractInsnNode) instructions.get(n1 + 
1);
+            AbstractInsnNode node3 = (AbstractInsnNode) instructions.get(n1 + 
2);
             int producer = node2.getOpcode();
 
             instructions.remove(node1);  // NEW
             boolean requireDup = false;
-            if(producer==DUP) {
+            if (producer == DUP) {
                 instructions.remove(node2);  // DUP
                 requireDup = true;
-            } else if(producer==DUP_X1) {
+            } else if (producer == DUP_X1) {
                 instructions.remove(node2);  // DUP_X1
                 instructions.remove(node3);  // SWAP
                 requireDup = true;
@@ -186,25 +186,25 @@
             MethodInsnNode mnode = (MethodInsnNode) e.getValue();
             int nm = instructions.indexOf(mnode);
 
-            int varOffset = stackRecorderVar+1;
+            int varOffset = stackRecorderVar + 1;
             Type[] args = Type.getArgumentTypes(mnode.desc);
 
             // optimizations for some common cases
-            if(args.length==0) {
+            if (args.length == 0) {
                 instructions.add(nm++, node1);  // NEW
-                if(requireDup) {
+                if (requireDup) {
                     instructions.add(nm++, new InsnNode(DUP));
                 }
                 continue;
             }
 
-            if(args.length==1 && args[0].getSize()==1) {
+            if (args.length == 1 && args[0].getSize() == 1) {
                 instructions.add(nm++, node1);  // NEW
-                if(requireDup) {
+                if (requireDup) {
                     instructions.add(nm++, new InsnNode(DUP));
                     instructions.add(nm++, new InsnNode(DUP2_X1));
                     instructions.add(nm++, new InsnNode(POP2));
-                    updateMaxStack = updateMaxStack<2 ? 2 : updateMaxStack; // 
a two extra slots for temp values
+                    updateMaxStack = updateMaxStack < 2 ? 2 : updateMaxStack; 
// a two extra slots for temp values
                 } else {
                     instructions.add(nm++, new InsnNode(SWAP));
                 }
@@ -212,18 +212,18 @@
             }
 
             // TODO this one untested!
-            if((args.length==1 && args[0].getSize()==2) ||
-               (args.length==2 && args[0].getSize()==1 && 
args[1].getSize()==1)) {
+            if ((args.length == 1 && args[0].getSize() == 2) ||
+                (args.length == 2 && args[0].getSize() == 1 && 
args[1].getSize() == 1)) {
                 instructions.add(nm++, node1);  // NEW
-                if(requireDup) {
+                if (requireDup) {
                     instructions.add(nm++, new InsnNode(DUP));
                     instructions.add(nm++, new InsnNode(DUP2_X2));
                     instructions.add(nm++, new InsnNode(POP2));
-                    updateMaxStack = updateMaxStack<2 ? 2 : updateMaxStack; // 
a two extra slots for temp values
+                    updateMaxStack = updateMaxStack < 2 ? 2 : updateMaxStack; 
// a two extra slots for temp values
                 } else {
                     instructions.add(nm++, new InsnNode(DUP_X2));
                     instructions.add(nm++, new InsnNode(POP));
-                    updateMaxStack = updateMaxStack<1 ? 1 : updateMaxStack; // 
an extra slot for temp value
+                    updateMaxStack = updateMaxStack < 1 ? 1 : updateMaxStack; 
// an extra slot for temp value
                 }
                 continue;
             }
@@ -235,41 +235,41 @@
                 instructions.add(nm++, new VarInsnNode(type.getOpcode(ISTORE), 
varOffset));
                 varOffset += type.getSize();
             }
-            if(varOffset>maxLocals) {
+            if (varOffset > maxLocals) {
                 maxLocals = varOffset;
             }
 
             instructions.add(nm++, node1);  // NEW
-            if(requireDup) {
+            if (requireDup) {
                 instructions.add(nm++, new InsnNode(DUP));
             }
 
             // restore stack
-          for( int j = 0; j < args.length; j++) {
-              Type type = args[j];
-              varOffset -= type.getSize();
-              instructions.add(nm++, new VarInsnNode(type.getOpcode(ILOAD), 
varOffset));
-              // clean up store to avoid memory leak?
-              if(type.getSort()==Type.OBJECT || type.getSort()==Type.ARRAY) {
-                  updateMaxStack = updateMaxStack<1 ? 1 : updateMaxStack; // 
an extra slot for ACONST_NULL
-                  instructions.add(nm++, new InsnNode(ACONST_NULL));
-                  instructions.add(nm++, new 
VarInsnNode(type.getOpcode(ISTORE), varOffset));
-              }
-          }
-      }
+            for (int j = 0; j < args.length; j++) {
+                Type type = args[j];
+                varOffset -= type.getSize();
+                instructions.add(nm++, new VarInsnNode(type.getOpcode(ILOAD), 
varOffset));
+                // clean up store to avoid memory leak?
+                if (type.getSort() == Type.OBJECT || type.getSort() == 
Type.ARRAY) {
+                    updateMaxStack = updateMaxStack < 1 ? 1 : updateMaxStack; 
// an extra slot for ACONST_NULL
+                    instructions.add(nm++, new InsnNode(ACONST_NULL));
+                    instructions.add(nm++, new 
VarInsnNode(type.getOpcode(ISTORE), varOffset));
+                }
+            }
+        }
 
-      maxStack += updateMaxStack;
+        maxStack += updateMaxStack;
     }
 
     // TODO
-    boolean needsFrameGuard( int opcode, String owner, String name, String 
desc ) {
-      if (opcode == Opcodes.INVOKEINTERFACE ||
-          (opcode == Opcodes.INVOKESPECIAL && !"<init>".equals(name)) ||
-          opcode == Opcodes.INVOKESTATIC ||
-          opcode == Opcodes.INVOKEVIRTUAL ) {
-          return true;
-      }
-      return false;
+    boolean needsFrameGuard(int opcode, String owner, String name, String 
desc) {
+        if (opcode == Opcodes.INVOKEINTERFACE ||
+            (opcode == Opcodes.INVOKESPECIAL && !"<init>".equals(name)) ||
+            opcode == Opcodes.INVOKESTATIC ||
+            opcode == Opcodes.INVOKEVIRTUAL) {
+            return true;
+        }
+        return false;
     }
 
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to