Author: markt
Date: Fri Sep 12 12:42:21 2014
New Revision: 1624523

URL: http://svn.apache.org/r1624523
Log:
Port more simplifications from trunk
Removed:
    
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/StackMapEntry.java
    
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/StackMapTableEntry.java
    
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/StackMapType.java
Modified:
    tomcat/tc7.0.x/trunk/   (props changed)
    tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/   (props changed)
    
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/JavaClass.java
    
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/StackMap.java
    
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/StackMapTable.java
    tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/Utility.java

Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
  Merged /tomcat/trunk:r1540396-1540398,1540400-1540402

Propchange: tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/
------------------------------------------------------------------------------
  Merged 
/tomcat/trunk/java/org/apache/tomcat/util/bcel:r1540396-1540398,1540400-1540402

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/JavaClass.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/JavaClass.java?rev=1624523&r1=1624522&r2=1624523&view=diff
==============================================================================
--- 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/JavaClass.java 
(original)
+++ 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/JavaClass.java 
Fri Sep 12 12:42:21 2014
@@ -112,19 +112,12 @@ public class JavaClass extends AccessFla
     }
 
 
-    /**
-     * @return Attributes of the class.
-     */
-    public Attribute[] getAttributes() {
-        return attributes;
-    }
-    
     public AnnotationEntry[] getAnnotationEntries() {
         if (annotationsOutOfDate) { 
             // Find attributes that contain annotation data
-            Attribute[] attrs = getAttributes();
             List<AnnotationEntry> accumulatedAnnotations = new 
ArrayList<AnnotationEntry>();
-            for (Attribute attribute : attrs) {
+            for (int i = 0; i < attributes.length; i++) {
+                Attribute attribute = attributes[i];
                 if (attribute instanceof Annotations) {
                     Annotations runtimeAnnotations = (Annotations)attribute;
                     for(int j = 0; j < 
runtimeAnnotations.getAnnotationEntries().length; j++)

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/StackMap.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/StackMap.java?rev=1624523&r1=1624522&r2=1624523&view=diff
==============================================================================
--- 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/StackMap.java 
(original)
+++ 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/StackMap.java 
Fri Sep 12 12:42:21 2014
@@ -31,27 +31,10 @@ import java.io.IOException;
  *
  * @author  <A HREF="mailto:m.d...@gmx.de";>M. Dahm</A>
  * @see     Code
- * @see     StackMapEntry
- * @see     StackMapType
  */
 public final class StackMap extends Attribute {
 
     private static final long serialVersionUID = 264958819110329590L;
-    private int map_length;
-    private StackMapEntry[] map; // Table of stack map entries
-
-
-    /*
-     * @param name_index Index of name
-     * @param length Content length in bytes
-     * @param map Table of stack map entries
-     * @param constant_pool Array of constants
-     */
-    public StackMap(int name_index, int length, StackMapEntry[] map, 
ConstantPool constant_pool) {
-        super(name_index, length, constant_pool);
-        setStackMap(map);
-    }
-
 
     /**
      * Construct object from file stream.
@@ -63,20 +46,10 @@ public final class StackMap extends Attr
      */
     StackMap(int name_index, int length, DataInputStream file, ConstantPool 
constant_pool)
             throws IOException {
-        this(name_index, length, (StackMapEntry[]) null, constant_pool);
-        map_length = file.readUnsignedShort();
-        map = new StackMapEntry[map_length];
+        super(name_index, length, constant_pool);
+        int map_length = file.readUnsignedShort();
         for (int i = 0; i < map_length; i++) {
-            map[i] = new StackMapEntry(file);
+            Utility.swallowStackMapEntry(file);
         }
     }
-
-
-    /**
-     * @param map Array of stack map entries
-     */
-    public final void setStackMap( StackMapEntry[] map ) {
-        this.map = map;
-        map_length = (map == null) ? 0 : map.length;
-    }
 }

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/StackMapTable.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/StackMapTable.java?rev=1624523&r1=1624522&r2=1624523&view=diff
==============================================================================
--- 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/StackMapTable.java
 (original)
+++ 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/StackMapTable.java
 Fri Sep 12 12:42:21 2014
@@ -31,14 +31,10 @@ import java.io.IOException;
  *
  * @author  <A HREF="mailto:m.d...@gmx.de";>M. Dahm</A>
  * @see     Code
- * @see     StackMapEntry
- * @see     StackMapType
  */
 public final class StackMapTable extends Attribute {
 
     private static final long serialVersionUID = -2931695092763099621L;
-    private final int map_length;
-    private final StackMapTableEntry[] map; // Table of stack map entries
 
 
     /**
@@ -52,10 +48,9 @@ public final class StackMapTable extends
     StackMapTable(int name_index, int length, DataInputStream file, 
ConstantPool constant_pool)
             throws IOException {
         super(name_index, length, constant_pool);
-        map_length = file.readUnsignedShort();
-        map = new StackMapTableEntry[map_length];
+        int map_length = file.readUnsignedShort();
         for (int i = 0; i < map_length; i++) {
-            map[i] = new StackMapTableEntry(file);
+            Utility.swallowStackMapTableEntry(file);
         }
     }
 }

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/Utility.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/Utility.java?rev=1624523&r1=1624522&r2=1624523&view=diff
==============================================================================
--- 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/Utility.java 
(original)
+++ 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/Utility.java 
Fri Sep 12 12:42:21 2014
@@ -18,8 +18,11 @@
 package org.apache.tomcat.util.bcel.classfile;
 
 import java.io.DataInput;
+import java.io.DataInputStream;
 import java.io.IOException;
 
+import org.apache.tomcat.util.bcel.Constants;
+
 
 /**
  * Utility functions that do not really belong to any class in particular.
@@ -109,16 +112,14 @@ public abstract class Utility {
         }
     }
 
-    protected static void swallowCodeException(DataInput file)
-            throws IOException {
+    protected static void swallowCodeException(DataInput file) throws 
IOException {
         file.readUnsignedShort();   // Unused start_pc
         file.readUnsignedShort();   // Unused end_pc
         file.readUnsignedShort();   // Unused handler_pc
         file.readUnsignedShort();   // Unused catch_type
     }
 
-    protected static void swallowInnerClass(DataInput file)
-            throws IOException {
+    protected static void swallowInnerClass(DataInput file) throws IOException 
{
         file.readUnsignedShort();   // Unused inner_class_index
         file.readUnsignedShort();   // Unused outer_class_index
         file.readUnsignedShort();   // Unused inner_name_index
@@ -130,12 +131,74 @@ public abstract class Utility {
         file.readUnsignedShort();   // Unused line_number
     }
 
-    protected static void swallowLocalVariable(DataInput file)
-            throws IOException {
+    protected static void swallowLocalVariable(DataInput file) throws 
IOException {
         file.readUnsignedShort();   // Unused start_pc
         file.readUnsignedShort();   // Unused length
         file.readUnsignedShort();   // Unused name_index
         file.readUnsignedShort();   // Unused signature_index
         file.readUnsignedShort();   // Unused index
     }
+
+    protected static void swallowStackMapType(DataInput file) throws 
IOException {
+        byte type = file.readByte();
+        if ((type < Constants.ITEM_Bogus) || (type > 
Constants.ITEM_NewObject)) {
+            throw new RuntimeException("Illegal type for StackMapType: " + 
type);
+        }
+        // Check to see if type has an index
+        if ((type == Constants.ITEM_Object) || (type == 
Constants.ITEM_NewObject)) {
+            file.readShort();   // Unused index
+        }
+    }
+
+    protected static void swallowStackMapEntry(DataInput file) throws 
IOException {
+        file.readShort();   // Unused byte_code_offset
+        int number_of_locals = file.readShort();
+        for (int i = 0; i < number_of_locals; i++) {
+            Utility.swallowStackMapType(file);
+        }
+        int number_of_stack_items = file.readShort();
+        for (int i = 0; i < number_of_stack_items; i++) {
+            Utility.swallowStackMapType(file);
+        }
+    }
+
+    protected static void swallowStackMapTableEntry(DataInputStream file) 
throws IOException {
+        int frame_type = file.read();
+
+        if (frame_type >= Constants.SAME_FRAME && frame_type <= 
Constants.SAME_FRAME_MAX) {
+            // NO-OP
+        } else if (frame_type >= Constants.SAME_LOCALS_1_STACK_ITEM_FRAME &&
+                frame_type <= Constants.SAME_LOCALS_1_STACK_ITEM_FRAME_MAX) {
+            Utility.swallowStackMapType(file);  // Unused single stack item
+        } else if (frame_type == 
Constants.SAME_LOCALS_1_STACK_ITEM_FRAME_EXTENDED) {
+            file.readShort(); // Unused byte_code_offset_delta
+            Utility.swallowStackMapType(file); // Unused single stack item
+        } else if (frame_type >= Constants.CHOP_FRAME &&
+                frame_type <= Constants.CHOP_FRAME_MAX) {
+            file.readShort(); // Unused byte_code_offset_delta
+        } else if (frame_type == Constants.SAME_FRAME_EXTENDED) {
+            file.readShort(); // Unused byte_code_offset_delta
+        } else if (frame_type >= Constants.APPEND_FRAME &&
+                frame_type <= Constants.APPEND_FRAME_MAX) {
+            file.readShort(); // Unused byte_code_offset_delta
+            int number_of_locals = frame_type - 251;
+            for (int i = 0; i < number_of_locals; i++) {
+                Utility.swallowStackMapType(file);
+            }
+        } else if (frame_type == Constants.FULL_FRAME) {
+            file.readShort(); // Unused byte_code_offset_delta
+            int number_of_locals = file.readShort();
+            for (int i = 0; i < number_of_locals; i++) {
+                Utility.swallowStackMapType(file);
+            }
+            int number_of_stack_items = file.readShort();
+            for (int i = 0; i < number_of_stack_items; i++) {
+                Utility.swallowStackMapType(file);
+            }
+        } else {
+            /* Can't happen */
+            throw new ClassFormatException (
+                    "Invalid frame type found while parsing stack map table: " 
+ frame_type);
+        }
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to