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