diff options
author | Andy Clement <aclement@pivotal.io> | 2016-06-17 10:40:29 -0700 |
---|---|---|
committer | Andy Clement <aclement@pivotal.io> | 2016-06-17 10:40:29 -0700 |
commit | 34f33f6948799dd57aeef1d8422f796fbd6d416d (patch) | |
tree | 805c1d6cd7bd2c6868e519f6c34a8f3fcb7f634c /bcel-builder/verifier-src | |
parent | f8b86ff2c03a77e47e87573b59bc43c57cfdee38 (diff) | |
download | aspectj-34f33f6948799dd57aeef1d8422f796fbd6d416d.tar.gz aspectj-34f33f6948799dd57aeef1d8422f796fbd6d416d.zip |
Upgrading to latest 1.9 compiler
Diffstat (limited to 'bcel-builder/verifier-src')
-rw-r--r-- | bcel-builder/verifier-src/org/aspectj/apache/bcel/verifier/DescendingVisitor.java | 747 | ||||
-rw-r--r-- | bcel-builder/verifier-src/org/aspectj/apache/bcel/verifier/EmptyClassVisitor.java | 2 |
2 files changed, 382 insertions, 367 deletions
diff --git a/bcel-builder/verifier-src/org/aspectj/apache/bcel/verifier/DescendingVisitor.java b/bcel-builder/verifier-src/org/aspectj/apache/bcel/verifier/DescendingVisitor.java index 251b94663..be8a558f3 100644 --- a/bcel-builder/verifier-src/org/aspectj/apache/bcel/verifier/DescendingVisitor.java +++ b/bcel-builder/verifier-src/org/aspectj/apache/bcel/verifier/DescendingVisitor.java @@ -92,6 +92,7 @@ import org.aspectj.apache.bcel.classfile.LocalVariableTable; import org.aspectj.apache.bcel.classfile.LocalVariableTypeTable; import org.aspectj.apache.bcel.classfile.Method; import org.aspectj.apache.bcel.classfile.MethodParameters; +import org.aspectj.apache.bcel.classfile.Module; import org.aspectj.apache.bcel.classfile.Signature; import org.aspectj.apache.bcel.classfile.SourceFile; import org.aspectj.apache.bcel.classfile.StackMap; @@ -107,375 +108,387 @@ import org.aspectj.apache.bcel.classfile.annotation.RuntimeVisParamAnnos; import org.aspectj.apache.bcel.classfile.annotation.RuntimeVisTypeAnnos; /** - * Traverses a JavaClass with another Visitor object 'piggy-backed' - * that is applied to all components of a JavaClass object. I.e. this - * class supplies the traversal strategy, other classes can make use - * of it. + * Traverses a JavaClass with another Visitor object 'piggy-backed' that is + * applied to all components of a JavaClass object. I.e. this class supplies the + * traversal strategy, other classes can make use of it. * * @version $Id: DescendingVisitor.java,v 1.4 2009/09/15 19:40:22 aclement Exp $ - * @author <A HREF="mailto:markus.dahm@berlin.de">M. Dahm</A> + * @author <A HREF="mailto:markus.dahm@berlin.de">M. Dahm</A> */ public class DescendingVisitor implements ClassVisitor { - private JavaClass clazz; - private ClassVisitor visitor; - private Stack<Object> stack = new Stack<Object>(); - - /** @return container of current entitity, i.e., predecessor during traversal - */ - public Object predecessor() { - return predecessor(0); - } - - /** - * @param level nesting level, i.e., 0 returns the direct predecessor - * @return container of current entitity, i.e., predecessor during traversal - */ - public Object predecessor(int level) { - int size = stack.size(); - - if((size < 2) || (level < 0)) - return null; - else - return stack.elementAt(size - (level + 2)); // size - 1 == current - } - - /** @return current object - */ - public Object current() { - return stack.peek(); - } - - /** - * @param clazz Class to traverse - * @param visitor visitor object to apply to all components - */ - public DescendingVisitor(JavaClass clazz, ClassVisitor visitor) { - this.clazz = clazz; - this.visitor = visitor; - } - - /** - * Start traversal. - */ - public void visit() { clazz.accept(this); } - - public void visitJavaClass(JavaClass clazz) { - stack.push(clazz); - clazz.accept(visitor); - - Field[] fields = clazz.getFields(); - for(int i=0; i < fields.length; i++) - fields[i].accept(this); - - Method[] methods = clazz.getMethods(); - for(int i=0; i < methods.length; i++) - methods[i].accept(this); - - AttributeUtils.accept(clazz.getAttributes(),visitor); -// clazz.getAttributes().accept(this); - clazz.getConstantPool().accept(this); - stack.pop(); - } - - public void visitField(Field field) { - stack.push(field); - field.accept(visitor); - AttributeUtils.accept(field.getAttributes(),visitor); -// field.getAttributes().accept(this); - stack.pop(); - } - - public void visitConstantValue(ConstantValue cv) { - stack.push(cv); - cv.accept(visitor); - stack.pop(); - } - - public void visitMethod(Method method) { - stack.push(method); - method.accept(visitor); - AttributeUtils.accept(method.getAttributes(),visitor); - stack.pop(); - } - - public void visitExceptionTable(ExceptionTable table) { - stack.push(table); - table.accept(visitor); - stack.pop(); - } - - public void visitCode(Code code) { - stack.push(code); - code.accept(visitor); - - CodeException[] table = code.getExceptionTable(); - for(int i=0; i < table.length; i++) - table[i].accept(this); - - Attribute[] attributes = code.getAttributes(); - for(int i=0; i < attributes.length; i++) - attributes[i].accept(this); - stack.pop(); - } - - public void visitCodeException(CodeException ce) { - stack.push(ce); - ce.accept(visitor); - stack.pop(); - } - - public void visitLineNumberTable(LineNumberTable table) { - stack.push(table); - table.accept(visitor); - - LineNumber[] numbers = table.getLineNumberTable(); - for(int i=0; i < numbers.length; i++) - numbers[i].accept(this); - stack.pop(); - } - - public void visitLineNumber(LineNumber number) { - stack.push(number); - number.accept(visitor); - stack.pop(); - } - - public void visitLocalVariableTable(LocalVariableTable table) { - stack.push(table); - table.accept(visitor); - - LocalVariable[] vars = table.getLocalVariableTable(); - for(int i=0; i < vars.length; i++) - vars[i].accept(this); - stack.pop(); - } - - public void visitStackMap(StackMap table) { - stack.push(table); - table.accept(visitor); - - StackMapEntry[] vars = table.getStackMap(); - - for(int i=0; i < vars.length; i++) - vars[i].accept(this); - stack.pop(); - } - - public void visitStackMapEntry(StackMapEntry var) { - stack.push(var); - var.accept(visitor); - stack.pop(); - } - - public void visitLocalVariable(LocalVariable var) { - stack.push(var); - var.accept(visitor); - stack.pop(); - } - - public void visitConstantPool(ConstantPool cp) { - stack.push(cp); - cp.accept(visitor); - - Constant[] constants = cp.getConstantPool(); - for(int i=1; i < constants.length; i++) { - if(constants[i] != null) - constants[i].accept(this); - } - - stack.pop(); - } - - public void visitConstantClass(ConstantClass constant) { - stack.push(constant); - constant.accept(visitor); - stack.pop(); - } - - public void visitConstantDouble(ConstantDouble constant) { - stack.push(constant); - constant.accept(visitor); - stack.pop(); - } - - public void visitConstantFieldref(ConstantFieldref constant) { - stack.push(constant); - constant.accept(visitor); - stack.pop(); - } - - public void visitConstantFloat(ConstantFloat constant) { - stack.push(constant); - constant.accept(visitor); - stack.pop(); - } - - public void visitConstantInteger(ConstantInteger constant) { - stack.push(constant); - constant.accept(visitor); - stack.pop(); - } - - public void visitConstantInterfaceMethodref(ConstantInterfaceMethodref constant) { - stack.push(constant); - constant.accept(visitor); - stack.pop(); - } - - public void visitConstantLong(ConstantLong constant) { - stack.push(constant); - constant.accept(visitor); - stack.pop(); - } - - public void visitConstantMethodref(ConstantMethodref constant) { - stack.push(constant); - constant.accept(visitor); - stack.pop(); - } - - public void visitConstantMethodHandle(ConstantMethodHandle constant) { - throw new IllegalStateException("nyi"); - } - - public void visitConstantMethodType(ConstantMethodType obj) { - throw new IllegalStateException("nyi"); - } - - public void visitConstantInvokeDynamic(ConstantInvokeDynamic obj) { - throw new IllegalStateException("nyi"); - } - - public void visitBootstrapMethods(BootstrapMethods obj) { - throw new IllegalStateException("nyi"); - } - - public void visitConstantNameAndType(ConstantNameAndType constant) { - stack.push(constant); - constant.accept(visitor); - stack.pop(); - } - - public void visitConstantString(ConstantString constant) { - stack.push(constant); - constant.accept(visitor); - stack.pop(); - } - - public void visitConstantUtf8(ConstantUtf8 constant) { - stack.push(constant); - constant.accept(visitor); - stack.pop(); - } - - public void visitInnerClasses(InnerClasses ic) { - stack.push(ic); - ic.accept(visitor); - - InnerClass[] ics = ic.getInnerClasses(); - for(int i=0; i < ics.length; i++) - ics[i].accept(this); - stack.pop(); - } - - public void visitInnerClass(InnerClass inner) { - stack.push(inner); - inner.accept(visitor); - stack.pop(); - } - - public void visitDeprecated(Deprecated attribute) { - stack.push(attribute); - attribute.accept(visitor); - stack.pop(); - } - - public void visitSignature(Signature attribute) { - stack.push(attribute); - attribute.accept(visitor); - stack.pop(); - } - - // J5SUPPORT: - public void visitEnclosingMethod(EnclosingMethod attribute) { - stack.push(attribute); - attribute.accept(visitor); - stack.pop(); - } - - public void visitRuntimeVisibleAnnotations(RuntimeVisAnnos attribute) { - stack.push(attribute); - attribute.accept(visitor); - stack.pop(); - } - - public void visitRuntimeInvisibleAnnotations(RuntimeInvisAnnos attribute) { - stack.push(attribute); - attribute.accept(visitor); - stack.pop(); - } - - public void visitRuntimeVisibleParameterAnnotations(RuntimeVisParamAnnos attribute) { - stack.push(attribute); - attribute.accept(visitor); - stack.pop(); - } - - public void visitRuntimeInvisibleParameterAnnotations(RuntimeInvisParamAnnos attribute) { - stack.push(attribute); - attribute.accept(visitor); - stack.pop(); - } - - public void visitRuntimeVisibleTypeAnnotations(RuntimeVisTypeAnnos attribute) { - stack.push(attribute); - attribute.accept(visitor); - stack.pop(); - } - - public void visitMethodParameters(MethodParameters attribute) { - stack.push(attribute); - attribute.accept(visitor); - stack.pop(); - } - - public void visitRuntimeInvisibleTypeAnnotations(RuntimeInvisTypeAnnos attribute) { - stack.push(attribute); - attribute.accept(visitor); - stack.pop(); - } - - public void visitAnnotationDefault(AnnotationDefault attribute) { - stack.push(attribute); - attribute.accept(visitor); - stack.pop(); - } - - public void visitLocalVariableTypeTable(LocalVariableTypeTable table) { - stack.push(table); - table.accept(visitor); - - LocalVariable[] vars = table.getLocalVariableTypeTable(); - for(int i=0; i < vars.length; i++) - vars[i].accept(this); - stack.pop(); - } - - public void visitSourceFile(SourceFile attribute) { - stack.push(attribute); - attribute.accept(visitor); - stack.pop(); - } - - public void visitSynthetic(Synthetic attribute) { - stack.push(attribute); - attribute.accept(visitor); - stack.pop(); - } - - public void visitUnknown(Unknown attribute) { - stack.push(attribute); - attribute.accept(visitor); - stack.pop(); - } + private JavaClass clazz; + private ClassVisitor visitor; + private Stack<Object> stack = new Stack<Object>(); + + /** + * @return container of current entitity, i.e., predecessor during traversal + */ + public Object predecessor() { + return predecessor(0); + } + + /** + * @param level + * nesting level, i.e., 0 returns the direct predecessor + * @return container of current entitity, i.e., predecessor during traversal + */ + public Object predecessor(int level) { + int size = stack.size(); + + if ((size < 2) || (level < 0)) + return null; + else + return stack.elementAt(size - (level + 2)); // size - 1 == current + } + + /** + * @return current object + */ + public Object current() { + return stack.peek(); + } + + /** + * @param clazz + * Class to traverse + * @param visitor + * visitor object to apply to all components + */ + public DescendingVisitor(JavaClass clazz, ClassVisitor visitor) { + this.clazz = clazz; + this.visitor = visitor; + } + + /** + * Start traversal. + */ + public void visit() { + clazz.accept(this); + } + + public void visitJavaClass(JavaClass clazz) { + stack.push(clazz); + clazz.accept(visitor); + + Field[] fields = clazz.getFields(); + for (int i = 0; i < fields.length; i++) + fields[i].accept(this); + + Method[] methods = clazz.getMethods(); + for (int i = 0; i < methods.length; i++) + methods[i].accept(this); + + AttributeUtils.accept(clazz.getAttributes(), visitor); + // clazz.getAttributes().accept(this); + clazz.getConstantPool().accept(this); + stack.pop(); + } + + public void visitField(Field field) { + stack.push(field); + field.accept(visitor); + AttributeUtils.accept(field.getAttributes(), visitor); + // field.getAttributes().accept(this); + stack.pop(); + } + + public void visitConstantValue(ConstantValue cv) { + stack.push(cv); + cv.accept(visitor); + stack.pop(); + } + + public void visitMethod(Method method) { + stack.push(method); + method.accept(visitor); + AttributeUtils.accept(method.getAttributes(), visitor); + stack.pop(); + } + + public void visitExceptionTable(ExceptionTable table) { + stack.push(table); + table.accept(visitor); + stack.pop(); + } + + public void visitCode(Code code) { + stack.push(code); + code.accept(visitor); + + CodeException[] table = code.getExceptionTable(); + for (int i = 0; i < table.length; i++) + table[i].accept(this); + + Attribute[] attributes = code.getAttributes(); + for (int i = 0; i < attributes.length; i++) + attributes[i].accept(this); + stack.pop(); + } + + public void visitCodeException(CodeException ce) { + stack.push(ce); + ce.accept(visitor); + stack.pop(); + } + + public void visitLineNumberTable(LineNumberTable table) { + stack.push(table); + table.accept(visitor); + + LineNumber[] numbers = table.getLineNumberTable(); + for (int i = 0; i < numbers.length; i++) + numbers[i].accept(this); + stack.pop(); + } + + public void visitLineNumber(LineNumber number) { + stack.push(number); + number.accept(visitor); + stack.pop(); + } + + public void visitLocalVariableTable(LocalVariableTable table) { + stack.push(table); + table.accept(visitor); + + LocalVariable[] vars = table.getLocalVariableTable(); + for (int i = 0; i < vars.length; i++) + vars[i].accept(this); + stack.pop(); + } + + public void visitStackMap(StackMap table) { + stack.push(table); + table.accept(visitor); + + StackMapEntry[] vars = table.getStackMap(); + + for (int i = 0; i < vars.length; i++) + vars[i].accept(this); + stack.pop(); + } + + public void visitStackMapEntry(StackMapEntry var) { + stack.push(var); + var.accept(visitor); + stack.pop(); + } + + public void visitLocalVariable(LocalVariable var) { + stack.push(var); + var.accept(visitor); + stack.pop(); + } + + public void visitConstantPool(ConstantPool cp) { + stack.push(cp); + cp.accept(visitor); + + Constant[] constants = cp.getConstantPool(); + for (int i = 1; i < constants.length; i++) { + if (constants[i] != null) + constants[i].accept(this); + } + + stack.pop(); + } + + public void visitConstantClass(ConstantClass constant) { + stack.push(constant); + constant.accept(visitor); + stack.pop(); + } + + public void visitConstantDouble(ConstantDouble constant) { + stack.push(constant); + constant.accept(visitor); + stack.pop(); + } + + public void visitConstantFieldref(ConstantFieldref constant) { + stack.push(constant); + constant.accept(visitor); + stack.pop(); + } + + public void visitConstantFloat(ConstantFloat constant) { + stack.push(constant); + constant.accept(visitor); + stack.pop(); + } + + public void visitConstantInteger(ConstantInteger constant) { + stack.push(constant); + constant.accept(visitor); + stack.pop(); + } + + public void visitConstantInterfaceMethodref(ConstantInterfaceMethodref constant) { + stack.push(constant); + constant.accept(visitor); + stack.pop(); + } + + public void visitConstantLong(ConstantLong constant) { + stack.push(constant); + constant.accept(visitor); + stack.pop(); + } + + public void visitConstantMethodref(ConstantMethodref constant) { + stack.push(constant); + constant.accept(visitor); + stack.pop(); + } + + public void visitConstantMethodHandle(ConstantMethodHandle constant) { + throw new IllegalStateException("nyi"); + } + + public void visitConstantMethodType(ConstantMethodType obj) { + throw new IllegalStateException("nyi"); + } + + public void visitConstantInvokeDynamic(ConstantInvokeDynamic obj) { + throw new IllegalStateException("nyi"); + } + + public void visitBootstrapMethods(BootstrapMethods obj) { + throw new IllegalStateException("nyi"); + } + + public void visitConstantNameAndType(ConstantNameAndType constant) { + stack.push(constant); + constant.accept(visitor); + stack.pop(); + } + + public void visitConstantString(ConstantString constant) { + stack.push(constant); + constant.accept(visitor); + stack.pop(); + } + + public void visitConstantUtf8(ConstantUtf8 constant) { + stack.push(constant); + constant.accept(visitor); + stack.pop(); + } + + public void visitInnerClasses(InnerClasses ic) { + stack.push(ic); + ic.accept(visitor); + + InnerClass[] ics = ic.getInnerClasses(); + for (int i = 0; i < ics.length; i++) + ics[i].accept(this); + stack.pop(); + } + + public void visitInnerClass(InnerClass inner) { + stack.push(inner); + inner.accept(visitor); + stack.pop(); + } + + public void visitDeprecated(Deprecated attribute) { + stack.push(attribute); + attribute.accept(visitor); + stack.pop(); + } + + public void visitSignature(Signature attribute) { + stack.push(attribute); + attribute.accept(visitor); + stack.pop(); + } + + // J5SUPPORT: + public void visitEnclosingMethod(EnclosingMethod attribute) { + stack.push(attribute); + attribute.accept(visitor); + stack.pop(); + } + + public void visitRuntimeVisibleAnnotations(RuntimeVisAnnos attribute) { + stack.push(attribute); + attribute.accept(visitor); + stack.pop(); + } + + public void visitRuntimeInvisibleAnnotations(RuntimeInvisAnnos attribute) { + stack.push(attribute); + attribute.accept(visitor); + stack.pop(); + } + + public void visitRuntimeVisibleParameterAnnotations(RuntimeVisParamAnnos attribute) { + stack.push(attribute); + attribute.accept(visitor); + stack.pop(); + } + + public void visitRuntimeInvisibleParameterAnnotations(RuntimeInvisParamAnnos attribute) { + stack.push(attribute); + attribute.accept(visitor); + stack.pop(); + } + + public void visitRuntimeVisibleTypeAnnotations(RuntimeVisTypeAnnos attribute) { + stack.push(attribute); + attribute.accept(visitor); + stack.pop(); + } + + public void visitMethodParameters(MethodParameters attribute) { + stack.push(attribute); + attribute.accept(visitor); + stack.pop(); + } + + public void visitRuntimeInvisibleTypeAnnotations(RuntimeInvisTypeAnnos attribute) { + stack.push(attribute); + attribute.accept(visitor); + stack.pop(); + } + + public void visitAnnotationDefault(AnnotationDefault attribute) { + stack.push(attribute); + attribute.accept(visitor); + stack.pop(); + } + + public void visitLocalVariableTypeTable(LocalVariableTypeTable table) { + stack.push(table); + table.accept(visitor); + + LocalVariable[] vars = table.getLocalVariableTypeTable(); + for (int i = 0; i < vars.length; i++) + vars[i].accept(this); + stack.pop(); + } + + public void visitSourceFile(SourceFile attribute) { + stack.push(attribute); + attribute.accept(visitor); + stack.pop(); + } + + public void visitSynthetic(Synthetic attribute) { + stack.push(attribute); + attribute.accept(visitor); + stack.pop(); + } + + public void visitUnknown(Unknown attribute) { + stack.push(attribute); + attribute.accept(visitor); + stack.pop(); + } + + public void visitModule(Module attribute) { + stack.push(attribute); + attribute.accept(visitor); + stack.pop(); + } } diff --git a/bcel-builder/verifier-src/org/aspectj/apache/bcel/verifier/EmptyClassVisitor.java b/bcel-builder/verifier-src/org/aspectj/apache/bcel/verifier/EmptyClassVisitor.java index f1b61c1ac..117d8d320 100644 --- a/bcel-builder/verifier-src/org/aspectj/apache/bcel/verifier/EmptyClassVisitor.java +++ b/bcel-builder/verifier-src/org/aspectj/apache/bcel/verifier/EmptyClassVisitor.java @@ -87,6 +87,7 @@ import org.aspectj.apache.bcel.classfile.LocalVariableTable; import org.aspectj.apache.bcel.classfile.LocalVariableTypeTable; import org.aspectj.apache.bcel.classfile.Method; import org.aspectj.apache.bcel.classfile.MethodParameters; +import org.aspectj.apache.bcel.classfile.Module; import org.aspectj.apache.bcel.classfile.Signature; import org.aspectj.apache.bcel.classfile.SourceFile; import org.aspectj.apache.bcel.classfile.StackMap; @@ -150,6 +151,7 @@ public class EmptyClassVisitor implements ClassVisitor { public void visitUnknown(Unknown obj) {} public void visitStackMap(StackMap obj) {} public void visitStackMapEntry(StackMapEntry obj) {} + public void visitModule(Module obj) {} // J5SUPPORT: public void visitEnclosingMethod(EnclosingMethod obj) {} |