Author: markt
Date: Sat Nov  9 21:36:21 2013
New Revision: 1540398

URL: http://svn.apache.org/r1540398
Log:
Remove unused StackMapTableEntry
Swallow associated values as they are never used.
Removed:
    
tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/StackMapTableEntry.java
Modified:
    tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/StackMapTable.java
    tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/Utility.java

Modified: 
tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/StackMapTable.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/StackMapTable.java?rev=1540398&r1=1540397&r2=1540398&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/StackMapTable.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/StackMapTable.java 
Sat Nov  9 21:36:21 2013
@@ -37,8 +37,6 @@ import java.io.IOException;
 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 +50,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/trunk/java/org/apache/tomcat/util/bcel/classfile/Utility.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/Utility.java?rev=1540398&r1=1540397&r2=1540398&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/Utility.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/Utility.java Sat 
Nov  9 21:36:21 2013
@@ -18,6 +18,7 @@
 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;
@@ -130,4 +131,44 @@ public abstract class Utility {
             file.readShort();   // Unused index
         }
     }
+
+    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