Hi,
I am not an expert of javap analysis.
I try to join the whole trace.

I think you are right. decompiling the TestingClass with JD-GUI, doesn't show any line number.

has i made something wrong, at compilation time ?

extract of javap -verbose TestingClass :

public class jlp.aspectj.test.TestingClass extends java.lang.Object implements java.lang.Runnable
  minor version: 0
  major version: 49
  Constant pool:
const #1 = Field #40.#69; // jlp/aspectj/test/TestingClass.name:Ljava/lang/String;
const #2 = Method    #44.#70;    // java/lang/Object."<init>":()V
const #3 = String    #71;    //
const #4 = Field    #40.#72;    // jlp/aspectj/test/TestingClass.running:Z
const #5 = int    1000000;
const #6 = Field    #40.#73;    // jlp/aspectj/test/TestingClass.limit:I
const #7 = class    #74;    //  java/lang/Thread
const #8 = Method #7.#75; // java/lang/Thread."<init>":(Ljava/lang/Runnable;)V const #9 = Field #40.#76; // jlp/aspectj/test/TestingClass.thread:Ljava/lang/Thread;
const #10 = String    #77;    //  no_name
const #11 = Method #40.#78; // jlp/aspectj/test/TestingClass."<init>":(Ljava/lang/String;)V const #12 = Field #79.#80; // java/lang/System.out:Ljava/io/PrintStream;
const #13 = class    #81;    //  java/lang/StringBuilder
const #14 = Method    #13.#70;    // java/lang/StringBuilder."<init>":()V
const #15 = Method #13.#82; // java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
const #16 = String    #83;    //  .myShortMethod : I will sleep for 100 ms
const #17 = Method #13.#84; // java/lang/StringBuilder.toString:()Ljava/lang/String; const #18 = Method #85.#86; // java/io/PrintStream.println:(Ljava/lang/String;)V
const #19 = long    100l;
const #21 = Method    #7.#87;    //  java/lang/Thread.sleep:(J)V
const #22 = class    #88;    //  java/lang/InterruptedException
const #23 = Method #22.#89; // java/lang/InterruptedException.printStackTrace:()V
const #24 = String    #90;    //  .myLongMethod : I will sleep for 1s
const #25 = long    1000l;
const #27 = class    #91;    //  java/util/HashMap
const #28 = Method    #27.#70;    // java/util/HashMap."<init>":()V
const #29 = String    #92;    //  .myStressingMethod :  limit=
const #30 = Method #13.#93; // java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
const #31 = class    #94;    //  java/lang/Integer
const #32 = Method    #31.#95;    // java/lang/Integer."<init>":(I)V
const #33 = Method #31.#84; // java/lang/Integer.toString:()Ljava/lang/String; const #34 = Method #27.#96; // java/util/HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
const #35 = Method    #27.#97;    //  java/util/HashMap.clear:()V
const #36 = Method #40.#98; // jlp/aspectj/test/TestingClass.myShortMethod:()V const #37 = Method #40.#99; // jlp/aspectj/test/TestingClass.myStressingMethod:(I)V const #38 = Method #40.#100; // jlp/aspectj/test/TestingClass.myLongMethod:()V const #39 = Method #31.#101; // java/lang/Integer.parseInt:(Ljava/lang/String;)I
const #40 = class    #102;    //  jlp/aspectj/test/TestingClass
const #41 = String    #103;    //  thread_
const #42 = Method #40.#104; // jlp/aspectj/test/TestingClass."<init>":(Ljava/lang/String;I)V
const #43 = Method    #7.#105;    //  java/lang/Thread.start:()V
const #44 = class    #106;    //  java/lang/Object
const #45 = class    #107;    //  java/lang/Runnable
const #46 = Asciz    name;
const #47 = Asciz    Ljava/lang/String;;
const #48 = Asciz    running;
const #49 = Asciz    Z;
const #50 = Asciz    limit;
const #51 = Asciz    I;
const #52 = Asciz    thread;
const #53 = Asciz    Ljava/lang/Thread;;
const #54 = Asciz    getName;
const #55 = Asciz    ()Ljava/lang/String;;
const #56 = Asciz    Code;
const #57 = Asciz    setName;
const #58 = Asciz    (Ljava/lang/String;)V;
const #59 = Asciz    <init>;
const #60 = Asciz    (Ljava/lang/String;I)V;
const #61 = Asciz    ()V;
const #62 = Asciz    myShortMethod;
const #63 = Asciz    myLongMethod;
const #64 = Asciz    myStressingMethod;
const #65 = Asciz    (I)V;
const #66 = Asciz    run;
const #67 = Asciz    main;
const #68 = Asciz    ([Ljava/lang/String;)V;
const #69 = NameAndType    #46:#47;//  name:Ljava/lang/String;
const #70 = NameAndType    #59:#61;//  "<init>":()V
const #71 = Asciz    ;
const #72 = NameAndType    #48:#49;//  running:Z
const #73 = NameAndType    #50:#51;//  limit:I
const #74 = Asciz    java/lang/Thread;
const #75 = NameAndType    #59:#108;// "<init>":(Ljava/lang/Runnable;)V
const #76 = NameAndType    #52:#53;//  thread:Ljava/lang/Thread;
const #77 = Asciz    no_name;
const #78 = NameAndType    #59:#58;// "<init>":(Ljava/lang/String;)V
const #79 = class    #109;    //  java/lang/System
const #80 = NameAndType    #110:#111;//  out:Ljava/io/PrintStream;
const #81 = Asciz    java/lang/StringBuilder;
const #82 = NameAndType #112:#113;// append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
const #83 = Asciz    .myShortMethod : I will sleep for 100 ms;
const #84 = NameAndType    #114:#55;// toString:()Ljava/lang/String;
const #85 = class    #115;    //  java/io/PrintStream
const #86 = NameAndType    #116:#58;// println:(Ljava/lang/String;)V
const #87 = NameAndType    #117:#118;//  sleep:(J)V
const #88 = Asciz    java/lang/InterruptedException;
const #89 = NameAndType    #119:#61;//  printStackTrace:()V
const #90 = Asciz    .myLongMethod : I will sleep for 1s;
const #91 = Asciz    java/util/HashMap;
const #92 = Asciz    .myStressingMethod :  limit=;
const #93 = NameAndType    #112:#120;// append:(I)Ljava/lang/StringBuilder;
const #94 = Asciz    java/lang/Integer;
const #95 = NameAndType    #59:#65;//  "<init>":(I)V
const #96 = NameAndType #121:#122;// put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
const #97 = NameAndType    #123:#61;//  clear:()V
const #98 = NameAndType    #62:#61;//  myShortMethod:()V
const #99 = NameAndType    #64:#65;//  myStressingMethod:(I)V
const #100 = NameAndType    #63:#61;//  myLongMethod:()V
const #101 = NameAndType    #124:#125;// parseInt:(Ljava/lang/String;)I
const #102 = Asciz    jlp/aspectj/test/TestingClass;
const #103 = Asciz    thread_;
const #104 = NameAndType    #59:#60;// "<init>":(Ljava/lang/String;I)V
const #105 = NameAndType    #126:#61;//  start:()V
const #106 = Asciz    java/lang/Object;
const #107 = Asciz    java/lang/Runnable;
const #108 = Asciz    (Ljava/lang/Runnable;)V;
const #109 = Asciz    java/lang/System;
const #110 = Asciz    out;
const #111 = Asciz    Ljava/io/PrintStream;;
const #112 = Asciz    append;
const #113 = Asciz (Ljava/lang/String;)Ljava/lang/StringBuilder;;
const #114 = Asciz    toString;
const #115 = Asciz    java/io/PrintStream;
const #116 = Asciz    println;
const #117 = Asciz    sleep;
const #118 = Asciz    (J)V;
const #119 = Asciz    printStackTrace;
const #120 = Asciz    (I)Ljava/lang/StringBuilder;;
const #121 = Asciz    put;
const #122 = Asciz (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;;
const #123 = Asciz    clear;
const #124 = Asciz    parseInt;
const #125 = Asciz    (Ljava/lang/String;)I;
const #126 = Asciz    start;


Le 28/12/2012 02:54, Andy Clement a écrit :
Hi,

Can you confirm if the code you are load time weaving into has line number table entries? Use javap with -verbose to see them if they are there, look for one attached to each method. If they are missing that explains it, if they are not missing it seems like a bug.

cheers,
Andy


On 24 December 2012 07:37, Pasturel <[email protected] <mailto:[email protected]>> wrote:

    Le 24/12/2012 16:04, Pasturel a écrit :
    Le 24/12/2012 12:25, Pasturel a écrit :
    Hi,
    withAspectJ Compiler 1.7.1 (DEVELOPMENT - Built: Wednesday Oct
    24, 2012 at 18:06:22 GMT) and LTW,
    the call
    thisJoinPoint.getStaticPart().getSourceLocation().getLine()
    always returns 0

    My advice is an around advice. I test if( null !=
    thisJoinPoint.getStaticPart().getSourceLocation())
    The pointcut is correctly weaved, and the advice excecutes
    correctly ( except for retrieving the noLine)

    How can we explain this? a bug ?
    I  give below the code to test ( my tests give always a getLine()
    =0)  :

    The Class :

    package jlp.aspectj.test;

    import java.util.HashMap;
    public class TestingClass implements Runnable {
        private String name = "";
        public boolean running = true;
        private int limit = 1000000;
        Thread thread = new Thread(this);

        public String getName() {
            return name;
        }

        public void setName(String name) {
    this.name <http://this.name> = name;

        }

        public TestingClass(String name, int limit) {
    this.name <http://this.name> = name;
            this.limit = limit;
        }

        public TestingClass(String name) {
    this.name <http://this.name> = name;
        }

        public TestingClass() {
            this("no_name");

        }

        public void myShortMethod() {
            System.out.println("I will sleep for 100 ms");
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

        public void myLongMethod() {
            System.out.println("I will sleep for 1s");
            try {

                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }

        public void myStressingMethod(int limit) {
            HashMap<String, Integer> hm = new HashMap<String, Integer>();
            System.out.println("Entering in myStressingMethod limit="
    + limit);
            for (int i = 0; i < limit; i++) {
                hm.put(new Integer(i % 100).toString(), new Integer(i
    % 1000));
            }
            hm.clear();

        }

        public void run() {
            while (running) {

                myShortMethod();

                myStressingMethod(limit);
                myLongMethod();
            }
        }

        public static void main(String[] args) {
            // TODO Auto-generated method stub
            TestingClass[] tabRunners = new
    TestingClass[Integer.parseInt(args[0])];
            for (int i = 0; i < tabRunners.length; i++) {
                tabRunners[i] = new TestingClass("thread_" + i,
    Integer.parseInt(args[1]));
                tabRunners[i].thread.start();
            }
        }

    }

    The AspectJ to (LTW) weave :

    package jlp.perf.aspects.concreteAspects;

    public aspect ConcreteTester {
        public  pointcut methods():execution(public * *..*.*(..));
        Object around() : methods()
        {
        Object ret = proceed();
        String str="Aspect ConcreteTester
    :"+thisJoinPointStaticPart.getSignature().getDeclaringTypeName()+"."+
    thisJoinPointStaticPart.getSignature().getName()+";"+thisJoinPointStaticPart
                .getSourceLocation().getLine();
        System.out.println(str);

        return ret;
        }

    }



    _______________________________________________
    aspectj-users mailing list
    [email protected]  <mailto:[email protected]>
    https://dev.eclipse.org/mailman/listinfo/aspectj-users
    but Compile Time Weaving makes the Aspect running correctly, as
    shown by the traces below :
    I will sleep for 1s
    Aspect ConcreteTester
    :jlp.aspectj.test.TestingClass.myShortMethod;*39*
    Entering in myStressingMethod limit=1000000
    Aspect ConcreteTester
    :jlp.aspectj.test.TestingClass.myStressingMethod*;61*

    I will sleep for 1s
    Aspect ConcreteTester :jlp.aspectj.test.TestingClass.myShortMethod;39
    Entering in myStressingMethod limit=1000000
    Aspect ConcreteTester
    :jlp.aspectj.test.TestingClass.myLongMethod;*49*

    I will sleep for 100 ms
    Aspect ConcreteTester
    :jlp.aspectj.test.TestingClass.myStressingMethod;61

    I will sleep for 1s
    Aspect ConcreteTester :jlp.aspectj.test.TestingClass.myShortMethod;39
    Entering in myStressingMethod limit=1000000
    Aspect ConcreteTester :jlp.aspectj.test.TestingClass.myLongMethod;49

    I will sleep for 100 ms
    Aspect ConcreteTester
    :jlp.aspectj.test.TestingClass.myStressingMethod;61

    I will sleep for 1s
    Aspect ConcreteTester
    :jlp.aspectj.test.TestingClass.myStressingMethod;61

    I will sleep for 1s
    Aspect ConcreteTester :jlp.aspectj.test.TestingClass.myShortMethod;39
    Entering in myStressingMethod limit=1000000
    Aspect ConcreteTester :jlp.aspectj.test.TestingClass.myShortMethod;39
    Entering in myStressingMethod limit=1000000
    Aspect ConcreteTester
    :jlp.aspectj.test.TestingClass.myStressingMethod;61

    I will sleep for 1s
    Aspect ConcreteTester
    :jlp.aspectj.test.TestingClass.myStressingMethod;61

    I will sleep for 1s


    _______________________________________________
    aspectj-users mailing list
    [email protected] <mailto:[email protected]>
    https://dev.eclipse.org/mailman/listinfo/aspectj-users




_______________________________________________
aspectj-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/aspectj-users

public class jlp.aspectj.test.TestingClass extends java.lang.Object implements 
java.lang.Runnable
  minor version: 0
  major version: 49
  Constant pool:
const #1 = Field        #40.#69;        //  
jlp/aspectj/test/TestingClass.name:Ljava/lang/String;
const #2 = Method       #44.#70;        //  java/lang/Object."<init>":()V
const #3 = String       #71;    //  
const #4 = Field        #40.#72;        //  
jlp/aspectj/test/TestingClass.running:Z
const #5 = int  1000000;
const #6 = Field        #40.#73;        //  
jlp/aspectj/test/TestingClass.limit:I
const #7 = class        #74;    //  java/lang/Thread
const #8 = Method       #7.#75; //  
java/lang/Thread."<init>":(Ljava/lang/Runnable;)V
const #9 = Field        #40.#76;        //  
jlp/aspectj/test/TestingClass.thread:Ljava/lang/Thread;
const #10 = String      #77;    //  no_name
const #11 = Method      #40.#78;        //  
jlp/aspectj/test/TestingClass."<init>":(Ljava/lang/String;)V
const #12 = Field       #79.#80;        //  
java/lang/System.out:Ljava/io/PrintStream;
const #13 = class       #81;    //  java/lang/StringBuilder
const #14 = Method      #13.#70;        //  java/lang/StringBuilder."<init>":()V
const #15 = Method      #13.#82;        //  
java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
const #16 = String      #83;    //  .myShortMethod : I will sleep for 100 ms
const #17 = Method      #13.#84;        //  
java/lang/StringBuilder.toString:()Ljava/lang/String;
const #18 = Method      #85.#86;        //  
java/io/PrintStream.println:(Ljava/lang/String;)V
const #19 = long        100l;
const #21 = Method      #7.#87; //  java/lang/Thread.sleep:(J)V
const #22 = class       #88;    //  java/lang/InterruptedException
const #23 = Method      #22.#89;        //  
java/lang/InterruptedException.printStackTrace:()V
const #24 = String      #90;    //  .myLongMethod : I will sleep for 1s
const #25 = long        1000l;
const #27 = class       #91;    //  java/util/HashMap
const #28 = Method      #27.#70;        //  java/util/HashMap."<init>":()V
const #29 = String      #92;    //  .myStressingMethod :  limit=
const #30 = Method      #13.#93;        //  
java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
const #31 = class       #94;    //  java/lang/Integer
const #32 = Method      #31.#95;        //  java/lang/Integer."<init>":(I)V
const #33 = Method      #31.#84;        //  
java/lang/Integer.toString:()Ljava/lang/String;
const #34 = Method      #27.#96;        //  
java/util/HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
const #35 = Method      #27.#97;        //  java/util/HashMap.clear:()V
const #36 = Method      #40.#98;        //  
jlp/aspectj/test/TestingClass.myShortMethod:()V
const #37 = Method      #40.#99;        //  
jlp/aspectj/test/TestingClass.myStressingMethod:(I)V
const #38 = Method      #40.#100;       //  
jlp/aspectj/test/TestingClass.myLongMethod:()V
const #39 = Method      #31.#101;       //  
java/lang/Integer.parseInt:(Ljava/lang/String;)I
const #40 = class       #102;   //  jlp/aspectj/test/TestingClass
const #41 = String      #103;   //  thread_
const #42 = Method      #40.#104;       //  
jlp/aspectj/test/TestingClass."<init>":(Ljava/lang/String;I)V
const #43 = Method      #7.#105;        //  java/lang/Thread.start:()V
const #44 = class       #106;   //  java/lang/Object
const #45 = class       #107;   //  java/lang/Runnable
const #46 = Asciz       name;
const #47 = Asciz       Ljava/lang/String;;
const #48 = Asciz       running;
const #49 = Asciz       Z;
const #50 = Asciz       limit;
const #51 = Asciz       I;
const #52 = Asciz       thread;
const #53 = Asciz       Ljava/lang/Thread;;
const #54 = Asciz       getName;
const #55 = Asciz       ()Ljava/lang/String;;
const #56 = Asciz       Code;
const #57 = Asciz       setName;
const #58 = Asciz       (Ljava/lang/String;)V;
const #59 = Asciz       <init>;
const #60 = Asciz       (Ljava/lang/String;I)V;
const #61 = Asciz       ()V;
const #62 = Asciz       myShortMethod;
const #63 = Asciz       myLongMethod;
const #64 = Asciz       myStressingMethod;
const #65 = Asciz       (I)V;
const #66 = Asciz       run;
const #67 = Asciz       main;
const #68 = Asciz       ([Ljava/lang/String;)V;
const #69 = NameAndType #46:#47;//  name:Ljava/lang/String;
const #70 = NameAndType #59:#61;//  "<init>":()V
const #71 = Asciz       ;
const #72 = NameAndType #48:#49;//  running:Z
const #73 = NameAndType #50:#51;//  limit:I
const #74 = Asciz       java/lang/Thread;
const #75 = NameAndType #59:#108;//  "<init>":(Ljava/lang/Runnable;)V
const #76 = NameAndType #52:#53;//  thread:Ljava/lang/Thread;
const #77 = Asciz       no_name;
const #78 = NameAndType #59:#58;//  "<init>":(Ljava/lang/String;)V
const #79 = class       #109;   //  java/lang/System
const #80 = NameAndType #110:#111;//  out:Ljava/io/PrintStream;
const #81 = Asciz       java/lang/StringBuilder;
const #82 = NameAndType #112:#113;//  
append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
const #83 = Asciz       .myShortMethod : I will sleep for 100 ms;
const #84 = NameAndType #114:#55;//  toString:()Ljava/lang/String;
const #85 = class       #115;   //  java/io/PrintStream
const #86 = NameAndType #116:#58;//  println:(Ljava/lang/String;)V
const #87 = NameAndType #117:#118;//  sleep:(J)V
const #88 = Asciz       java/lang/InterruptedException;
const #89 = NameAndType #119:#61;//  printStackTrace:()V
const #90 = Asciz       .myLongMethod : I will sleep for 1s;
const #91 = Asciz       java/util/HashMap;
const #92 = Asciz       .myStressingMethod :  limit=;
const #93 = NameAndType #112:#120;//  append:(I)Ljava/lang/StringBuilder;
const #94 = Asciz       java/lang/Integer;
const #95 = NameAndType #59:#65;//  "<init>":(I)V
const #96 = NameAndType #121:#122;//  
put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
const #97 = NameAndType #123:#61;//  clear:()V
const #98 = NameAndType #62:#61;//  myShortMethod:()V
const #99 = NameAndType #64:#65;//  myStressingMethod:(I)V
const #100 = NameAndType        #63:#61;//  myLongMethod:()V
const #101 = NameAndType        #124:#125;//  parseInt:(Ljava/lang/String;)I
const #102 = Asciz      jlp/aspectj/test/TestingClass;
const #103 = Asciz      thread_;
const #104 = NameAndType        #59:#60;//  "<init>":(Ljava/lang/String;I)V
const #105 = NameAndType        #126:#61;//  start:()V
const #106 = Asciz      java/lang/Object;
const #107 = Asciz      java/lang/Runnable;
const #108 = Asciz      (Ljava/lang/Runnable;)V;
const #109 = Asciz      java/lang/System;
const #110 = Asciz      out;
const #111 = Asciz      Ljava/io/PrintStream;;
const #112 = Asciz      append;
const #113 = Asciz      (Ljava/lang/String;)Ljava/lang/StringBuilder;;
const #114 = Asciz      toString;
const #115 = Asciz      java/io/PrintStream;
const #116 = Asciz      println;
const #117 = Asciz      sleep;
const #118 = Asciz      (J)V;
const #119 = Asciz      printStackTrace;
const #120 = Asciz      (I)Ljava/lang/StringBuilder;;
const #121 = Asciz      put;
const #122 = Asciz      
(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;;
const #123 = Asciz      clear;
const #124 = Asciz      parseInt;
const #125 = Asciz      (Ljava/lang/String;)I;
const #126 = Asciz      start;

{
public boolean running;

java.lang.Thread thread;

public java.lang.String getName();
  Code:
   Stack=1, Locals=1, Args_size=1
   0:   aload_0
   1:   getfield        #1; //Field name:Ljava/lang/String;
   4:   areturn

public void setName(java.lang.String);
  Code:
   Stack=2, Locals=2, Args_size=2
   0:   aload_0
   1:   aload_1
   2:   putfield        #1; //Field name:Ljava/lang/String;
   5:   return

public jlp.aspectj.test.TestingClass(java.lang.String, int);
  Code:
   Stack=4, Locals=3, Args_size=3
   0:   aload_0
   1:   invokespecial   #2; //Method java/lang/Object."<init>":()V
   4:   aload_0
   5:   ldc     #3; //String 
   7:   putfield        #1; //Field name:Ljava/lang/String;
   10:  aload_0
   11:  iconst_1
   12:  putfield        #4; //Field running:Z
   15:  aload_0
   16:  ldc     #5; //int 1000000
   18:  putfield        #6; //Field limit:I
   21:  aload_0
   22:  new     #7; //class java/lang/Thread
   25:  dup
   26:  aload_0
   27:  invokespecial   #8; //Method 
java/lang/Thread."<init>":(Ljava/lang/Runnable;)V
   30:  putfield        #9; //Field thread:Ljava/lang/Thread;
   33:  aload_0
   34:  aload_1
   35:  putfield        #1; //Field name:Ljava/lang/String;
   38:  aload_0
   39:  iload_2
   40:  putfield        #6; //Field limit:I
   43:  return

public jlp.aspectj.test.TestingClass(java.lang.String);
  Code:
   Stack=4, Locals=2, Args_size=2
   0:   aload_0
   1:   invokespecial   #2; //Method java/lang/Object."<init>":()V
   4:   aload_0
   5:   ldc     #3; //String 
   7:   putfield        #1; //Field name:Ljava/lang/String;
   10:  aload_0
   11:  iconst_1
   12:  putfield        #4; //Field running:Z
   15:  aload_0
   16:  ldc     #5; //int 1000000
   18:  putfield        #6; //Field limit:I
   21:  aload_0
   22:  new     #7; //class java/lang/Thread
   25:  dup
   26:  aload_0
   27:  invokespecial   #8; //Method 
java/lang/Thread."<init>":(Ljava/lang/Runnable;)V
   30:  putfield        #9; //Field thread:Ljava/lang/Thread;
   33:  aload_0
   34:  aload_1
   35:  putfield        #1; //Field name:Ljava/lang/String;
   38:  return

public jlp.aspectj.test.TestingClass();
  Code:
   Stack=2, Locals=1, Args_size=1
   0:   aload_0
   1:   ldc     #10; //String no_name
   3:   invokespecial   #11; //Method "<init>":(Ljava/lang/String;)V
   6:   return

public void myShortMethod();
  Code:
   Stack=3, Locals=2, Args_size=1
   0:   getstatic       #12; //Field java/lang/System.out:Ljava/io/PrintStream;
   3:   new     #13; //class java/lang/StringBuilder
   6:   dup
   7:   invokespecial   #14; //Method java/lang/StringBuilder."<init>":()V
   10:  aload_0
   11:  getfield        #1; //Field name:Ljava/lang/String;
   14:  invokevirtual   #15; //Method 
java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
   17:  ldc     #16; //String .myShortMethod : I will sleep for 100 ms
   19:  invokevirtual   #15; //Method 
java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
   22:  invokevirtual   #17; //Method 
java/lang/StringBuilder.toString:()Ljava/lang/String;
   25:  invokevirtual   #18; //Method 
java/io/PrintStream.println:(Ljava/lang/String;)V
   28:  ldc2_w  #19; //long 100l
   31:  invokestatic    #21; //Method java/lang/Thread.sleep:(J)V
   34:  goto    42
   37:  astore_1
   38:  aload_1
   39:  invokevirtual   #23; //Method 
java/lang/InterruptedException.printStackTrace:()V
   42:  return
  Exception table:
   from   to  target type
    28    34    37   Class java/lang/InterruptedException


public void myLongMethod();
  Code:
   Stack=3, Locals=2, Args_size=1
   0:   getstatic       #12; //Field java/lang/System.out:Ljava/io/PrintStream;
   3:   new     #13; //class java/lang/StringBuilder
   6:   dup
   7:   invokespecial   #14; //Method java/lang/StringBuilder."<init>":()V
   10:  aload_0
   11:  getfield        #1; //Field name:Ljava/lang/String;
   14:  invokevirtual   #15; //Method 
java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
   17:  ldc     #24; //String .myLongMethod : I will sleep for 1s
   19:  invokevirtual   #15; //Method 
java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
   22:  invokevirtual   #17; //Method 
java/lang/StringBuilder.toString:()Ljava/lang/String;
   25:  invokevirtual   #18; //Method 
java/io/PrintStream.println:(Ljava/lang/String;)V
   28:  ldc2_w  #25; //long 1000l
   31:  invokestatic    #21; //Method java/lang/Thread.sleep:(J)V
   34:  goto    42
   37:  astore_1
   38:  aload_1
   39:  invokevirtual   #23; //Method 
java/lang/InterruptedException.printStackTrace:()V
   42:  return
  Exception table:
   from   to  target type
    28    34    37   Class java/lang/InterruptedException


public void myStressingMethod(int);
  Code:
   Stack=6, Locals=4, Args_size=2
   0:   new     #27; //class java/util/HashMap
   3:   dup
   4:   invokespecial   #28; //Method java/util/HashMap."<init>":()V
   7:   astore_2
   8:   getstatic       #12; //Field java/lang/System.out:Ljava/io/PrintStream;
   11:  new     #13; //class java/lang/StringBuilder
   14:  dup
   15:  invokespecial   #14; //Method java/lang/StringBuilder."<init>":()V
   18:  aload_0
   19:  getfield        #1; //Field name:Ljava/lang/String;
   22:  invokevirtual   #15; //Method 
java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
   25:  ldc     #29; //String .myStressingMethod :  limit=
   27:  invokevirtual   #15; //Method 
java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
   30:  iload_1
   31:  invokevirtual   #30; //Method 
java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
   34:  invokevirtual   #17; //Method 
java/lang/StringBuilder.toString:()Ljava/lang/String;
   37:  invokevirtual   #18; //Method 
java/io/PrintStream.println:(Ljava/lang/String;)V
   40:  iconst_0
   41:  istore_3
   42:  iload_3
   43:  iload_1
   44:  if_icmpge       84
   47:  aload_2
   48:  new     #31; //class java/lang/Integer
   51:  dup
   52:  iload_3
   53:  bipush  100
   55:  irem
   56:  invokespecial   #32; //Method java/lang/Integer."<init>":(I)V
   59:  invokevirtual   #33; //Method 
java/lang/Integer.toString:()Ljava/lang/String;
   62:  new     #31; //class java/lang/Integer
   65:  dup
   66:  iload_3
   67:  sipush  1000
   70:  irem
   71:  invokespecial   #32; //Method java/lang/Integer."<init>":(I)V
   74:  invokevirtual   #34; //Method 
java/util/HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
   77:  pop
   78:  iinc    3, 1
   81:  goto    42
   84:  aload_2
   85:  invokevirtual   #35; //Method java/util/HashMap.clear:()V
   88:  return

public void run();
  Code:
   Stack=2, Locals=1, Args_size=1
   0:   aload_0
   1:   getfield        #4; //Field running:Z
   4:   ifeq    26
   7:   aload_0
   8:   invokevirtual   #36; //Method myShortMethod:()V
   11:  aload_0
   12:  aload_0
   13:  getfield        #6; //Field limit:I
   16:  invokevirtual   #37; //Method myStressingMethod:(I)V
   19:  aload_0
   20:  invokevirtual   #38; //Method myLongMethod:()V
   23:  goto    0
   26:  return

public static void main(java.lang.String[]);
  Code:
   Stack=7, Locals=3, Args_size=1
   0:   aload_0
   1:   iconst_0
   2:   aaload
   3:   invokestatic    #39; //Method 
java/lang/Integer.parseInt:(Ljava/lang/String;)I
   6:   anewarray       #40; //class jlp/aspectj/test/TestingClass
   9:   astore_1
   10:  iconst_0
   11:  istore_2
   12:  iload_2
   13:  aload_1
   14:  arraylength
   15:  if_icmpge       68
   18:  aload_1
   19:  iload_2
   20:  new     #40; //class jlp/aspectj/test/TestingClass
   23:  dup
   24:  new     #13; //class java/lang/StringBuilder
   27:  dup
   28:  invokespecial   #14; //Method java/lang/StringBuilder."<init>":()V
   31:  ldc     #41; //String thread_
   33:  invokevirtual   #15; //Method 
java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
   36:  iload_2
   37:  invokevirtual   #30; //Method 
java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
   40:  invokevirtual   #17; //Method 
java/lang/StringBuilder.toString:()Ljava/lang/String;
   43:  aload_0
   44:  iconst_1
   45:  aaload
   46:  invokestatic    #39; //Method 
java/lang/Integer.parseInt:(Ljava/lang/String;)I
   49:  invokespecial   #42; //Method "<init>":(Ljava/lang/String;I)V
   52:  aastore
   53:  aload_1
   54:  iload_2
   55:  aaload
   56:  getfield        #9; //Field thread:Ljava/lang/Thread;
   59:  invokevirtual   #43; //Method java/lang/Thread.start:()V
   62:  iinc    2, 1
   65:  goto    12
   68:  return

}

_______________________________________________
aspectj-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/aspectj-users

Reply via email to