Examples of EclipseFactory


Examples of org.aspectj.ajdt.internal.compiler.lookup.EclipseFactory

  private static interface BodyGenerator {
    public void generate(CodeStream codeStream);
  }

  private void generateMethod(ClassFile classFile, ResolvedMember member, BodyGenerator gen) {
    final EclipseFactory world = EclipseFactory.fromScopeLookupEnvironment(this.scope);
    generateMethod(classFile, world.makeMethodBinding(member), gen);
  }
View Full Code Here

Examples of org.aspectj.ajdt.internal.compiler.lookup.EclipseFactory

    attributeNumber++;
    classFile.completeMethodInfo(methodAttributeOffset, attributeNumber);
  }

  private void generatePerCflowAspectOfMethod(ClassFile classFile) {
    final EclipseFactory world = EclipseFactory.fromScopeLookupEnvironment(this.scope);
    generateMethod(classFile, aspectOfMethod, new BodyGenerator() {
      public void generate(CodeStream codeStream) {
        // body starts here
        codeStream.getstatic(world.makeFieldBinding(AjcMemberMaker.perCflowField(typeX)));
        codeStream.invokevirtual(world.makeMethodBindingForCall(AjcMemberMaker.cflowStackPeekInstance()));
        codeStream.checkcast(binding);
        codeStream.areturn();
        // body ends here
      }
    });
View Full Code Here

Examples of org.aspectj.ajdt.internal.compiler.lookup.EclipseFactory

    });

  }

  private void generatePerCflowHasAspectMethod(ClassFile classFile) {
    final EclipseFactory world = EclipseFactory.fromScopeLookupEnvironment(this.scope);
    generateMethod(classFile, hasAspectMethod, new BodyGenerator() {
      public void generate(CodeStream codeStream) {
        // body starts here
        codeStream.getstatic(world.makeFieldBinding(AjcMemberMaker.perCflowField(typeX)));
        codeStream.invokevirtual(world.makeMethodBindingForCall(AjcMemberMaker.cflowStackIsValid()));
        codeStream.ireturn();
        // body ends here
      }
    });
  }
View Full Code Here

Examples of org.aspectj.ajdt.internal.compiler.lookup.EclipseFactory

      }
    });
  }

  private void generatePerCflowPushMethod(ClassFile classFile) {
    final EclipseFactory world = EclipseFactory.fromScopeLookupEnvironment(this.scope);
    generateMethod(classFile, world.makeMethodBinding(AjcMemberMaker.perCflowPush(factory.fromBinding(binding))),
        new BodyGenerator() {
          public void generate(CodeStream codeStream) {
            // body starts here
            codeStream.getstatic(world.makeFieldBinding(AjcMemberMaker.perCflowField(typeX)));
            codeStream.new_(binding);
            codeStream.dup();
            codeStream.invokespecial(new MethodBinding(0, "<init>".toCharArray(), TypeBinding.VOID, new TypeBinding[0],
                new ReferenceBinding[0], binding));

            codeStream.invokevirtual(world.makeMethodBindingForCall(AjcMemberMaker.cflowStackPushInstance()));
            codeStream.return_();
            // body ends here
          }
        });
View Full Code Here

Examples of org.aspectj.ajdt.internal.compiler.lookup.EclipseFactory

        });

  }

  private void generatePerCflowAjcClinitMethod(ClassFile classFile) {
    final EclipseFactory world = EclipseFactory.fromScopeLookupEnvironment(this.scope);
    generateMethod(classFile, world.makeMethodBinding(AjcMemberMaker.ajcPreClinitMethod(world.fromBinding(binding))),
        new BodyGenerator() {
          public void generate(CodeStream codeStream) {
            // body starts here
            codeStream.new_(world.makeTypeBinding(AjcMemberMaker.CFLOW_STACK_TYPE));
            codeStream.dup();
            codeStream.invokespecial(world.makeMethodBindingForCall(AjcMemberMaker.cflowStackInit()));
            codeStream.putstatic(world.makeFieldBinding(AjcMemberMaker.perCflowField(typeX)));
            codeStream.return_();
            // body ends here
          }
        });
View Full Code Here

Examples of org.aspectj.ajdt.internal.compiler.lookup.EclipseFactory

        });

  }

  private TypeBinding generatePerObjectInterface(ClassFile classFile) {
    final EclipseFactory world = EclipseFactory.fromScopeLookupEnvironment(this.scope);
    UnresolvedType interfaceTypeX = AjcMemberMaker.perObjectInterfaceType(typeX);
    HelperInterfaceBinding interfaceType = new HelperInterfaceBinding(this.binding, interfaceTypeX);
    world.addTypeBindingAndStoreInWorld(interfaceType);
    interfaceType.addMethod(world, AjcMemberMaker.perObjectInterfaceGet(typeX));
    interfaceType.addMethod(world, AjcMemberMaker.perObjectInterfaceSet(typeX));
    interfaceType.generateClass(compilationResult, classFile);
    return interfaceType;
  }
View Full Code Here

Examples of org.aspectj.ajdt.internal.compiler.lookup.EclipseFactory

   * }}); }
   */

  // PTWIMPL Generate aspectOf() method
  private void generatePerTypeWithinAspectOfMethod(ClassFile classFile) {
    final EclipseFactory world = EclipseFactory.fromScopeLookupEnvironment(this.scope);
    generateMethod(classFile, aspectOfMethod, new BodyGenerator() {
      public void generate(CodeStream codeStream) {
        BranchLabel instanceFound = new BranchLabel(codeStream);

        ExceptionLabel anythingGoesWrong = new ExceptionLabel(codeStream, world
            .makeTypeBinding(UnresolvedType.JL_EXCEPTION));
        anythingGoesWrong.placeStart();
        codeStream.aload_0();
        codeStream.invokestatic(world.makeMethodBindingForCall(AjcMemberMaker.perTypeWithinGetInstance(typeX)));
        codeStream.astore_1();
        codeStream.aload_1();
        codeStream.ifnonnull(instanceFound);
        codeStream.new_(world.makeTypeBinding(AjcMemberMaker.NO_ASPECT_BOUND_EXCEPTION));
        codeStream.dup();

        codeStream.ldc(typeX.getName());
        codeStream.aconst_null();

        codeStream.invokespecial(world.makeMethodBindingForCall(AjcMemberMaker.noAspectBoundExceptionInit2()));
        codeStream.athrow();
        instanceFound.place();
        codeStream.aload_1();

        codeStream.areturn();
        anythingGoesWrong.placeEnd();
        anythingGoesWrong.place();

        codeStream.astore_1();
        codeStream.new_(world.makeTypeBinding(AjcMemberMaker.NO_ASPECT_BOUND_EXCEPTION));

        codeStream.dup();

        // Run the simple ctor for NABE
        codeStream.invokespecial(world.makeMethodBindingForCall(AjcMemberMaker.noAspectBoundExceptionInit()));
        codeStream.athrow();
      }
    });
  }
View Full Code Here

Examples of org.aspectj.ajdt.internal.compiler.lookup.EclipseFactory

      }
    });
  }

  private void generatePerObjectAspectOfMethod(ClassFile classFile, final TypeBinding interfaceType) {
    final EclipseFactory world = EclipseFactory.fromScopeLookupEnvironment(this.scope);
    generateMethod(classFile, aspectOfMethod, new BodyGenerator() {
      public void generate(CodeStream codeStream) {
        // body starts here
        BranchLabel wrongType = new BranchLabel(codeStream);
        BranchLabel popWrongType = new BranchLabel(codeStream);
        codeStream.aload_0();
        codeStream.instance_of(interfaceType);
        codeStream.ifeq(wrongType);
        codeStream.aload_0();
        codeStream.checkcast(interfaceType);
        codeStream.invokeinterface(world.makeMethodBindingForCall(AjcMemberMaker.perObjectInterfaceGet(typeX)));

        codeStream.dup();
        codeStream.ifnull(popWrongType);
        codeStream.areturn();

        popWrongType.place();
        codeStream.pop();

        wrongType.place();
        codeStream.new_(world.makeTypeBinding(AjcMemberMaker.NO_ASPECT_BOUND_EXCEPTION));
        codeStream.dup();
        codeStream.invokespecial(world.makeMethodBindingForCall(AjcMemberMaker.noAspectBoundExceptionInit()));
        codeStream.athrow();
        // body ends here
      }
    });
View Full Code Here

Examples of org.aspectj.ajdt.internal.compiler.lookup.EclipseFactory

    });

  }

  private void generatePerObjectHasAspectMethod(ClassFile classFile, final TypeBinding interfaceType) {
    final EclipseFactory world = EclipseFactory.fromScopeLookupEnvironment(this.scope);
    generateMethod(classFile, hasAspectMethod, new BodyGenerator() {
      public void generate(CodeStream codeStream) {
        // body starts here
        BranchLabel wrongType = new BranchLabel(codeStream);
        codeStream.aload_0();
        codeStream.instance_of(interfaceType);
        codeStream.ifeq(wrongType);
        codeStream.aload_0();
        codeStream.checkcast(interfaceType);
        codeStream.invokeinterface(world.makeMethodBindingForCall(AjcMemberMaker.perObjectInterfaceGet(typeX)));
        codeStream.ifnull(wrongType);
        codeStream.iconst_1();
        codeStream.ireturn();

        wrongType.place();
View Full Code Here

Examples of org.aspectj.ajdt.internal.compiler.lookup.EclipseFactory

    });
  }

  // PTWIMPL Generate hasAspect() method
  private void generatePerTypeWithinHasAspectMethod(ClassFile classFile) {
    final EclipseFactory world = EclipseFactory.fromScopeLookupEnvironment(this.scope);
    generateMethod(classFile, hasAspectMethod, new BodyGenerator() {
      public void generate(CodeStream codeStream) {
        ExceptionLabel goneBang = new ExceptionLabel(codeStream, world.makeTypeBinding(UnresolvedType.JL_EXCEPTION));
        BranchLabel noInstanceExists = new BranchLabel(codeStream);
        BranchLabel leave = new BranchLabel(codeStream);
        goneBang.placeStart();
        codeStream.aload_0();
        codeStream.invokestatic(world.makeMethodBinding(AjcMemberMaker.perTypeWithinGetInstance(typeX)));
        codeStream.ifnull(noInstanceExists);
        codeStream.iconst_1();
        codeStream.goto_(leave);
        noInstanceExists.place();
        codeStream.iconst_0();
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.