Package org.aspectj.ajdt.internal.compiler.lookup

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



  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


  }


  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

  }
 
  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(),
            BaseTypes.VoidBinding, new TypeBinding[0],
            new ReferenceBinding[0], binding));
         

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


  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

 
 
  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.addTypeBinding(interfaceType);
    interfaceType.addMethod(world, AjcMemberMaker.perObjectInterfaceGet(typeX));
    interfaceType.addMethod(world, AjcMemberMaker.perObjectInterfaceSet(typeX));
    interfaceType.generateClass(compilationResult, classFile);
    return interfaceType;
  }
View Full Code Here

  }
 
 
  // 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) {
         
          Label instanceFound = new Label(codeStream);

          ExceptionLabel anythingGoesWrong = new ExceptionLabel(codeStream,world.makeTypeBinding(UnresolvedType.JAVA_LANG_EXCEPTION));
          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

 
  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       
        Label wrongType = new Label(codeStream);
        Label popWrongType = new Label(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

  }


  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
        Label wrongType = new Label(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();
       
View Full Code Here

      }});
  }
 
  // 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.JAVA_LANG_EXCEPTION));
             Label noInstanceExists = new Label(codeStream);
             Label leave = new Label(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

 
  private void generatePerObjectBindMethod(
    ClassFile classFile,
    final TypeBinding interfaceType)
  {
    final EclipseFactory world = EclipseFactory.fromScopeLookupEnvironment(this.scope);
    generateMethod(classFile, AjcMemberMaker.perObjectBind(world.fromBinding(binding)),
    new BodyGenerator() {
      public void generate(CodeStream codeStream) {
        // body starts here
        Label wrongType = new Label(codeStream);
        codeStream.aload_0();
        codeStream.instance_of(interfaceType);
        codeStream.ifeq(wrongType)//XXX this case might call for screaming
        codeStream.aload_0();
        codeStream.checkcast(interfaceType);
        codeStream.invokeinterface(world.makeMethodBindingForCall(
          AjcMemberMaker.perObjectInterfaceGet(typeX)));
        //XXX should do a check for null here and throw a NoAspectBound
        codeStream.ifnonnull(wrongType);
       
        codeStream.aload_0();
        codeStream.checkcast(interfaceType);
        codeStream.new_(binding);
        codeStream.dup();
        codeStream.invokespecial(
          new MethodBinding(0, "<init>".toCharArray(),
            BaseTypes.VoidBinding, new TypeBinding[0],
            new ReferenceBinding[0], binding));
        codeStream.invokeinterface(world.makeMethodBindingForCall(
          AjcMemberMaker.perObjectInterfaceSet(typeX)));
       
        wrongType.place();
        codeStream.return_();
        // body ends here
View Full Code Here

TOP

Related Classes of org.aspectj.ajdt.internal.compiler.lookup.EclipseFactory

Copyright © 2018 www.massapicom. 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.