Re: [abc-users] Determine a basic block

From: Amjad Nusayr <anusayr_at_cs.nmsu.edu>
Date: Wed, 16 Apr 2008 14:21:54 -0600

Thanks for your help, its been a frustrating week, I could not figure
out why the exception pops up every time.

I Compiled the code with the flags that you gave me, again it compiles
without any problem, but I still get this exception when I try to run it...

Exception in thread "main" java.lang.VerifyError: (class: Hello, method:
<init> signature: ()V) Expecting to find unitialized object on stack

Attached are the jimple files and my java test case files.

Thanks in advance.

Amjad

 

Julian Tibble wrote:
> Hi Amjad,
>
> The best way for us to help you track down the source of the VerifyError
> would be for you to compile your test program with:
>
> abc -ext <your-extension> +soot -f J -soot <your-aspectj-test-files>
>
> The "+soot -f J -soot" option tells soot to output Jimple files, rather
> than Java class files. If you email us the .jimple file corresponding to
> the class that does not verify then that will give us a much better idea
> of what the problem is.
>
>
>
>> I still dont have a comprehensive idea on how to extract the runtime
>> info. I will very glad if I can get some pointers on this.
>>
>
> The dynamic part of thisJoinPoint is filled in automatically, based on
> the values of args(), target() etc. --- which are determined by how the
> getArgsContextValues(), getTargetContextValue() etc. methods are
> implemented in your BasicBlockShadowMatch class.
>
> The static information is encoded as a string - this string consisists
> of several parts fields separated by '-'.
> See abc/src/abc/eaj/weaving/matching/CastShadowMatch.java (makeSJPInfo)
> and abc/src/abc/eaj/weaving/matching/ExtendedSJPInfo.java
>
> At runtime, thisJoinPointStaticPart is constructed from this string, and
> the string is lazily decoded if and when the reflective information is
> used. The code for extracting a particular field is already implemented
> in SignatureImpl.java in the runtime sources.
>
> See CastSignatureImpl.java for an example of how to extend
> SignatureImpl.java to re-use this extraction code for picking out
> relevant information.
>
>
> Hope that helps.
> Please do continue to send any further questions to the abc-users list,
> Julian
>
>

public class World extends java.lang.Object
{
    public static final World abc$perSingletonInstance;
    private static java.lang.Throwable abc$initFailureCause;

    public final void before$0(int, org.aspectj.lang.JoinPoint)
    {
        World this;
        int id;
        org.aspectj.lang.JoinPoint thisJoinPoint;
        java.io.PrintStream $r0;
        java.lang.StringBuffer $r1, $r2, $r3, $r4, $r5;
        java.lang.String $r6, uniqueArgLocal4, uniqueArgLocal5;

        this := @this: World;
        id := @parameter0: int;
        thisJoinPoint := @parameter1: org.aspectj.lang.JoinPoint;
        $r0 = <java.lang.System: java.io.PrintStream err>;
        $r1 = new java.lang.StringBuffer;
        specialinvoke $r1.<java.lang.StringBuffer: void <init>()>();
        uniqueArgLocal4 = "Entering Block --> ";
        $r2 = virtualinvoke $r1.<java.lang.StringBuffer: java.lang.StringBuffer append(java.lang.String)>(uniqueArgLocal4);
        $r3 = virtualinvoke $r2.<java.lang.StringBuffer: java.lang.StringBuffer append(int)>(id);
        uniqueArgLocal5 = "at ";
        $r4 = virtualinvoke $r3.<java.lang.StringBuffer: java.lang.StringBuffer append(java.lang.String)>(uniqueArgLocal5);
        $r5 = virtualinvoke $r4.<java.lang.StringBuffer: java.lang.StringBuffer append(java.lang.Object)>(thisJoinPoint);
        $r6 = virtualinvoke $r5.<java.lang.StringBuffer: java.lang.String toString()>();
        virtualinvoke $r0.<java.io.PrintStream: void println(java.lang.String)>($r6);
        return;
    }

    public void <init>()
    {
        World this;

        this := @this: World;
        specialinvoke this.<java.lang.Object: void <init>()>();
        return;
    }

    public static World aspectOf() throws org.aspectj.lang.NoAspectBoundException
    {
        World theAspect;
        org.aspectj.lang.NoAspectBoundException nabException;
        java.lang.Throwable failureCause;

        theAspect = <World: World abc$perSingletonInstance>;
        if theAspect == null goto label0;

        return theAspect;

     label0:
        nabException = new org.aspectj.lang.NoAspectBoundException;
        failureCause = <World: java.lang.Throwable abc$initFailureCause>;
        specialinvoke nabException.<org.aspectj.lang.NoAspectBoundException: void <init>(java.lang.String,java.lang.Throwable)>("World", failureCause);
        throw nabException;
    }

    public static boolean hasAspect()
    {
        World theAspect$0;

        theAspect$0 = <World: World abc$perSingletonInstance>;
        if theAspect$0 == null goto label0;

        return 1;

     label0:
        return 0;
    }

    static void <clinit>()
    {
        java.lang.Throwable catchLocal$1;

     label0:
        staticinvoke <World: void abc$postClinit()>();

     label1:
        goto label3;

     label2:
        catchLocal$1 := @caughtexception;
        <World: java.lang.Throwable abc$initFailureCause> = catchLocal$1;

     label3:
        return;

        catch java.lang.Throwable from label0 to label1 with label2;
    }

    private static void abc$postClinit()
    {
        World theAspect;

        theAspect = new World;
        specialinvoke theAspect.<World: void <init>()>();
        <World: World abc$perSingletonInstance> = theAspect;
        return;
    }
}

import java.util.Random;

public class Hello {

        public static void main(String[] args) {
                 Random randomGenerator = new Random();
                 int i=0;
                 int randomInt = randomGenerator.nextInt(100);
                 if (randomInt>=50)
                         System.out.println("Im in the TRUE part of the first if stmt " + randomInt);
                 else
                         System.out.println("Im in the FALSE part of the first if stmt " + randomInt);
                for (i=1;i<=4;i++)
                {
                        i=i+2;
                        System.out.println("value of i is "+i);
                }
        }

}

public class Hello extends java.lang.Object
{
    private static final org.aspectj.lang.JoinPoint$StaticPart SJP0$BasicBlock$main;
    private static final org.aspectj.lang.JoinPoint$StaticPart SJP1$BasicBlock$main;
    private static final org.aspectj.lang.JoinPoint$StaticPart SJP2$BasicBlock$main;
    private static final org.aspectj.lang.JoinPoint$StaticPart SJP3$BasicBlock$main;
    private static final org.aspectj.lang.JoinPoint$StaticPart SJP4$BasicBlock$main;
    private static final org.aspectj.lang.JoinPoint$StaticPart SJP5$BasicBlock$main;
    private static final org.aspectj.lang.JoinPoint$StaticPart SJP6$BasicBlock$main;
    private static final org.aspectj.lang.JoinPoint$StaticPart SJP7$BasicBlock$IinitI;
    private static final org.aspectj.lang.JoinPoint$StaticPart SJP8$BasicBlock$IclinitI;

    public static void main(java.lang.String[])
    {
        java.lang.String[] args;
        java.util.Random $r0;
        int i, randomInt;
        java.io.PrintStream $r1, $r6, $r11;
        java.lang.StringBuffer $r2, $r3, $r4, $r7, $r8, $r9, $r12, $r13, $r14;
        java.lang.String $r5, $r10, $r15;
        org.aspectj.lang.JoinPoint thisJoinPoint$3, thisJoinPoint$17, thisJoinPoint$31, thisJoinPoint$45, thisJoinPoint$59, thisJoinPoint$73, thisJoinPoint$87;
        org.aspectj.lang.JoinPoint$StaticPart pointcutlocal$4, pointcutlocal$18, pointcutlocal$32, pointcutlocal$46, pointcutlocal$60, pointcutlocal$74, pointcutlocal$88;
        java.lang.Object[] argsvals$11, argsvals$25, argsvals$39, argsvals$53, argsvals$67, argsvals$81, argsvals$95;
        java.lang.Integer pointcutlocal$13, pointcutlocal$27, pointcutlocal$41, pointcutlocal$55, pointcutlocal$69, pointcutlocal$83, pointcutlocal$97;
        World theAspect$World;

        pointcutlocal$4 = <Hello: org.aspectj.lang.JoinPoint$StaticPart SJP0$BasicBlock$main>;
        argsvals$11 = newarray (java.lang.Object)[1];
        pointcutlocal$13 = new java.lang.Integer;
        specialinvoke pointcutlocal$13.<java.lang.Integer: void <init>(int)>(0);
        argsvals$11[0] = pointcutlocal$13;
        thisJoinPoint$3 = staticinvoke <org.aspectbench.runtime.reflect.Factory: org.aspectj.lang.JoinPoint makeJP(org.aspectj.lang.JoinPoint$StaticPart,java.lang.Object,java.lang.Object,java.lang.Object[])>(pointcutlocal$4, null, null, argsvals$11);
        theAspect$World = staticinvoke <World: World aspectOf()>();
        virtualinvoke theAspect$World.<World: void before$0(int,org.aspectj.lang.JoinPoint)>(0, thisJoinPoint$3);
        args := @parameter0: java.lang.String[];
        $r0 = new java.util.Random;
        specialinvoke $r0.<java.util.Random: void <init>()>();
        randomInt = virtualinvoke $r0.<java.util.Random: int nextInt(int)>(100);
        if randomInt < 50 goto label0;

        pointcutlocal$18 = <Hello: org.aspectj.lang.JoinPoint$StaticPart SJP1$BasicBlock$main>;
        argsvals$25 = newarray (java.lang.Object)[1];
        pointcutlocal$27 = new java.lang.Integer;
        specialinvoke pointcutlocal$27.<java.lang.Integer: void <init>(int)>(1);
        argsvals$25[0] = pointcutlocal$27;
        thisJoinPoint$17 = staticinvoke <org.aspectbench.runtime.reflect.Factory: org.aspectj.lang.JoinPoint makeJP(org.aspectj.lang.JoinPoint$StaticPart,java.lang.Object,java.lang.Object,java.lang.Object[])>(pointcutlocal$18, null, null, argsvals$25);
        virtualinvoke theAspect$World.<World: void before$0(int,org.aspectj.lang.JoinPoint)>(1, thisJoinPoint$17);
        $r1 = <java.lang.System: java.io.PrintStream out>;
        $r2 = new java.lang.StringBuffer;
        specialinvoke $r2.<java.lang.StringBuffer: void <init>()>();
        $r3 = virtualinvoke $r2.<java.lang.StringBuffer: java.lang.StringBuffer append(java.lang.String)>("Im in the TRUE part of the first if stmt ");
        $r4 = virtualinvoke $r3.<java.lang.StringBuffer: java.lang.StringBuffer append(int)>(randomInt);
        $r5 = virtualinvoke $r4.<java.lang.StringBuffer: java.lang.String toString()>();
        virtualinvoke $r1.<java.io.PrintStream: void println(java.lang.String)>($r5);
        goto label1;

     label0:
        pointcutlocal$32 = <Hello: org.aspectj.lang.JoinPoint$StaticPart SJP2$BasicBlock$main>;
        argsvals$39 = newarray (java.lang.Object)[1];
        pointcutlocal$41 = new java.lang.Integer;
        specialinvoke pointcutlocal$41.<java.lang.Integer: void <init>(int)>(2);
        argsvals$39[0] = pointcutlocal$41;
        thisJoinPoint$31 = staticinvoke <org.aspectbench.runtime.reflect.Factory: org.aspectj.lang.JoinPoint makeJP(org.aspectj.lang.JoinPoint$StaticPart,java.lang.Object,java.lang.Object,java.lang.Object[])>(pointcutlocal$32, null, null, argsvals$39);
        virtualinvoke theAspect$World.<World: void before$0(int,org.aspectj.lang.JoinPoint)>(2, thisJoinPoint$31);
        $r6 = <java.lang.System: java.io.PrintStream out>;
        $r7 = new java.lang.StringBuffer;
        specialinvoke $r7.<java.lang.StringBuffer: void <init>()>();
        $r8 = virtualinvoke $r7.<java.lang.StringBuffer: java.lang.StringBuffer append(java.lang.String)>("Im in the FALSE part of the first if stmt ");
        $r9 = virtualinvoke $r8.<java.lang.StringBuffer: java.lang.StringBuffer append(int)>(randomInt);
        $r10 = virtualinvoke $r9.<java.lang.StringBuffer: java.lang.String toString()>();
        virtualinvoke $r6.<java.io.PrintStream: void println(java.lang.String)>($r10);

     label1:
        pointcutlocal$46 = <Hello: org.aspectj.lang.JoinPoint$StaticPart SJP3$BasicBlock$main>;
        argsvals$53 = newarray (java.lang.Object)[1];
        pointcutlocal$55 = new java.lang.Integer;
        specialinvoke pointcutlocal$55.<java.lang.Integer: void <init>(int)>(3);
        argsvals$53[0] = pointcutlocal$55;
        thisJoinPoint$45 = staticinvoke <org.aspectbench.runtime.reflect.Factory: org.aspectj.lang.JoinPoint makeJP(org.aspectj.lang.JoinPoint$StaticPart,java.lang.Object,java.lang.Object,java.lang.Object[])>(pointcutlocal$46, null, null, argsvals$53);
        virtualinvoke theAspect$World.<World: void before$0(int,org.aspectj.lang.JoinPoint)>(3, thisJoinPoint$45);
        i = 1;

     label2:
        pointcutlocal$60 = <Hello: org.aspectj.lang.JoinPoint$StaticPart SJP4$BasicBlock$main>;
        argsvals$67 = newarray (java.lang.Object)[1];
        pointcutlocal$69 = new java.lang.Integer;
        specialinvoke pointcutlocal$69.<java.lang.Integer: void <init>(int)>(4);
        argsvals$67[0] = pointcutlocal$69;
        thisJoinPoint$59 = staticinvoke <org.aspectbench.runtime.reflect.Factory: org.aspectj.lang.JoinPoint makeJP(org.aspectj.lang.JoinPoint$StaticPart,java.lang.Object,java.lang.Object,java.lang.Object[])>(pointcutlocal$60, null, null, argsvals$67);
        virtualinvoke theAspect$World.<World: void before$0(int,org.aspectj.lang.JoinPoint)>(4, thisJoinPoint$59);
        if i > 4 goto label3;

        pointcutlocal$74 = <Hello: org.aspectj.lang.JoinPoint$StaticPart SJP5$BasicBlock$main>;
        argsvals$81 = newarray (java.lang.Object)[1];
        pointcutlocal$83 = new java.lang.Integer;
        specialinvoke pointcutlocal$83.<java.lang.Integer: void <init>(int)>(5);
        argsvals$81[0] = pointcutlocal$83;
        thisJoinPoint$73 = staticinvoke <org.aspectbench.runtime.reflect.Factory: org.aspectj.lang.JoinPoint makeJP(org.aspectj.lang.JoinPoint$StaticPart,java.lang.Object,java.lang.Object,java.lang.Object[])>(pointcutlocal$74, null, null, argsvals$81);
        virtualinvoke theAspect$World.<World: void before$0(int,org.aspectj.lang.JoinPoint)>(5, thisJoinPoint$73);
        i = i + 2;
        $r11 = <java.lang.System: java.io.PrintStream out>;
        $r12 = new java.lang.StringBuffer;
        specialinvoke $r12.<java.lang.StringBuffer: void <init>()>();
        $r13 = virtualinvoke $r12.<java.lang.StringBuffer: java.lang.StringBuffer append(java.lang.String)>("value of i is ");
        $r14 = virtualinvoke $r13.<java.lang.StringBuffer: java.lang.StringBuffer append(int)>(i);
        $r15 = virtualinvoke $r14.<java.lang.StringBuffer: java.lang.String toString()>();
        virtualinvoke $r11.<java.io.PrintStream: void println(java.lang.String)>($r15);
        i = i + 1;
        goto label2;

     label3:
        pointcutlocal$88 = <Hello: org.aspectj.lang.JoinPoint$StaticPart SJP6$BasicBlock$main>;
        argsvals$95 = newarray (java.lang.Object)[1];
        pointcutlocal$97 = new java.lang.Integer;
        specialinvoke pointcutlocal$97.<java.lang.Integer: void <init>(int)>(6);
        argsvals$95[0] = pointcutlocal$97;
        thisJoinPoint$87 = staticinvoke <org.aspectbench.runtime.reflect.Factory: org.aspectj.lang.JoinPoint makeJP(org.aspectj.lang.JoinPoint$StaticPart,java.lang.Object,java.lang.Object,java.lang.Object[])>(pointcutlocal$88, null, null, argsvals$95);
        virtualinvoke theAspect$World.<World: void before$0(int,org.aspectj.lang.JoinPoint)>(6, thisJoinPoint$87);
        return;
    }

    public void <init>()
    {
        Hello this;
        org.aspectj.lang.JoinPoint thisJoinPoint$101;
        org.aspectj.lang.JoinPoint$StaticPart pointcutlocal$102;
        java.lang.Object[] argsvals$109;
        java.lang.Integer pointcutlocal$111;
        World theAspect$World;

        pointcutlocal$102 = <Hello: org.aspectj.lang.JoinPoint$StaticPart SJP7$BasicBlock$IinitI>;
        argsvals$109 = newarray (java.lang.Object)[1];
        pointcutlocal$111 = new java.lang.Integer;
        specialinvoke pointcutlocal$111.<java.lang.Integer: void <init>(int)>(0);
        argsvals$109[0] = pointcutlocal$111;
        thisJoinPoint$101 = staticinvoke <org.aspectbench.runtime.reflect.Factory: org.aspectj.lang.JoinPoint makeJP(org.aspectj.lang.JoinPoint$StaticPart,java.lang.Object,java.lang.Object,java.lang.Object[])>(pointcutlocal$102, null, null, argsvals$109);
        theAspect$World = staticinvoke <World: World aspectOf()>();
        virtualinvoke theAspect$World.<World: void before$0(int,org.aspectj.lang.JoinPoint)>(0, thisJoinPoint$101);
        this := @this: Hello;
        specialinvoke this.<java.lang.Object: void <init>()>();
        return;
    }

    static void <clinit>()
    {
        java.lang.Class $r0;
        bbs.runtime.reflect.BbsFactory $r1;
        bbs.lang.reflect.BasicBlockSignature $r2, $r4, $r6, $r8, $r10, $r12, $r14, $r16, $r18;
        org.aspectj.lang.JoinPoint$StaticPart $r3, $r5, $r7, $r9, $r11, $r13, $r15, $r17, $r19, pointcutlocal$116;
        org.aspectj.lang.JoinPoint thisJoinPoint$115;
        java.lang.Object[] argsvals$123;
        java.lang.Integer pointcutlocal$125;
        World theAspect$World;

        $r0 = staticinvoke <java.lang.Class: java.lang.Class forName(java.lang.String)>("Hello");
        $r1 = new bbs.runtime.reflect.BbsFactory;
        specialinvoke $r1.<bbs.runtime.reflect.BbsFactory: void <init>(java.lang.String,java.lang.Class)>("Hello.java", $r0);
        $r2 = virtualinvoke $r1.<bbs.runtime.reflect.BbsFactory: bbs.lang.reflect.BasicBlockSignature makeBasicBlockSig(java.lang.String)>("---Hello-");
        $r3 = virtualinvoke $r1.<bbs.runtime.reflect.BbsFactory: org.aspectj.lang.JoinPoint$StaticPart makeSJP(java.lang.String,org.aspectj.lang.Signature,int,int,int)>("BasicBlock", $r2, 5, 25, -1);
        <Hello: org.aspectj.lang.JoinPoint$StaticPart SJP0$BasicBlock$main> = $r3;
        $r4 = virtualinvoke $r1.<bbs.runtime.reflect.BbsFactory: bbs.lang.reflect.BasicBlockSignature makeBasicBlockSig(java.lang.String)>("---Hello-");
        $r5 = virtualinvoke $r1.<bbs.runtime.reflect.BbsFactory: org.aspectj.lang.JoinPoint$StaticPart makeSJP(java.lang.String,org.aspectj.lang.Signature,int,int,int)>("BasicBlock", $r4, 10, 4, -1);
        <Hello: org.aspectj.lang.JoinPoint$StaticPart SJP1$BasicBlock$main> = $r5;
        $r6 = virtualinvoke $r1.<bbs.runtime.reflect.BbsFactory: bbs.lang.reflect.BasicBlockSignature makeBasicBlockSig(java.lang.String)>("---Hello-");
        $r7 = virtualinvoke $r1.<bbs.runtime.reflect.BbsFactory: org.aspectj.lang.JoinPoint$StaticPart makeSJP(java.lang.String,org.aspectj.lang.Signature,int,int,int)>("BasicBlock", $r6, 12, 4, -1);
        <Hello: org.aspectj.lang.JoinPoint$StaticPart SJP2$BasicBlock$main> = $r7;
        $r8 = virtualinvoke $r1.<bbs.runtime.reflect.BbsFactory: bbs.lang.reflect.BasicBlockSignature makeBasicBlockSig(java.lang.String)>("---Hello-");
        $r9 = virtualinvoke $r1.<bbs.runtime.reflect.BbsFactory: org.aspectj.lang.JoinPoint$StaticPart makeSJP(java.lang.String,org.aspectj.lang.Signature,int,int,int)>("BasicBlock", $r8, 13, 7, -1);
        <Hello: org.aspectj.lang.JoinPoint$StaticPart SJP3$BasicBlock$main> = $r9;
        $r10 = virtualinvoke $r1.<bbs.runtime.reflect.BbsFactory: bbs.lang.reflect.BasicBlockSignature makeBasicBlockSig(java.lang.String)>("---Hello-");
        $r11 = virtualinvoke $r1.<bbs.runtime.reflect.BbsFactory: org.aspectj.lang.JoinPoint$StaticPart makeSJP(java.lang.String,org.aspectj.lang.Signature,int,int,int)>("BasicBlock", $r10, 13, 11, -1);
        <Hello: org.aspectj.lang.JoinPoint$StaticPart SJP4$BasicBlock$main> = $r11;
        $r12 = virtualinvoke $r1.<bbs.runtime.reflect.BbsFactory: bbs.lang.reflect.BasicBlockSignature makeBasicBlockSig(java.lang.String)>("---Hello-");
        $r13 = virtualinvoke $r1.<bbs.runtime.reflect.BbsFactory: org.aspectj.lang.JoinPoint$StaticPart makeSJP(java.lang.String,org.aspectj.lang.Signature,int,int,int)>("BasicBlock", $r12, 15, 3, -1);
        <Hello: org.aspectj.lang.JoinPoint$StaticPart SJP5$BasicBlock$main> = $r13;
        $r14 = virtualinvoke $r1.<bbs.runtime.reflect.BbsFactory: bbs.lang.reflect.BasicBlockSignature makeBasicBlockSig(java.lang.String)>("---Hello-");
        $r15 = virtualinvoke $r1.<bbs.runtime.reflect.BbsFactory: org.aspectj.lang.JoinPoint$StaticPart makeSJP(java.lang.String,org.aspectj.lang.Signature,int,int,int)>("BasicBlock", $r14, -1, -1, -1);
        <Hello: org.aspectj.lang.JoinPoint$StaticPart SJP6$BasicBlock$main> = $r15;
        $r16 = virtualinvoke $r1.<bbs.runtime.reflect.BbsFactory: bbs.lang.reflect.BasicBlockSignature makeBasicBlockSig(java.lang.String)>("---Hello-");
        $r17 = virtualinvoke $r1.<bbs.runtime.reflect.BbsFactory: org.aspectj.lang.JoinPoint$StaticPart makeSJP(java.lang.String,org.aspectj.lang.Signature,int,int,int)>("BasicBlock", $r16, -1, -1, -1);
        <Hello: org.aspectj.lang.JoinPoint$StaticPart SJP7$BasicBlock$IinitI> = $r17;
        $r18 = virtualinvoke $r1.<bbs.runtime.reflect.BbsFactory: bbs.lang.reflect.BasicBlockSignature makeBasicBlockSig(java.lang.String)>("---Hello-");
        $r19 = virtualinvoke $r1.<bbs.runtime.reflect.BbsFactory: org.aspectj.lang.JoinPoint$StaticPart makeSJP(java.lang.String,org.aspectj.lang.Signature,int,int,int)>("BasicBlock", $r18, 3, 7, -1);
        <Hello: org.aspectj.lang.JoinPoint$StaticPart SJP8$BasicBlock$IclinitI> = $r19;
        pointcutlocal$116 = <Hello: org.aspectj.lang.JoinPoint$StaticPart SJP8$BasicBlock$IclinitI>;
        argsvals$123 = newarray (java.lang.Object)[1];
        pointcutlocal$125 = new java.lang.Integer;
        specialinvoke pointcutlocal$125.<java.lang.Integer: void <init>(int)>(0);
        argsvals$123[0] = pointcutlocal$125;
        thisJoinPoint$115 = staticinvoke <org.aspectbench.runtime.reflect.Factory: org.aspectj.lang.JoinPoint makeJP(org.aspectj.lang.JoinPoint$StaticPart,java.lang.Object,java.lang.Object,java.lang.Object[])>(pointcutlocal$116, null, null, argsvals$123);
        theAspect$World = staticinvoke <World: World aspectOf()>();
        virtualinvoke theAspect$World.<World: void before$0(int,org.aspectj.lang.JoinPoint)>(0, thisJoinPoint$115);
        return;
    }
}

public aspect World {
   /**** int id: returns the id of the basic block ****/
   before(int id) : block() && !within(World) && args(id)
      {
          System.err.println("Entering Block --> "+id + "at " +thisJoinPoint);
   }
   
}
Received on Wed Apr 16 2008 - 21:22:02 BST

This archive was generated by hypermail 2.2.0 : Fri Apr 18 2008 - 00:50:11 BST