You are viewing a plain text version of this content. The canonical link for it is here.
Posted to bcel-dev@jakarta.apache.org by tc...@apache.org on 2008/02/02 20:18:18 UTC
svn commit: r617862 - in /jakarta/bcel/trunk/src: main/java/org/apache/bcel/
main/java/org/apache/bcel/classfile/ test/java/org/apache/bcel/visitors/
Author: tcurdt
Date: Sat Feb 2 11:18:16 2008
New Revision: 617862
URL: http://svn.apache.org/viewvc?rev=617862&view=rev
Log:
applied patch for java6 from mcmartin@gmail.com
http://issues.apache.org/bugzilla/show_bug.cgi?id=41548
Modified:
jakarta/bcel/trunk/src/main/java/org/apache/bcel/Constants.java
jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/Attribute.java
jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/DescendingVisitor.java
jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/EmptyVisitor.java
jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/Visitor.java
jakarta/bcel/trunk/src/test/java/org/apache/bcel/visitors/CounterVisitor.java
Modified: jakarta/bcel/trunk/src/main/java/org/apache/bcel/Constants.java
URL: http://svn.apache.org/viewvc/jakarta/bcel/trunk/src/main/java/org/apache/bcel/Constants.java?rev=617862&r1=617861&r2=617862&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/main/java/org/apache/bcel/Constants.java (original)
+++ jakarta/bcel/trunk/src/main/java/org/apache/bcel/Constants.java Sat Feb 2 11:18:16 2008
@@ -739,8 +739,9 @@
public static final byte ATTR_ANNOTATION_DEFAULT = 16;
public static final byte ATTR_LOCAL_VARIABLE_TYPE_TABLE = 17;
public static final byte ATTR_ENCLOSING_METHOD = 18;
+ public static final byte ATTR_STACK_MAP_TABLE = 19;
- public static final short KNOWN_ATTRIBUTES = 19;
+ public static final short KNOWN_ATTRIBUTES = 20;
// TOFO: FIXXXXX
public static final String[] ATTRIBUTE_NAMES = {
@@ -750,7 +751,7 @@
"PMGClass", "Signature", "StackMap",
"RuntimeVisibleAnnotations", "RuntimeInvisibleAnnotations",
"RuntimeVisibleParameterAnnotations", "RuntimeInvisibleParameterAnnotations",
- "AnnotationDefault", "LocalVariableTypeTable", "EnclosingMethod"
+ "AnnotationDefault", "LocalVariableTypeTable", "EnclosingMethod", "StackMapTable"
};
/** Constants used in the StackMap attribute.
@@ -769,4 +770,25 @@
"Bogus", "Integer", "Float", "Double", "Long",
"Null", "InitObject", "Object", "NewObject"
};
+
+ /** Constants used to identify StackMapEntry types.
+ *
+ * For those types which can specify a range, the
+ * constant names the lowest value.
+ */
+ public static final int SAME_FRAME = 0;
+ public static final int SAME_LOCALS_1_STACK_ITEM_FRAME = 64;
+ public static final int SAME_LOCALS_1_STACK_ITEM_FRAME_EXTENDED = 247;
+ public static final int CHOP_FRAME = 248;
+ public static final int SAME_FRAME_EXTENDED = 251;
+ public static final int APPEND_FRAME = 252;
+ public static final int FULL_FRAME = 255;
+
+ /** Constants that define the maximum value of
+ * those constants which store ranges. */
+
+ public static final int SAME_FRAME_MAX = 63;
+ public static final int SAME_LOCALS_1_STACK_ITEM_FRAME_MAX = 127;
+ public static final int CHOP_FRAME_MAX = 250;
+ public static final int APPEND_FRAME_MAX = 254;
}
Modified: jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/Attribute.java
URL: http://svn.apache.org/viewvc/jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/Attribute.java?rev=617862&r1=617861&r2=617862&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/Attribute.java (original)
+++ jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/Attribute.java Sat Feb 2 11:18:16 2008
@@ -209,6 +209,8 @@
constant_pool);
case Constants.ATTR_ENCLOSING_METHOD:
return new EnclosingMethod(name_index, length, file, constant_pool);
+ case Constants.ATTR_STACK_MAP_TABLE:
+ return new StackMapTable(name_index, length, file, constant_pool);
default: // Never reached
throw new IllegalStateException("Ooops! default case reached.");
}
Modified: jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/DescendingVisitor.java
URL: http://svn.apache.org/viewvc/jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/DescendingVisitor.java?rev=617862&r1=617861&r2=617862&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/DescendingVisitor.java (original)
+++ jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/DescendingVisitor.java Sat Feb 2 11:18:16 2008
@@ -242,6 +242,25 @@
stack.pop();
}
+ public void visitStackMapTable(StackMapTable table)
+ {
+ stack.push(table);
+ table.accept(visitor);
+ StackMapTableEntry[] vars = table.getStackMapTable();
+ for (int i = 0; i < vars.length; i++)
+ {
+ vars[i].accept(this);
+ }
+ stack.pop();
+ }
+
+ public void visitStackMapTableEntry(StackMapTableEntry var)
+ {
+ stack.push(var);
+ var.accept(visitor);
+ stack.pop();
+ }
+
public void visitLocalVariable(LocalVariable var)
{
stack.push(var);
Modified: jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/EmptyVisitor.java
URL: http://svn.apache.org/viewvc/jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/EmptyVisitor.java?rev=617862&r1=617861&r2=617862&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/EmptyVisitor.java (original)
+++ jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/EmptyVisitor.java Sat Feb 2 11:18:16 2008
@@ -173,6 +173,14 @@
{
}
+ public void visitStackMapTable(StackMapTable obj)
+ {
+ }
+
+ public void visitStackMapTableEntry(StackMapTableEntry obj)
+ {
+ }
+
public void visitEnclosingMethod(EnclosingMethod obj)
{
}
Modified: jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/Visitor.java
URL: http://svn.apache.org/viewvc/jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/Visitor.java?rev=617862&r1=617861&r2=617862&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/Visitor.java (original)
+++ jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/Visitor.java Sat Feb 2 11:18:16 2008
@@ -90,6 +90,10 @@
public void visitStackMapEntry(StackMapEntry obj);
+ public void visitStackMapTable(StackMapTable obj);
+
+ public void visitStackMapTableEntry(StackMapTableEntry obj);
+
public void visitAnnotation(Annotations obj);
public void visitParameterAnnotation(ParameterAnnotations obj);
Modified: jakarta/bcel/trunk/src/test/java/org/apache/bcel/visitors/CounterVisitor.java
URL: http://svn.apache.org/viewvc/jakarta/bcel/trunk/src/test/java/org/apache/bcel/visitors/CounterVisitor.java?rev=617862&r1=617861&r2=617862&view=diff
==============================================================================
--- jakarta/bcel/trunk/src/test/java/org/apache/bcel/visitors/CounterVisitor.java (original)
+++ jakarta/bcel/trunk/src/test/java/org/apache/bcel/visitors/CounterVisitor.java Sat Feb 2 11:18:16 2008
@@ -36,6 +36,8 @@
import org.apache.bcel.classfile.SourceFile;
import org.apache.bcel.classfile.StackMap;
import org.apache.bcel.classfile.StackMapEntry;
+import org.apache.bcel.classfile.StackMapTable;
+import org.apache.bcel.classfile.StackMapTableEntry;
import org.apache.bcel.classfile.Synthetic;
import org.apache.bcel.classfile.Unknown;
import org.apache.bcel.classfile.Visitor;
@@ -118,6 +120,11 @@
public int annotationCount = 0;
+ public int stackMapTableCount = 0;
+
+ public int stackMapTableEntryCount = 0;
+
+
public void visitAnnotation(Annotations obj)
{
annotationCount++;
@@ -306,5 +313,13 @@
public void visitUnknown(Unknown obj)
{
unknownCount++;
+ }
+
+ public void visitStackMapTable(StackMapTable obj) {
+ stackMapTableCount++;
+ }
+
+ public void visitStackMapTableEntry(StackMapTableEntry obj) {
+ stackMapTableEntryCount++;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: bcel-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: bcel-dev-help@jakarta.apache.org