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: [email protected]
For additional commands, e-mail: [email protected]