commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Torsten Curdt <tcu...@apache.org>
Subject Re: [JAVAFLOW] Running a Javaflow example
Date Sun, 23 Aug 2009 17:10:53 GMT
In the latest trunk javaflow switched to use the ASM engine instead of
the BCEL one by default. There is still some work to do. But maybe
give the BCEL one a try.

cheers
--
Torsten

On Tue, Aug 18, 2009 at 02:15, Hiroshi Yamauchi<yamauchi@google.com> wrote:
> Hi,
>
> I'm trying to run a javaflow example code. But it's been unsuccessful so far.
>
> I'm basically following this blog post:
> http://blogs.sun.com/sundararajan/entry/continuations_for_java
>
> I built javaflow-1.0-SNAPSHOT.jar using maven and downloaded
> commons-logging-1.1.1.jar and asm-all-3.2.jar.
>
> Here's what I did:
>
> $ cat Test.java
> import org.apache.commons.javaflow.*;
>
> class Test {
>  static class MyRunnable implements Runnable {
>   public void run() {
>     System.out.println("run started!");
>     for( int i=0; i < 10; i++ ) {
>       echo(i);
>     }
>   }
>
>   private void echo(int x) {
>     System.out.println("echo " + x);
>     Continuation.suspend();
>   }
>  }
>
>  public static void main(String[] args) {
>   System.out.println("main started");
>   Continuation c = Continuation.startWith(new MyRunnable());
>   System.out.println("in main after continuation return");
>   while (c != null) {
>     c = Continuation.continueWith(c);
>     System.out.println("in main");
>   }
>  }
> }
> $ javac -cp ../target/javaflow-1.0-SNAPSHOT.jar Test.java
> $ jar cvf Test.jar Test.class Test\$MyRunnable.class
> added manifest
> adding: Test.class(in = 882) (out= 516)(deflated 41%)
> adding: Test$MyRunnable.class(in = 903) (out= 563)(deflated 37%)
> $ java -cp ../target/javaflow-1.0-SNAPSHOT.jar:../lib/commons-logging-1.1.1.jar:../lib/asm-all-3.2.jar
>  org.apache.commons.javaflow.utils.RewritingUtils Test.jar
> Test-instrumented.jar
> rewriting Test.jar
> org.objectweb.asm.tree.analysis.AnalyzerException: Error at
> instruction 8: Cannot pop operand off an empty stack.
>       at org.objectweb.asm.tree.analysis.Analyzer.analyze(Unknown Source)
>       at org.apache.commons.javaflow.bytecode.transformation.asm.ContinuationMethodAnalyzer$2.analyze(ContinuationMethodAnalyzer.java:124)
>       at org.apache.commons.javaflow.bytecode.transformation.asm.ContinuationMethodAnalyzer.visitEnd(ContinuationMethodAnalyzer.java:135)
>       at org.objectweb.asm.ClassReader.accept(Unknown Source)
>       at org.objectweb.asm.ClassReader.accept(Unknown Source)
>       at org.apache.commons.javaflow.bytecode.transformation.asm.AsmClassTransformer.transform(AsmClassTransformer.java:53)
>       at org.apache.commons.javaflow.bytecode.transformation.asm.AsmClassTransformer.transform(AsmClassTransformer.java:40)
>       at org.apache.commons.javaflow.utils.RewritingUtils.rewriteJar(RewritingUtils.java:108)
>       at org.apache.commons.javaflow.utils.RewritingUtils.rewriteJar(RewritingUtils.java:71)
>       at org.apache.commons.javaflow.utils.RewritingUtils.main(RewritingUtils.java:181)
> Caused by: java.lang.IndexOutOfBoundsException: Cannot pop operand off
> an empty stack.
>       at org.objectweb.asm.tree.analysis.Frame.pop(Unknown Source)
>       at org.objectweb.asm.tree.analysis.Frame.execute(Unknown Source)
>       at org.apache.commons.javaflow.bytecode.transformation.asm.MonitoringFrame.execute(MonitoringFrame.java:70)
>       ... 10 more
> org.objectweb.asm.tree.analysis.AnalyzerException: Error at
> instruction 8: Cannot pop operand off an empty stack.
>       at org.objectweb.asm.tree.analysis.Analyzer.analyze(Unknown Source)
>       at org.objectweb.asm.util.CheckMethodAdapter$1.visitEnd(Unknown Source)
>       at org.objectweb.asm.util.CheckMethodAdapter.visitEnd(Unknown Source)
>       at org.objectweb.asm.tree.MethodNode.accept(Unknown Source)
>       at org.apache.commons.javaflow.bytecode.transformation.asm.ContinuationMethodAnalyzer.visitEnd(ContinuationMethodAnalyzer.java:141)
>       at org.objectweb.asm.ClassReader.accept(Unknown Source)
>       at org.objectweb.asm.ClassReader.accept(Unknown Source)
>       at org.apache.commons.javaflow.bytecode.transformation.asm.AsmClassTransformer.transform(AsmClassTransformer.java:53)
>       at org.apache.commons.javaflow.bytecode.transformation.asm.AsmClassTransformer.transform(AsmClassTransformer.java:40)
>       at org.apache.commons.javaflow.utils.RewritingUtils.rewriteJar(RewritingUtils.java:108)
>       at org.apache.commons.javaflow.utils.RewritingUtils.rewriteJar(RewritingUtils.java:71)
>       at org.apache.commons.javaflow.utils.RewritingUtils.main(RewritingUtils.java:181)
> Caused by: java.lang.IndexOutOfBoundsException: Cannot pop operand off
> an empty stack.
>       at org.objectweb.asm.tree.analysis.Frame.pop(Unknown Source)
>       at org.objectweb.asm.tree.analysis.Frame.execute(Unknown Source)
>       ... 12 more
> Exception in thread "main" java.lang.RuntimeException: Error at
> instruction 8: Cannot pop operand off an empty stack.
> main([Ljava/lang/String;)V
> 00000 R .  :  :    L0
> 00001 R .  :  :     LINENUMBER 19 L0
> 00002 R .  :  :     GETSTATIC java/lang/System.out : Ljava/io/PrintStream;
> 00003 R .  : R  :     LDC "main started"
> 00004 R .  : R R  :    L1
> 00005 R .  : R R  :     INVOKEVIRTUAL java/io/PrintStream.println
> (Ljava/lang/String;)V
> 00006 R .  :  :    L2
> 00007 R .  :  :     LINENUMBER 20 L2
> 00008 R .  :  :     INVOKESPECIAL Test$MyRunnable.<init> ()V
> 00009 ?     :     NEW Test$MyRunnable
> 00010 ?     :     DUP
> 00011 ?     :    L3
> 00012 ?     :     INVOKESTATIC
> org/apache/commons/javaflow/Continuation.startWith
> (Ljava/lang/Runnable;)Lorg/apache/commons/javaflow/Continuation;
> 00013 ?     :     ASTORE 1
> 00014 ?     :    L4
> 00015 ?     :     LINENUMBER 21 L4
> 00016 ?     :     GETSTATIC java/lang/System.out : Ljava/io/PrintStream;
> 00017 ?     :     LDC "in main after continuation return"
> 00018 ?     :    L5
> 00019 ?     :     INVOKEVIRTUAL java/io/PrintStream.println
> (Ljava/lang/String;)V
> 00020 ?     :    L6
> 00021 ?     :     LINENUMBER 22 L6
> 00022 ?     :    FRAME APPEND [org/apache/commons/javaflow/Continuation]
> 00023 ?     :     ALOAD 1
> 00024 ?     :     IFNULL L7
> 00025 ?     :    L8
> 00026 ?     :     LINENUMBER 23 L8
> 00027 ?     :     ALOAD 1
> 00028 ?     :    L9
> 00029 ?     :     INVOKESTATIC
> org/apache/commons/javaflow/Continuation.continueWith
> (Lorg/apache/commons/javaflow/Continuation;)Lorg/apache/commons/javaflow/Continuation;
> 00030 ?     :     ASTORE 1
> 00031 ?     :    L10
> 00032 ?     :     LINENUMBER 24 L10
> 00033 ?     :     GETSTATIC java/lang/System.out : Ljava/io/PrintStream;
> 00034 ?     :     LDC "in main"
> 00035 ?     :    L11
> 00036 ?     :     INVOKEVIRTUAL java/io/PrintStream.println
> (Ljava/lang/String;)V
> 00037 ?     :     GOTO L6
> 00038 ?     :    L7
> 00039 ?     :     LINENUMBER 26 L7
> 00040 ?     :    FRAME SAME
> 00041 ?     :     RETURN
>
>
>       at org.objectweb.asm.util.CheckMethodAdapter$1.visitEnd(Unknown Source)
>       at org.objectweb.asm.util.CheckMethodAdapter.visitEnd(Unknown Source)
>       at org.objectweb.asm.tree.MethodNode.accept(Unknown Source)
>       at org.apache.commons.javaflow.bytecode.transformation.asm.ContinuationMethodAnalyzer.visitEnd(ContinuationMethodAnalyzer.java:141)
>       at org.objectweb.asm.ClassReader.accept(Unknown Source)
>       at org.objectweb.asm.ClassReader.accept(Unknown Source)
>       at org.apache.commons.javaflow.bytecode.transformation.asm.AsmClassTransformer.transform(AsmClassTransformer.java:53)
>       at org.apache.commons.javaflow.bytecode.transformation.asm.AsmClassTransformer.transform(AsmClassTransformer.java:40)
>       at org.apache.commons.javaflow.utils.RewritingUtils.rewriteJar(RewritingUtils.java:108)
>       at org.apache.commons.javaflow.utils.RewritingUtils.rewriteJar(RewritingUtils.java:71)
>       at org.apache.commons.javaflow.utils.RewritingUtils.main(RewritingUtils.java:181)
>
> Can someone advise how to get this working?
>
> Thanks,
> Hiroshi
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
> For additional commands, e-mail: user-help@commons.apache.org
>
>

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


Mime
View raw message