View Javadoc

    1   /***************************************************************************************
    2    * Copyright (c) Jonas Bonér, Alexandre Vasseur. All rights reserved.                 *
    3    * http://aspectwerkz.codehaus.org                                                    *
    4    * ---------------------------------------------------------------------------------- *
    5    * The software in this package is published under the terms of the LGPL license      *
    6    * a copy of which has been included with this distribution in the license.txt file.  *
    7    **************************************************************************************/
    8   package org.codehaus.aspectwerkz.transform.inlining.weaver;
    9
    10  import org.objectweb.asm.ClassAdapter;
    11  import org.objectweb.asm.ClassVisitor;
    12  import org.objectweb.asm.CodeVisitor;
    13  import org.objectweb.asm.Attribute;
    14  import org.objectweb.asm.CodeAdapter;
    15  import org.objectweb.asm.Label;
    16  import org.codehaus.aspectwerkz.transform.inlining.ContextImpl;
    17  import org.codehaus.aspectwerkz.transform.Context;
    18
    19  /***
    20   * @author <a href="mailto:alex AT gnilux DOT com">Alexandre Vasseur</a>
    21   */
    22  public class LabelToLineNumberVisitor extends ClassAdapter {
    23
    24      private ContextImpl m_ctx;
    25
    26      public LabelToLineNumberVisitor(ClassVisitor cv, Context ctx) {
    27          super(cv);
    28          m_ctx = (ContextImpl)ctx;
    29      }
    30
    31      public CodeVisitor visitMethod(int i, String s, String s1, String[] strings, Attribute attribute) {
    32          return new CodeAdapter(super.visitMethod(i, s, s1, strings, attribute)) {
    33              public void visitLineNumber(int i, Label label) {
    34                  super.visitLineNumber(i, label);
    35                  m_ctx.addLineNumberInfo(label, i);
    36              }
    37          };
    38      }
    39  }